テクノロジー

中学生でもわかる量子コンピュータがブロックチェーンにどう関わってくるかその2

みずばり's icon'
  • みずばり
  • 2020/02/26 10:12
Content image
シュレディンガーの猫

 

猫、上手く描けました。

※この記事は、量子コンピュータがブロックチェーンの脅威となる可能性があると言われますが、量子コンピュータ側からのアプローチで、どのような原理で動いているのか、それを0から理解しようという記事です。

そして、ブロックチェーンに用いられる暗号技術がどのようなアルゴリズムで脅かされるのか触れていくという内容です。

前回記事を初めて載せてみて

自分の周りの何人かの学生にフィードバックいただいたところ、全員よくわからないと笑

ごめんなさい。

ですが中学生の知識で理解できるように書いているはずなのでいつでも質問してください。

また、その2を読むとその1がより理解し易くなると思うので、また読み返してみてください。

前置き

Content image

 

かなり専門的です。難しいと言っているわけではなく、かなりニッチな内容です。(難しいかも。)

高校教師はもちろん、アルゴリズムまで行ったりすると基本的に大学の物理学教授でも専門としていなければあまり知らないようなことです。

そして、分かりやすさと正確性は時に両立できません。

量子コンピュータもそう、ブロックチェーンもそう。

定義は難しい言葉、硬い言葉で書かれがちなのもそうです。

逆に簡単な表現で書かれていれば、それは正確性が欠如していると思った方がいいかもしれません。

なので定義を含めた正確性よりも分かりやすさを重視しています。(間違ったことを言ってるとは言ってない)

復習から

量子はなんだったでしょうか。

そうです、粒子であり、波でした。

これは実験でも示されている事実でしたね。

そんな特別な存在の量子は二つの性質を持ち合わせていました。

 

一つは重ね合わせです。

 

複数の状態を重ね合わせた表現が可能になります。

 

二つ目は量子もつれです。

 

二つ以上の量子があるとき、一つの量子の観測時に他の量子に影響を与えられるような状態を作ることができます。

これらを踏まえて、先は進みたいと思います。

 

量子は今のコンピュータ(古典コンピュータ)でいうどこの役割?

Content image

 

結論から言うと、古典コンピュータでいう1ビットが量子コンピュータでは1量子ビットになります。

古典コンピュータでは、計算は全て二進法で行っています。(全ての数値(写真のデータ処理など全て)を0と1に変換して計算)

前回、データ等を0と1のみを用いて説明していたのもこのためです。

1ビットはつまり0と1のどちらかを表せると。これと1量子ビットはどう異なるでしょうか?

これを踏まえて下図を見てみましょう。

ここから先、(a)も(b)も上が0で下が1を意味してると考えてください。

Content image
古典ビットと量子ビットの比較

(a)は上か下、つまり0か1か二つに一つです。

対して(b)は、0(上)でも1(下)でもなく、斜めに伸びているところを指していますよね?(図では|Ψ>で示されている)

前回、もたれで出てきた角度(位相)を変える、マイナスを変えるとか、いきなり難しくなったかもしれません。

角度を変えるとはつまり、矢印の向きを変えるということです。(高校生向けに説明するならベクトル)

この、角度を変えるという操作、これは古典コンピュータにはなく、量子コンピュータの特徴であります。

量子ビットはどう扱うのか

Content image

 

例えば矢印が次のような方向を示したらどのようなことが言えるでしょう?

Content image

 

スクロールせず、少し考えてみてください。

どうでもいいですがこの球の名前はブロッホ球と言います。(これを使った説明が最も分かりやすいと思ってるので、以下でも多用します。)

 

 

 

正解は、重ね合わせです。これは、球自体は1量子ビットを表していますが、矢印は|0>,|1>の真ん中を取っていますよね?

つまり|0>と|1>の重ね合わせ状態です。これをなんと1つの量子ビットで表しているということです。

しかしながら、この量子ビット、観測(結果を測定)すると|0>と|1>のどちらか一つの状態になります。

|0>と|1>のちょうど真ん中を向いているので50%の確率で|0>か|1>かが結果として測定されます。式で書くと、、

|Ψ> = 1/√2|0> + 1/√2|1>


となります。

1回測定すると、|0>か|1>のどちらか1つが結果として出てきます。(真ん中だからといって0.5みたいに0と1以外の数になることはないので注意しましょう。)

これを何回も繰り返して(今回は1024回)統計的に結果を出していきます。すると、、

Content image
重ね合わせ状態の観測

0と1が大体50%ずつ観測されていることがわかります。500回ずつくらい観測されたんですね。予想通りです。

一応実機でも実行。

pprint(Circuit().h[0].m[0].run_with_ibmq(backend))
Counter({'1': 530, '0': 494})

 

