【科学】かんたん量子コンピューターの話 基礎の基礎
話題沸騰中の量子コンピューター。
その能力は強大でパスワード解析などもあっという間。実用化されると大半の電子資産がなくなってしまう・・・といわれています。
そんな量子コンピューターですが、
実はあなたも使うことができます。
↑
このサイトです。
量子コンピュータを使うには大型の冷却装置が必要だといわれてましたが、なるほど、こうしてクラウド技術と組み合わせると一般人でも活用できるんですね。
ところで、量子計算の仕組みわかります?
量子コンピューターって、いまいち、よくわからないという人も多いのではないかと思います。
いろんな解説によると・・・
数字を重ね合わせの状態で計算する装置だ
とか
量子が0と1の中間の値をとりながら計算する
とか
まぁ何か "あいまいな感じ" がします。
しかし、計算があいまいでいいのでしょうか。
この記事では、そんな量子コンピューターの仕組みについて、わかりやすく解説してみたいと思います。
ためしに
量子コンピューターにかんたんな「たし算」をやらせてみましょう。
何が起こるのでしょうか?
まずは、0と1で可能な一桁のたし算を考えてみます。
次の4通りになると思います。
0+0
1+0
0+1
1+1
通常の(いままでの)コンピュータは、これを一つ一つ "すばやく計算" しているのでした。
しかし、量子コンピューターは、この4つを "同時に計算" できる!
と、豪語しているわけです。
いったい、どういうことなのでしょう?
ふつうのコンピューターでは、プログラム的に、
[ ] + [ ]
という計算式を用意し、
[ ] の中に、0または1の数字を一回一回入力し、一回一回計算する
という感じです。
[ ] の中に入力できる数字は、1回の計算につき1コ、必ず0か1のどちらかです。
これをすばやく計算すれば、同時計算のようにみえるかもしれません。
しかし同時計算のようにみえても、実のところ、一つ一つ、個々別々にすばやく計算しているだけです。
しかし、量子コンピューターは
[ ] の中に0と1の両方を同時に入力できるのです。
というか、それが特徴です。
すると
[ ] + [ ]
という足し算では、 [ ] の中にはいる数字のオプションとして、0と1の両方がありえます。
その様子を書きあらわしてみると、
[0または1] + [0または1]
みたいな感じでしょうか・・・
こうやって、0と1をまとめて入力すると、
あとは何もしなくても、量子コンピューターが勝手に
0+0 = 0
1+0 = 1
0+1 = 1
1+1 = 2
という4つの計算を"同時"にやってくれる・・・
っていうわけです。
え?普通のコンピューターとあまり変わらないじゃない?
という気がします。
いえ・・・
実は、量子コンピューターは、もっともっと、想像を絶することをしています。
[ ] の中には、0、1の両方の数字を含む、0~1の間に存在する無数の~小数を含むすべての数字が入力されるのです。
その様子は
[0~1のあらゆる数字] + [0~1のあらゆる数字]
みたいな感じです。
[ ] の中に0とか1とかの信号を入力するのではなく、"量子"を1個入れ込むのでこうなります。
量子っていうのは、0の状態(上向きスピン)と1の状態(下向きスピン)があり、その中間の度の状態をもとりうるので、 [ ] の中に量子を1個いれると、[ ] の中に0~1のあらゆる数字が同時にはいった感じになります。
量子の状態というのは、0~1の間の中間の状態、つまり小数、もありえます。
逆にいうと、入力された信号が、0なのか1なのか何なのかぜんぜんわからないってことでもあります。
[ ] の中に入っている量子の状態(数字)は、めちゃくちゃランダムってことです。
しかも
その"すべて"が"重なった状態"で入力されている
っていうイメージです。
0か1だけでなく、その間に存在しうる、小数を含めたあらゆる数字が登場してくるわけで、
[ ] と [ ] の組み合わせは、計算上、無限大になります。
こうなるともう、やってる計算は、最初に与えられた4つの足し算からは、まったく遠ざかっている感じがします。
事実、目的の計算とは全然関係ない計算を大量におこなっているのです。
どういうことかというと、まるで
0.8 + 0.0001 = 0.8001
とか、
0.1 + 0.87 = 0.97
とか、
0.1 + 0.4 = 0.5
とか、
0.345 + 0.987 = 1.332
とか、
1 + 0.2 = 1.2
とか・・・
そんな膨大な計算を「同時に」している感じです。
4つの計算結果を知りたいだけなのに、まるで、無駄に思えます。
その計算の中には、ちょうど、
0+0 = 0
1+0 = 1
0+1 = 1
1+1 = 2
という、目的である4つの計算も含まれているかもしれません。
それでいいのでしょうか?
無駄な計算が多すぎて、なんか納得がいかない!
という気がしてきます。
しかし、それでいいんです。
とりあえず、そんな無駄にみえる計算を、たとえば10000通りやらせるわけです。
結果をグラフ(z = x + y であらわされる斜面)にあらわすと、下図のピンク色のエリアになります。
ピンクのエリアに、10000個の計算結果が一つ一つが小さなドットとして表示されている・・・とイメージしてください。
ピンクのエリアにあるひとつの点がひとつのランダムな計算の結果に対応しています。
たとえば、
0.95 + 0.43589 = 1.38589
という計算結果が、
座標(0.95, 0.43589, 1.38589)
という点に相当し、ピンクのエリアの中にあります。
もうすこし正面からみると、こんな感じ。
10000通りの"すべて"の計算結果が、このピンクの平面上に分布しているわけです。
同時計算ですから、このように点ではなく面として表示されます。
まったく何をしているのやら・・・っていう感じです。
目的の
0+0 = 0
1+0 = 1
0+1 = 1
1+1 = 2
という、目的の4つの計算結果は、このピンクの菱形の角になっているはずです。
しかし、たかが10000種類の計算で、この角の4点に相当する計算が100%確実に含まれているという保証はありません。
1+1
と
0.9999999999999999999 + 0.999999999
は、グラフ上、肉眼では区別できないかもしれませんが、違いますから。
とてもじゃないですけれども、これでもって、目的の4つの足し算を計算した
とは思えませんよね。
それどころか、本来の計算の目的から遠ざかっているようにもみえます。
ところが、量子コンピューターってのは、ここからが真骨頂です。
キーワードは"収束"です。
量子っていうのは、波の性質と粒子の性質の両方の性質を持っていますので、波の状態から、粒子の状態に収束させることができます。
波として計算させておいて、出力するときに、0か1という粒子状態に収束させるのです。
すると・・・
量子が波の状態のときにはピンクのエリアに均等に分布していた計算結果が、"粒子の状態"になった瞬間、
下図のように4つの点(計算結果)にグッと収束します。
ピンクのエリアにあった10000個のドットのうち、およそ2500個ずつの割合で、
(0, 0, 0)
(1, 0, 1)
(0, 1, 1)
(1, 1, 2)
の4つの点に凝集します。
これが、
0 + 0 = 0
1 + 0 = 1
0 + 1 = 1
1 + 1 = 2
という計算を同時にする、ということなんです。
(よ~くみると、[ ] + [ ] = [ ] という計算式の項が、座標の([ ], [ ], [ ])の成分に対応していることがわかりますか?)
これが、量子コンピューターがやっている"同時"計算のイメージです。
"同時"の意味・・・
わかりましたでしょうか?
すべての数字は0と1だけであらわせることを考えると、いくら桁が大きくなっても
たとえば、[ ][ ][ ][ ][ ] と [ ] を5つにすれば、0から31(2進数で11111)までの数字の同時計算が可能になります。
実際には、ドットが少ないうちはうまく均等に分布しなかったり、最後にうまく収束しなかったり・・・
とか、ときどきエラーが生じるそうです。
しかし、量子コンピューターそのものはすでに完成し、実用化されているのです。
夢物語ではありません。
今を生きるあなたには必要な知識になります。
今後、さらにエラーが克服され精度が高まり、安価になれば、クラウド技術と組み合わせることによって、将来的には誰でもあたりまえのように量子コンピューターを利用できる時代になるでしょう。
以上。
うまく説明できたかどうか、甚だ不安ですが、
量子コンピューターが得意とする"同時"計算のイメージは、
やらなくてもいい計算を含めて、総当たり的に同時に全~部やって、最後に一気に"収束"させる・・・
という感じです。
量子コンピューターって、最先端の理論で、めちゃくちゃスマートな計算をしているのかと思ったら、案外、泥臭いというか、めんどくさいことやってるんだなぁ・・・
というのが自分の感想です。
« 【科学】ローレンツ因子 絵的に理解 | トップページ | 【図解】女性天皇と女系天皇 どう違う? »
「0~1 のすべての数」と言われる表現が理解できません。「0~1 の(うちの)すべて」なら、0 および 1 という2つなのではないのでしょうか。
投稿: 木村弘一(こういち) | 2020/12/24 14:06
申し訳ございません。区間[0,1]内の全小数なのですね。斜め読みしそこないました。
それにしても、私の読みました文献では、量子の波長の重ね合わせ等で、小数ではなくて、整数の 0 と 1 とが、幾つも重ね合わせられて、入出力されるものだ、と書いてあった様に記憶して居りますのですが・・・。御説明と食い違うのは何故でしょうか。
投稿: 木村弘一(こういち) | 2020/12/24 14:13
>木村弘一(こういち)さん はい、全小数という感じです。
>それにしても、私の読みました文献では、量子の波長の重ね合わせ等で、小数ではなくて、整数の 0 と 1 とが、幾つも重ね合わせられて、入出力されるものだ、と書いてあった様に記憶して居りますのですが・・・。御説明と食い違うのは何故でしょうか。
入力に関しては疑問ですが、出力に関してはおそらく表現方法の違いではないかと思います。本記事中の0+0、0+1、1+0、1+1の同時計算も、最終的には0と1が重ね合わせられて出力されると言っていいのではないでしょうか?
投稿: 管理人 | 2020/12/24 15:18