google.com, pub-4426889494877513, DIRECT, f08c47fec0942fa0 【科学】かんたん量子コンピューターの話 基礎の基礎: 虹と雪、そして桜

« 【科学】ローレンツ因子 絵的に理解 | トップページ | 【図解】女性天皇と女系天皇 どう違う? »

2019/07/18

【科学】かんたん量子コンピューターの話 基礎の基礎

話題沸騰中の量子コンピューター。

その能力は強大で、たとえばパスワード解析なども、あっという間。

実用化によって、大半の電子資産を無効化できる・・・といわれています。

 

そんな量子コンピューターですが、

実は、あなたも使うことができます。

IBM Q Experience

 ↑

このサイトです。

まだまだ実用化には程遠く、実験段階ですが。

 

量子コンピュータの稼働には安定した大型の冷却装置が必要で、とてもとても個人で管理できるものではありません。

しかし、こうやってクラウド技術と組み合わせると、誰でも活用できるんですね。

 

しかし・・・

量子コンピューターって、いまいち、よくわからないという人も多いのではないかと思います。

 

解説を紐解いてみると・・・

量子コンピューターとは、数字を重ね合わせの状態で計算する装置だ

とか

量子が0と1の中間の値をとりながら計算する・・・

とか、

わからない人には、さっぱりわからない説明ばかりです。

 

なんとなくですが、

まぁ何か "あいまいな感じ" がします。

しかし、それでいいのでしょうか。

あいまいでは計算なんかできないんじゃないの?

という気がしませんか?

 

この記事では、そんな量子コンピューターの仕組みについて、わかりやすく解説してみたいと思います。

 

たとえば

量子コンピューターに「たし算」をやらせてみましょう。

何が起こるのでしょうか?

まず・・・

量子コンピューターといえども、基本は0と1の2進法です。

これは間違いありません。

なので、まずは、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] + [0]

とか

[1] + [1]

ではなく

[0または1]  +  [0または1]

みたいな感じでしょうか・・・

こうやって、0と1をまとめて入力すると、

あとは何もしなくても、量子コンピューターが勝手に

0+0 = 0

1+0 = 1

0+1 = 1

1+1 = 2

という4つの計算を"同時"にやってくれる・・・

っていうわけです。

けれど、それって、ただ4通りの組み合わせを別々に(並列に?)計算するのとあまり違わないじゃない?

という気がします。

いえ・・・

 

実は、量子コンピューターは、もっともっと、想像を絶することをしているんです。

さきほど、それぞれの [   ] の中に、0、1の両方の数字を入力する・・・といいましたよね?

するとかっこの中にはいる数字の種類は2種類だけ?

と思うかもしれません。が

違います。

[   ] の中には、0、1の両方の数字を含む、0~1の間に存在する無数の~すべての数字が入力されるのです。

どういうことかというと・・・

量子コンピューターは、0とか1とかの信号を入力するのではなく、具体的には [   ] の中に"量子"が1個はいります。

量子っていうのは、0の状態(上向きスピン)と1の状態(下向きスピン)がありますから、上向きか下向きか指定しないで入力すると、 [   ] の中に0と1という信号が、ほんとうに"両方"入ったことになります。

つまり

[量子1個、スピンの上下指定なし]  +  [量子1個、スピンの上下指定なし] 

です。

でも・・・

両方入れるってのは、逆にいうと、入力された信号が、0なのか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個の計算結果が一つ一つが小さなドットとして表示されている・・・とイメージしてください。

https://remedics.air-nifty.com/photos/hawaii/quantum-computer11.png

ピンクのエリアにあるひとつの点がひとつのランダムな計算の結果に対応しています。

たとえば、

0.95 + 0.43589 = 1.38589

という計算結果が、

座標(0.95, 0.43589, 1.38589)

という点に相当し、ピンクのエリアの中にあります。

もうすこし正面からみると、こんな感じ。

https://remedics.air-nifty.com/photos/hawaii/quantum-computer19.png

10000通りの"すべて"の計算結果が、このピンクの平面上に分布しているわけです。

同時計算ですから、このように点ではなく面として表示されます。

まったく何をしているのやら・・・っていう感じです。

目的の

0+0 = 0

1+0 = 1

0+1 = 1

1+1 = 2

という、目的の4つの計算結果は、このピンクの菱形の角になっているはずです。

しかし、たかが10000種類の計算で、この角の4点に相当する計算が100%確実に含まれているという保証はありません。

1+1

0.9999999999999999999 + 0.999999999

は、グラフ上、肉眼では区別できないかもしれませんが、違いますから。

とてもじゃないですけれども、これでもって、目的の4つの足し算を計算した

とは思えませんよね。

それどころか、本来の計算の目的から遠ざかっているようにもみえます。

https://remedics.air-nifty.com/photos/hawaii/quantum-computer24.png

ところが、量子コンピューターってのは、ここからが真骨頂です。

キーワードは"収束"です。

量子っていうのは、波の性質と粒子の性質の両方の性質を持っていますので、波の状態から、粒子の状態に収束させることができます。

波として計算させておいて、出力するときに、0か1という粒子状態に収束させるのです。

すると・・・

量子が波の状態のときにはピンクのエリアに均等に分布していた計算結果が、"粒子の状態"になった瞬間、

下図のように4つの点(計算結果)にグッと収束します。https://remedics.air-nifty.com/photos/hawaii/quantum-computer20.png

ピンクのエリアにあった10000個のドットのうち、およそ2500個ずつの割合で、

(0, 0, 0)

(1, 0, 1)

(0, 1, 1)

(1, 1, 2)

の4つの点に凝集します。

https://remedics.air-nifty.com/photos/hawaii/quantum-computer21.png

これが、

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つなのではないのでしょうか。

申し訳ございません。区間[0,1]内の全小数なのですね。斜め読みしそこないました。
それにしても、私の読みました文献では、量子の波長の重ね合わせ等で、小数ではなくて、整数の 0 と 1 とが、幾つも重ね合わせられて、入出力されるものだ、と書いてあった様に記憶して居りますのですが・・・。御説明と食い違うのは何故でしょうか。

>木村弘一(こういち)さん はい、全小数という感じです。
>それにしても、私の読みました文献では、量子の波長の重ね合わせ等で、小数ではなくて、整数の 0 と 1 とが、幾つも重ね合わせられて、入出力されるものだ、と書いてあった様に記憶して居りますのですが・・・。御説明と食い違うのは何故でしょうか。
入力に関しては疑問ですが、出力に関してはおそらく表現方法の違いではないかと思います。本記事中の0+0、0+1、1+0、1+1の同時計算も、最終的には0と1が重ね合わせられて出力されると言っていいのではないでしょうか?

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« 【科学】ローレンツ因子 絵的に理解 | トップページ | 【図解】女性天皇と女系天皇 どう違う? »