テクノロジー系のニュースをチェックしていると、量子コンピューターというキーワードがちょいちょい出てきます。
処理速度が馬鹿みたいに速い高性能コンピューターだというのは何となくわかるけれど、具体的に何が凄いのか。
その辺のところがぼんやりしている人もまた多いと思います。
なぜならば僕がそうだからです。
僕が理解できないことは、みんなも理解できてないといやだ!やだやだ!
そんなわけで本日は、そんな量子コンピューターの基本の基本の入口をお勉強してみたいと思いますよ。
現状のコンピューターおさらい
話のわかりやすさを重視して、正確さはベッドサイドの水に浮かべている部分がありますので予めご了承ください。
さて、現状のコンピューターは、電気信号の「有る無し」で全てを表現します。
「トン・ツー」のモールス信号のように、一定間隔で電気を流したり止めたりでこの「有る無し」を表現します。
ここでは、
電気信号有り=1
電気信号無し=0
としましょう。
コンピューターはこの「1と0」の組み合わせであらゆる処理を実行しています。
例えば、
1=黒色
0=白色
としましょう。
すると、白と黒で絵を描くことができるようになります。

おにぎり!
でも、白黒だけじゃなくてもっといろんな色を使って絵を描きたいですよね。
しかしながら、1と0だけでは白と黒の2つしか表現できません。
じゃあどうするか?
桁を増やせばよいのです。
今までは1桁でしたが、1と0の組み合わせを2桁にしてみましょう。
00→黒色
01→白色
10→赤色
11→青色
4色使って絵が描けるようになりました。

うめぼし!
このように0と1で桁を増やしていくと、表現力が豊かになったり、より高度な処理が可能になるわけです。
この桁のことを「ビット」と呼びます。
白黒おにぎりは1桁のビットなので「1ビット」
うめぼしおにぎりは2桁のビットなので「2ビット」ということです。
ちなみに、このビットを8桁まで増やしたのが「ファミコン」です。
8ビットだと、なんと256色で絵が描けるわけです。
00000000→黒色
00000001→白色
00000010→赤色
00000011→青色
00000100→黄色
・・・・・・・・
・・・・・・・・
11111110→からし色
11111111→夜のザリガニ色
その後ファミコンは16桁になって「スーパーファミコン」になりましたね。
今の個人用パソコンなどは、64桁の64ビットが主流です。
このように、「0と1」という2つの数字を使って桁を繰り上げていく仕組みを「2進数」と呼びます。
私達が0~9の10個の数字で繰り上げていく「10進数」を使えるのに対し、コンピューターの世界では、この「0か1か」の2進数しか使えないわけなのですね。
2進数コンピューターの限界
先程は色を使ってお絵かきをしましたが、今度は文字を使って文章を表現してみます。
00000000→あ
00000001→い
00000010→う
00000011→え
00000100→お
00000101→か
・・・・・・・・
・・・・・・・・
8ビットでは全部で256文字使える計算ですので、このように割り振っていけば平仮名とカタカナの100文字は余裕で使えそうです。
文字が送れるようになり、しばらくはみんな楽しく文字によるコミュニケーションを楽しんでいました。
しかしながら、段々と「文字を送るのに時間がかかる」と不満が出始めました。
上で説明した通り、1文字を表現するためには、電気のスイッチを入れたり切ったりするように、「0か1」を8回チカチカさせなければなりません。
現状では、8回チカチカさせるのに、1秒かかっています。
つまり、1文字送るのに1秒かかるということです。
50文字送るためには50秒、100文字送るためには100秒かかるわけです。
確かにそれは不便です。
その不満を解消するため、頭のいい人達は頑張って「0.5秒で8回」チカチカできるようにしました。
今までより半分の時間で文字を送れるようになって、みんなはひとまず満足しました。
しかしながら、しばらくするとまた別の不満が出てきました。
こんどはひらがなやかたかなだけではよみにくいというふまんです。タシカニヒラガナヤカタカナダケデハブンショウハヨミヅライデスネ。
その不満に対応するため、中の人は「8ビット」から「16ビット」に増やしました。
そうすることで、扱える文字が256文字から65536文字に爆増、その結果漢字も使えるようになったのです。
みんなハッピーです。
ところがここでまたすぐに別の問題が発生してしまいます。
1文字送るのに、また1秒かかるようになってしまったからです。
今までは8回チカチカ(8ビット)すれば1文字送れていたのに、16ビットに増やしたため、16回チカチカしないと1文字が送れなくなったからです。
0000000000000000→あ
0000000000000001→い
0000000000000010→う
0000000000000011→え
0000000000000100→お
0000000000000101→か
・・・・・・・・中略
・・・・・・・・中略
0000110000000101→谷
0000110000000110→亮
0000110000000111→子
・・・・・・・・中略
・・・・・・・・
8ビットの2回分、つまりまた「1文字1秒」の状態に戻ってしまったのです。
さらに「中国語も使いたい」「アラビア語も使いたい」「絵文字も使いたい」などの要望が次から次へと生まれます。
そしてとうとう16ビットでも足りなくなってしまいました。
ビットを増やすと、今度はさらに速度が落ちてしまいます。
このように、人類はビットを増やして表現力を豊かにしつつ、それでいて「0か1か」のチカチカを高速化させ、コンピューターの高性能化をはかってきました。
しかしながら、1秒間に詰め込める高速のチカチカにも限界が見えてきました。
これが、現状私達が直面しているのコンピューターの限界です。
じゃあ量子コンピューターは?
そんなコンピューターの限界を、根本的に突破しようと考え出されたのが「量子コンピューター」です。
従来のコンピューターは「0か1か」の積み重ねであらゆる処理を実行していました。
1回「チカっ」とさせたら、それは「0」か「1」のどちらかだったわけです。
しかしながら、量子コンピューターは違います。
チカっとさせた1回は、「0と1両方を含んでいる」のだそうです。
どうですかみなさま。
意味わからないでしょう?
従来のコンピューターでおにぎりを描く
山羊山は量子コンピューターの仕組みを理解しようと今まで3回くらい挑戦してきましたが、いつもこの「0と1両方を含有する」のところで頭パーンなって挫折しています。
だって意味が不明だからです。
量子コンピューターを理解する前に、ここでは「0と1両方を含む」がどんだけ意味不明なのかを「おにぎり」で解説してみようと思います。
例えば。
「8x8のキャンバスに白と黒でおにぎりを描く」というシチュエーションで考えてみます。

