【日記】 ド文系による量子コンピュータに関する一考

こんにちは、涼枝です。
最近、気になる記事を見かけたので、備忘録的な一考の記事を残しておこうかと思います。

グーグル、量子コンピューターの「超計算」成功発表
https://www.nikkei.com/article/DGKKZO51301050T21C19A0MM8000/

シンギュラリティ―技術的特異点―への一里塚と言われた
コンピュータのトランジスタ数が人間の脳を上回るようになる、と言われていた2018年から1年が過ぎた。

脳細胞は、トランジスタ数で表すと「300億」の能力があると言われている。
調べてみたが、
現在(2019年)の市販CPUのトランジスタ数は「10億~20億」程度であるらしい。
もっと視野を広げ、IBM Power9というスパコンに使われるチップも調べたが、トランジスタ数は「80億」程度で、まだまだ脳には及ばない。
どうやら技術進歩は予測(ムーアの法則)から遅れているようだ。

そう思っていたが、中には300億の40倍、
「1兆2000億」ものトランジスタを搭載するコンピュータ-チップも登場したという。

この事実を鑑みるに、既にコンピュータはその処理方法は兎も角として、
ベース細胞(トランジスタ)の数では人間を上回ったと言って良い段階に来ている。

私が幼少期だった20年ほど前と比べ、コンピュータは飛躍的に普及し、その能力は格段に向上した。
しかし、情報技術者でもなんでもない一介の文系サラリーマンである私はコンピュータの技術的進歩、その利益は享受するが、原理原則についてあまりに知らないことに気が付いた。
ここで、きたる未来…
量子コンピュータ世代への適応も視野に入れ、一つ原理原則を軽く勉強してみることにした

そもそも、さきほど言っているトランジスタとは何か。
私は電球を想像するようにしている。ON/OFFを表現するものとして、非常に分かりやすいからだ。

コンピュータというのは、この「電球」の集合体である。
コンピュータが二進数で動いているというのは、なんとなく誰しもが聞いたことがあるだろう。

二進数というのは、「0」と「1」のみで、とある数を表そうというものだ。
普段、我々は10進数を使っているが、それも勿論二進数で表すことができる。

10進数の「2」は、2進数の「10」である。このあたりの疑問はほかのHP様の分かりやすい解説を参考にしていただきたい。
つまり、文系的に分かりやすく言うと、なんでもかんでも「数」なら「1」と「0」を使いまくって表そうという方法だ

これの便利なところは、「0」と「1」は先ほどの電球で表現できる。

「0(消えてる/OFF)」

「1(ついてる/ON)」

という具合に表せるのだ。

つまり、電球で10進数の「2」(つまり、2進数の「10」)を表すとこうなる。

「10進数の3」だとこうで、

「10進数の4」だとこうなるわけだ。

このように電球に限らず、「0(OFF)」と「1(ON)」で表現するもの、表現の単位を「ビット(古典的ビット)」と呼んでいる。
そして、このようなON/OFFの表現を作るのに電球を使ってるとスペースをとる(耐久性とかの問題もあるが)。
スイッチやその仲間であるリレーと呼ばれるものも、何億個と配置するにはデカすぎる。
計算用に、コンピュータ用に、小っちゃくON/OFFが表現できるようになったのが「トランジスタ」と言ったらきっと分かりやすいだろう(違ったら専門家に聞いてください)。

余談だが、我々がよく使っているバイトはこのビット「8個分」のことだ。つまり、1KBはビット「8000個」分である。
1ビットは2つの表現ができるので、8ビットあると単純に2の8乗(2^8)である256通りの表現ができる。
これくらいあれば、半角英字1文字くらいは表せるのでよく情報の単位として使われているらしい。
(大文字小文字で52通りありゃいけるんじゃね?と思うが、記号とかも含まれるらしいのでそこそこあるっぽい)

コンピュータの計算は、このビットの考え方が使われている。
私が一番なじみの深い足し算で説明してみようと思う。

「1」と「0」のみで足し算をすると、4通りの表現と3通りの結果がある。

①「0」+「0」=「0」
②「0」+「1」=「1」
③「1」+「0」=「1」
④「1」+「1」=「2(二進数だと「10」)」

これを電球で表現するとこうなる。

① AスイッチとBスイッチをどちらもOFFなので、二つとも消えている(ついている電球は0個である)。

②と③ AスイッチとBスイッチのどちらかがONになっているので、どちらかは電気がついている(ついている電球は1個である)。

④ AスイッチとBスイッチのどちらもONになっているので、二つ電気がついている(ついている電球は2個である)。

つまり、計算の結果は「電球がついている数を見ればわかる」ということだ。

しかし、コンピュータには「見て判断する」なんてことはできない。
したがって、NOT/OR/ANDの3つの条件が判断できる回路を組んで認知させる。(論理回路という)
NOTが①で、ORが②、ANDが③の結果を導いてくれるわけだ。
つまり、AとBのどちらかついてれば光る「計算用電球」(OR回路)と、AとBのどちらもついていないと光らない「計算用電球」(AND回路)さえ作れば、結果がわかるということ。
 
(詳しくは上のリレー図を参考にされたい。「ONのとき回路側にいくスイッチ」と「OFFのときに回路側にいくスイッチ」がAとBで合計4個あって、その組み合わせでOR回路が表現できる。)

このような経緯で足し算は出来上がる。(たったこれだけで6個もスイッチがいるのかよ、と思うが)
これをうまく組み合わせていくことで、コンピュータは無限の計算を可能にしているのだ。

それで、じゃあ本題の量子コンピュータは何なんだという話に戻る。
アニーリングやゲート法など、色々な考えややり方があり私にとっては理解が難しいが、こう捉えている。

この電球はただ「光るわけではない」。青色に光る可能性もあるし、赤色に光る可能性もあるし、緑色に光る可能性もある。
今までON/OFFの2パターンでしか考えていなかった「ビット(ここでは電球)」を色でも表現させるようにする。
このようなビットを作る。これを「量子ビット」と言う。

現実の量子ビットはここまで高性能(RGBの3系統を表現できるほど)ではなく、
従来の「つく(明るさ)」・「つかない(暗さ)」に加えて、1系統(例えば、赤っぽさ(R)の「めっちゃ赤い」・「めっちゃ赤くない」)程度の表現をパーセンテージで表せるくらいのものらしいが、
ここではさして重要な問題ではないので置いておく。(もし上のフルカラー量子ビットが完成したら私はノーベル賞ものだろうが)

私が言いたいのは、1つの電球がON/OFFの2つだけではなく、様々な表現ができるようになったということだ。
 
すると、電球一つ(ビット一つ)で表現できる数が圧倒的に多くなるので、計算量も飛躍的に向上する

この考え方が量子コンピュータの基本である、と考えています。
(間違えてるかもしれないが、ド文系が記事を頑張って読んだだけなので許してほしい)

コンピュータは単純に「計算能力」ではなく、「計算方法(アルゴリズム)」なんかが最終的な計算スピードに影響するので、
量子コンピュータにも得意・不得意があるようですが、ド素人の私でも画期的な製品であることがわかります。

こんなものが巷に普及する未来はどんな未来になるのでしょうか……
恐らく見ることはできないですが、ちょっと興味がわいた。そんなお勉強になりました。

Blogカテゴリーの記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

seventeen + sixteen =