もう一度確認しておきますが、上で行ったのは、1つ重ね合わせ状態になっている量子ビットを繰り返し観測した結果です。

 

余力のある人は、50%ずつではなく、|0>が75%、|1>が25%で観測されるような重ね合わせ状態はどのようになっているか考えてみてください。

ブロッホ球で表すと矢印はどのようになるでしょうか。

 

ふむふむ。普通の古典のビットだと上か下にしか矢印は向けませんが、量子ビットだと、上か下以外にも向くことができて、それは重ね合わせの状態なんですね〜。

 

なんとなく一つの量子ビットで重ね合わせを示すことができる原理はわかったような? 

 

そしたら下の画像はどうでしょう。

Content image

1分前に学んだことを思い出してください。

 

上が0で下が1ということを考慮すると、、

 

この二つの量子ビット、矢印は真ん中を指しているので、実はどちらも観測したら0か1が50%の確率で出てきます。

 

んんん?そしたら何が異なるのでしょう。

式を見ると答えが分かります。

Content image

それぞれの右辺の➕と➖が異なっていることがわかるでしょうか?(それぞれの左辺、|+>、|一>は違いをわかりやすくしてるだけで特に気にしなくて大丈夫です。)

これが、角度(位相)が異なっているということです。

繰り返しになりますが、真ん中を向いた矢印は50%と言いましたが、真ん中ならどこを取っても(地球でいう赤道上なら)50%です。ならば何が異なるのか、それは角度(位相)が異なります。

 

現状、確率は変わらないのに何の意味があるのかわからないと思います。ですが、ブロックチェーンに用いられる暗号を破る可能性があると言われるアルゴリズムではこの角度(位相)の変化はとても重要な役割を果たします。

 

量子ビットを操作してアルゴリズムを作る

Content image

 

量子コンピュータで動かすアルゴリズム、いわゆる量子アルゴリズムはどのように作られているのか見てみます。

Content image
量子回路

 

上図のような五線譜のようなものを量子回路と言います。そこにある障害物みたいなもの(いい例えあったら教えてください)を量子ゲートと言います。

 

プログラムとしては左から右に流れていき、スタート地点にある量子ビット(|0>)を、量子ゲートで操作し、任意のアルゴリズムを構成していきます。

 

分かりずらければ量子がゲートをくぐって操作されるくらいのイメージで良いとおもいます。

Content image

 

さて、上の回路を実際に深掘りしていきましょう。

 

一番左から注目していきます。

 

縦にq[0],q[1]...と並んでいますが、これはそれぞれが一つの量子ビットです。

つまり5つ量子ビットが並んでいることがわかります。

次にこの縦の列から一つ右を見てもらって、全て|0>となっているのがわかるでしょうか。

これはどういうことかというと、デフォルトで全て|0>と決まっています。つまり全ての量子ビットが、スタート地点では

 

Content image
|0>を向いている

この状態です。

 

この状態(|0>)の量子ビットから、障害物のようなゲート(Hとか+みたいなやつ)を通って量子の矢印の向きが変化しています。

 

 

量子ビットを操作する量子ゲート

Content image

 

代表的な二つを紹介します。例の回路の黒いゲートは測定に必要なゲートです。

①重ね合わせを作るアダマールゲート

Content image
アダマールゲートと言います

|0>もしくは|1>のとき(重ね合わせ状態でない場合)の量子ビットを重ね合わせ状態にします。

今回の場合だと|0>ですので、以下のようになります。

|0> → H → 1/√2|0> + 1/√2|1>

 

Content image

 

矢印の向きを変化させるHゲートは図的に説明するとこのようにx軸とz軸に対して斜めの点線を軸にして180°回転させます。

そうです、矢印はx軸の方向を向き、耳が痛くなるほど聞いた重ね合わせ状態そのものを示しています。

 

 

 

ちなみにもう一度アダマールゲートを通すと、

Content image

 

 

このように点線で180°回転して元の|0>に戻ります。

 

 

 

 

Hゲートは重ね合わせを作るゲートと覚えておきましょう。

量子といえば、重ね合わせときたら、次はなんでしょうか?

そうです、量子もつれです。

 

 

②もつれを作る制御NOTゲート

名前から重いですね、、ですが前回の記事を理解していれば必ず理解できます。

量子もつれはどのようなものだったでしょうか?

前回の記事をチラ見しましょう。

Content image
前回の記事より

量子もつれは二つ以上の量子の間に引き起こる不思議な現象でした。

最初の量子回路に戻ってみてください。いかにも!ってやつがありませんか?

二つの量子にまたがっているゲートがありますよね。

Content image
制御NOTゲート

 

これは、

・上の量子ビットが|0>であれば下の量子には何もしない。

