【科学】かんたん量子コンピューターの話 基礎の基礎: 虹と雪、そして桜

免責事項と著作権

  • 本ブログについて
  • ブログ内記事検索

アクセスマップ

著者プロフィール



㊙アメリカ㊙成功する方法


« 【科学】ローレンツ因子の絵的な意味 | トップページ | 【歴史】女性天皇と女系天皇の違い »

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の数字を入力する

という感じです。

入力すれば、そこから先は、プログラムが情報を処理し、計算結果を表示することになります。

ふつうのコンピューターでは、どんなに単純な計算であっても、[   ] の中に入力できる数字は、一回の計算につき、必ず0か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の両方の数字を入力する・・・といいましたよね?

これは、ちょっと正確ではなくて、もっと正確に言うと、 [   ] の中に、0、1の両方の数字を含む、0~1までのすべての数字を入力するのです。

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

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

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

でも・・・

両方入れるってのは、逆にいうと、入力された信号が、0なのか1なのかわからないってことでもあります。

それどころか、量子の状態というのは、0~1の間の中間の状態、つまり小数、もありえます。

つまり、[   ] の中に入っている量子の状態(数字)は、めちゃくちゃランダムってことです。

わからない数字を入力して、いったい、何を、どう計算できるというの?って気がしますが、

実際、[   ] の中に量子1個を入れ、スピンの上下を指定しないというのは、[   ] の中に0から1のあいだに存在するすべての数(小数を含む)を入力することになります。

しかも、

そのうちの"どれか"、ではなく、その"すべて"が"重なった状態"で入力されている

っていうイメージです。

つまり、

[量子1個、スピンの上下指定なし]  +  [量子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

とか・・・

そんな0から1のあいだのランダムな数字をただやみくもに足し合わせる・・・

そんな膨大な計算を同時にしている感じになるでしょう。

無駄に思えます。

そのうち、どこかでちょうど、

0+0 = 0

1+0 = 1

0+1 = 1

1+1 = 2

という、目的である4つの計算もでてくるかもしれません。

しかし・・・

これで、最初の問いに対する答えになるのでしょうか?

こんな感じでは、ますます、計算なんか不可能だ!

という気がしてきます。

 

しかし、それでいいんです。

とりあえず、そんな無駄にみえる計算を、たとえば10000通りやらせるわけです。

量子コンピュータは、それを瞬時におこないます。

結果をあえて3Dグラフ上(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つの計算が確実に含まれているという保証はありません。

(含まれているとしたら、ピンクの菱形の角になっているはずです)

とてもじゃないですけれども、これでもって、目的の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が重ね合わせられて出力されると言っていいのではないでしょうか?

コメントを書く

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

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

« 【科学】ローレンツ因子の絵的な意味 | トップページ | 【歴史】女性天皇と女系天皇の違い »

2021年6月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30