おにぎり!
白と黒なので1ビットで十分ですね。
0=白
1=黒
としましょう。
キャンバスに番号を振って、その順番に沿って「0(白)」か「1(黒)」をチカチカさせてコンピューターに命令を出しましょう。

1番目のマスは白なので0.
2番目、3番目のマスも白なので0が2回続きます。
そして4,5,6と黒なので1を3回チカチカさせます。
そんな感じで1~64マスまで埋めて行きます。
0001110000100110001000100100001101000001100111011101110101111110
64回チカチカさせて、おにぎりが描けましたー。

おにぎり!
量子コンピューターでおにぎりを描く
それでは次に、量子コンピューターでおにぎりを描いてみましょう。

おにぎり!
1マス目は白です。
なので0をチカっとさせたいところです。
ところが。
量子コンピューターで「1回のチカっ」は「0と1両方を含有する」という特性を持っています。
山「チカっ(0のつもり)」
量「0と1ですね」
山「白なので0でいいです」
量「それは白でもあり、黒でもありますよ」
山「いや、1マス目は白なんです」
量「でもそれは白と黒です」
山「白…」
量「白と黒です」
どうですかみなさま。
僕の頭がパーンなる理由がわかりましたですかね。
量子コンピューターの「量子ちゃん」と話が噛み合わず、白を指定できないんですよおにぎりが描けないんですよ。
量子コンピューターを理解しようとすると、このように話がどん詰まってしまうのです。
量子コンピューターは思想が違う
量子コンピューターを理解するためには、従来のコンピューターと発想を大きく変える必要がありました。
従来のコンピューターは、辿り着きたい答えが1つ決まっていて、その答えに向かって進んでゆくイメージです。
一方で量子コンピューターは、あらゆる可能性を予め全て計算し、その中から最適解を選び出すイメージです。
おにぎりの例で考えてみましょう。
8x8のマスを白と黒で塗りつぶしていく場合、その組み合わせは18446744073709551616パターンあります。

だったり、

だったり、

こんなパターンだったり。
従来のコンピューターであれば、白と黒の全パターンを網羅するためには18446744073709551616回データを入力する必要がありました。
0000000000000000000000000000000000000000000000000000000000000000全部白
0000000000000000000000000000000000000000000000000000000000000001
0000000000000000000000000000000000000000000000000000000000000010
0000000000000000000000000000000000000000000000000000000000000011
0000000000000000000000000000000000000000000000000000000000000100
…中略
…中略
…中略
0001110000100110001000100100001101000001100111011101110101111110おにぎり
…中略
…中略
…中略
1111111111111111111111111111111111111111111111111111111111111111全部黒
一方で量子コンピューターは、1回の入力で18446744073709551616パターン全てを処理することができます。
(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)(0と1)…
↓
OK!!18446744073709551616パターン!!
答えが1つ決まっている場合→従来のコンピューターが得意
とりあえず大量のデータを全部ぶち込んであらゆるパターンを計算したい場合→量子コンピューターが得意
量子コンピューターの概要、掴めましたですかねみなさま。
以上を踏まえまして。
従来のコンピューターが得意なこと。
量子コンピューターが得意なこと。
この視点で考えてみると、量子コンピューターは理解しやすいかもしれません。
「このおにぎりが描きたいんだ!」と描きたいおにぎりが明確にイメージできている場合でも、量子コンピューターは18446744073709551616パターンの計算をしてしまいます。
つまり、答えはひとつでいいのに、18446744073709551615回無駄な処理をしていることになります。
これは優劣ではなく、使い分けの問題ですかね。
量子コンピューターがその真価を余すところなく発揮できる場面もあります。
それは様々な要因が複雑に絡まり合い、状況が刻一刻と変化してゆく中で未来をシミュレーションしていく場面です。
それは気象に関するものだったり、宇宙、天体から、人体、遺伝子解析、医薬品開発、それから経済・株価予測などとも相性がよいかもしれません。
さらに、今流行りのAIジェネレーターもあります。
おにぎりに応用すると、
「8x8のキャンバスに白黒で絵描いて、全パターンの中からおにぎりっぽいヤツを10個くらいピックアップして出してよ」
なーんて使い方はまさに量子コンピューターが得意とするところなのかもしんないですね。
と、いうわけで。
量子コンピューターが従来のコンピューターに置き換わっていく。
そんな先入観が量子コンピューターの理解を邪魔していたのかな―という感じです。
先入観をとっぱらうというのは大事ですね。
加えて量子コンピューターを安定して動作させるには、マイナス270℃という聖闘士星矢みたいな環境が必要だったりするようです。
なので、少なくとも山羊山が使うWindowsパソコンが量子コンピューターに置き換わることはないのかな、と。
量子コンピューターは、個人ユースのパソコンの代わりではなく、スパコンに置き換わり、その高い計算能力で人類に貢献してゆく。
そんな未来が見えた気がしましたよ。
頑張れ量子コンピューター!!
そんなわけで以上、量子コンピューターでおにぎり描くな!でした。
コメント