・上の量子ビットが|1>であれば下の量子ビットをx軸で180°回転させる。

 

というものです。カンニングした前回の記事の前者の方ではこいつのことを話していました。(もちろん後者もあります。次回の記事で、、)

上の量子ビットが|0>か|1>かで観測するのを制御、下の量子ビットを反転させることがNOTに相当します。

ちなみに紫のゲートはなんでしょうか。制御NOTゲートにかなり似ていますが、こちらは上二つの量子ビットが|1>なら下の量子ビットを反転させるというものです。

Try Bloch!(こちらでゲート操作の回転をわかりやすくシミュレーションできます)

 

最後に、今回紹介した量子回路を実行してみましょう。

Content image

 

Content image
シミュレータでの結果

こんな結果が出てきました。この回路、実は意味があります。

Content image

その前に改めて量子回路と結果の見方を確認します。

量子ビットと結果に出ている「01...」の対応順を①、②...と書いておきました。

(⑤はゲートを通っていないので、無視してください。)

それぞれの量子は最後、計測されると、0か1かに確定しています。0か1かに確定したものが5量子bit並んでいるということです。ですが例えば①(量子回路でいうと一番上、結果で言うと一番右)の量子ビットに注目してみましょう。

0のときもあれば1のときもありますよね?

1024回観測を行いましたが、重ね合わせ状態のため、1回目では0でも2回目では1で観測されるかもしれないということです。

この回路一体何を意味しているのか。

結論から言うと足し算してる回路です。

⑤の量子ビット、つまり結果の一番左の量子ビットは無視して考えてください。

①と②が入力、③と④が計算結果と考えてください。

一番左の棒グラフからみてみます。00000

①と②は0ですので0+0=0で③、④は言うまでもなく0です。

左から2番目 00101

①が1、②が0ですので1+0=1

左から3番目 00110

①が0、②が1ですので0+1=1

左から4番目 01011

①が1、②が1ですので1+1=2 ですが結果は全て二進法なので1+1=10となります。

二進法

0と1のみで計算する手法

一応本物の量子コンピュータでも実行してみましょう。

Content image

こんなレベルです。ノイズだらけ。

いかがでしたでしょうか。

勉強色が強くなってしまいました。つまらなさすぎて見る人いない説。

結果は古典的な感覚でしたが、アルゴリズムのプロセスでは重ね合わせともつれが利用されていることが理解できていれば💮です!理解できなければ質問飛ばしてください。

次回はこれらのゲートを使って暗号技術を脅かす!?と言われるアルゴリズムを実装します。需要があれば量子コンピュータプログラミングの初め方からやってみます。(ないと思いますがw)

追記

3/3 Try Bloch!のリンクを貼り付けました。

 

Supporter profile iconSupporter profile iconSupporter profile iconSupporter profile icon Supporters link icon
Article tip 10人がサポートしています
獲得ALIS: Article like 151.06 ALIS Article tip 109.20 ALIS
みずばり's icon'
  • みずばり
  • @m2valley

投稿者の人気記事
コメントする
コメントする
こちらもおすすめ!
Eye catch
クリプト

Bitcoin史 〜0.00076ドルから6万ドルへの歩み〜

Like token Tip token
947.13 ALIS
Eye catch
テクノロジー

なぜ、素人エンジニアの私が60日間でブロックチェーンゲームを制作できたのか、について語ってみた

Like token Tip token
270.93 ALIS
Eye catch
テクノロジー

彼女でも分かるように解説:ディープフェイク

Like token Tip token
32.10 ALIS
Eye catch
テクノロジー

オープンソースプロジェクトに参加して自己肯定感を高める

Like token Tip token
85.05 ALIS
Eye catch
クリプト

ジョークコインとして出発したDogecoin(ドージコイン)の誕生から現在まで。注目される非証券性🐶

Like token Tip token
38.31 ALIS
Eye catch
他カテゴリ

機械学習を体験してみよう!(難易度低)

Like token Tip token
124.82 ALIS
Eye catch
クリプト

Uniswap v3を完全に理解した

Like token Tip token
18.92 ALIS
Eye catch
クリプト

17万円のPCでTwitterやってるのはもったいないのでETHマイニングを始めた話

Like token Tip token
46.60 ALIS
Eye catch
テクノロジー

iOS15 配信開始!!

Like token Tip token
7.20 ALIS
Eye catch
クリプト

Bitcoinの価値の源泉は、PoWによる電気代ではなくて"競争原理"だった。

Like token Tip token
159.32 ALIS
Eye catch
ゲーム

ドラクエで学ぶオーバフロー

Like token Tip token
30.10 ALIS
Eye catch
クリプト

約2年間ブロックチェ-ンゲームをして

Like token Tip token
61.20 ALIS