メインコンテンツへスキップ
見出し画像

3.普通のビットと量子ビットは、何が違うの?――0と1から始める量子計算

    前回、量子コンピューターは、古典コンピューターを単純に高速化したものではなく、

    古典コンピューターが苦手な問題の一部に、違う解き方を持ち込める可能性がある

    と書きました。

    では、なぜ違う解き方ができるのでしょうか。

    その入口は、

    情報の持ち方

    にあります。

    この回から、少しだけコンピューターの中側へ入ります。

    ビットやアルゴリズムという言葉に馴染みがない方は、細部まで理解しなくても大丈夫です。

    今回のポイントは、

    量子コンピューターは「たくさん同時に計算する機械」ではなく、複数の可能性を含んだ状態そのものを操作する計算機である

    ということです。

    古典コンピューターは0か1、量子は「重ね合わせ」

    私たちが普段使っているコンピューターは、情報をビットで扱います。

    ビットは、

    0か1

    のどちらかです。

    文章も画像も動画も、コンピューターの中では最終的に大量の0と1として扱われます。

    量子コンピューターが使うのは、

    量子ビット(qubit)

    です。

    量子ビットは、0か1のどちらか一方だけではなく、

    0と1の状態を重ね合わせた量子状態

    を持つことができます。

    ただし、0.5のような単純な中間値ではありません。

    量子力学特有の、複数の可能性を含んだ状態です。

    ここで、

    「0と1を同時に持てる」

    と言われて、すんなり分かった方はそのまま先へ進んでください。

    私はしばらく、

    「いや、それで何がうれしいんだ?」

    のところに立っていました(笑)。

    量子ビットや「重ね合わせ」そのものについては、平易な解説がすでにたくさんあります。

    この記事ではそこを深掘りせず、

    それが、なぜ古典コンピューターとは違う解き方につながるのか

    に進みます。

    画像

    重ね合わせ=全部を一発で読める、ではない

    量子ビットが増えると、組み合わせも増えていきます。

    2量子ビットなら4通り。

    3量子ビットなら8通り。

    n量子ビットなら、2のn乗通りです。

    量子コンピューターでは、それら複数の状態を含んだ重ね合わせを、計算途中に持つことができます。

    ここで、

    それなら、全部の組み合わせを一度に計算して、一回で正解を読めるのでは?

    と思いたくなります。

    でも、そうではありません。

    量子状態の中に多くの可能性を含めることはできますが、最後に測定して得られる結果は限られます。

    つまり、

    100万個の候補を重ね合わせたからといって、100万個の答えを一度に取り出せるわけではありません。

    画像

    量子コンピューターは、単純な意味での巨大な並列計算機ではありません。

    もし100万通りを一回で全部計算して、正解だけ取り出せるなら、

    ものすごく優秀な総当たり君

    ということになります。

    残念ながら、そんなに都合のいい話ではありません(笑)。

    本質は「可能性をどう操作するか」

    量子コンピューターの重要な点は、

    たくさんの可能性を含んだ量子状態を作り、その状態そのものを操作できること

    にあります。

    量子の世界には、波のような性質があります。

    波は重なると、

    強め合ったり、

    打ち消し合ったりします。

    この性質を、

    干渉

    と呼びます。

    物理でいう波の干渉と同じように、量子コンピューターでもこの性質を計算に利用します。

    量子状態をうまく操作して、

    役に立つ結果が出やすく、そうでない結果が出にくくなるようにする。

    ここに、古典コンピューターとは違う計算の考え方があります。

    コンピューターの話をしていたはずなのに、突然「波」が出てきます。

    気がつくと、物理の授業に連れてこられています(笑)。

    でも、この「干渉」がかなり大事です。

    古典計算では、候補をどう効率よく調べるかを工夫します。

    量子計算には、それに加えて、

    候補を含んだ状態そのものを操作する

    という道具があります。

    私自身、ここが分かったとき、

    「ああ、だから単純な“高速化”ではなく、“別の解き方”なのか」

    と、ようやく腹落ちしました。

    Groverの探索で考える

    前回、Groverのアルゴリズムでは、

    100万件の候補を探す問題が、

    ざっくり1000回規模の探索になる、

    という話をしました。

    これは、

    100万通りを一回で全部計算して、正解だけを抜き出している

    という意味ではありません。

    100万候補を含んだ量子状態を作り、

    その状態を操作しながら、

    正解に対応する結果が出やすくなるように干渉を利用する。

    これを繰り返して、測定したときに正解が出やすい状態へ近づけていきます。

    つまり、

    候補をひとつずつ調べるだけではなく、候補を含んだ状態そのものを変化させていく。

    これが、量子コンピューターの「違う解き方」の一例です。

    画像

    確率的でも、「あいまい」ではない

    量子状態を測定すると、結果は確率的に得られます。

    そのため、

    一回の計算で必ず正しい答えが出るとは限りません。

    ここで、

    「え、一発で正解しないの?」

    と感じる方もいるかもしれません。

    0か1をカチッと返してくれる古典コンピューターに慣れていると、このあたりで少し脳がざわつきます。

    ただし、これは、

    量子コンピューターの計算がいい加減だ、という意味ではありません。

    干渉を使って正解につながる結果が出やすい状態を作り、必要に応じて同じ量子回路を複数回実行します。

    なお、

    何度も測定することで干渉が起きるわけではありません。

    順番は、

    量子状態を作る。

    その状態を操作する。

    干渉を利用して、欲しい結果が出やすい形にする。

    その後で測定する。

    です。

    また、量子コンピューターは、

    なんとなくもっともらしい答えを出す機械

    でもありません。

    必要に応じて計算を繰り返したり、問題によっては得られた結果を古典コンピューター側で確認したりしながら、答えを確かめていきます。

    たとえば、素因数分解を考えてみます。

    次のような巨大な数字があったとします。

    1,000,000,000,000,000,000,000,000,001,111,111,110,111,111,111,011,111,111,101,233,043,741,248,132,906,237,296,143,834,977,900,408,511,507,391,563,633,592,367,611,645,114,898,643,381,377,381,484,926,489,863,171,524,157,785,039,932,925,292,745,007,208,149,759,173

    「この数を素因数分解してください」

    と言われても、因数を見つけるのは簡単ではありません。

    こうした巨大な整数では、古典コンピューターで因数そのものを探し出すことが非常に難しくなる場合があります。

    ところが、

    1,000,000,000,000,000,000,000,000,000,123,456,789,012,345,678,901,234,567,890,123,456,789,012,345,678,901,234,567,333

    と

    1,000,000,000,000,000,000,000,000,000,987,654,321,098,765,432,109,876,543,210,987,654,321,098,765,432,109,876,544,481

    という候補を示されたら、古典コンピューターで掛け算し、元の巨大な数字に戻るかを確認できます。

    つまり、

    古典コンピューターで答えを見つけることは難しくても、量子コンピューターなどで見つかった答えが正しいかを古典コンピューターで確認することは比較的簡単な問題があります。

    量子コンピューターの「違う解き方」とは何か

    ここまでを整理すると、

    量子コンピューターは、

    膨大な候補を一発で全部計算して、正解を読む機械ではありません。

    複数の可能性を含んだ量子状態を作り、

    その状態を操作し、

    干渉を利用して、

    有用な答えにつながる結果が出やすい状態へ変えてから測定する。

    これが、量子コンピューターが古典コンピューターとは違う解き方をできる理由の一つです。

    重要なのは、

    量子コンピューターは、ただ速いのではなく、計算に使える「状態」と、その操作方法そのものが違う

    ということです。

    量子ビットや重ね合わせは、そのための部品です。

    本当に重要なのは、

    その量子状態をどう操作し、どう干渉させ、どう役に立つ答えへつなげるか

    というところにあります。

    画像

    あとがき

    ここまで読んで、

    「量子ビット、重ね合わせ、干渉、測定……もう十分です」

    となった方。

    大丈夫です(笑)。

    今回持ち帰っていただきたいのは、ひとつだけです。

    量子コンピューターは、たくさん同時に計算するから速いのではなく、計算途中の状態そのものを操作できる。

    非IT系の方なら、

    「普通のコンピューターとは、そもそも解き方が違うらしい」

    くらいで十分です。

    ここまで無事にたどり着いた時点で、かなり健闘しています。

    そしてIT系の方で、

    「なるほど。全体像は見えてきた。でも、それぞれ結局どうなってるの?」

    と思った方。

    はい。

    私もそこが気になりました。

    今回は、

    重ね合わせ → 量子状態の操作 → 干渉 → 測定

    という流れを、あえて一気に通ってみました。

    ここからは、少し速度を落とします。

    次回からは、

    重ね合わせとは、実際には何なのか。
    干渉すると、なぜ欲しい結果が出やすくなるのか。
    測定すると、何が起きているのか。

    このあたりを、一つずつ掘っていきます。

    せっかく沼の入口まで来たので、今度は少しずつ中を歩いてみます。

    まだ長靴で足りるのかは、分かりません(笑)。

    次の記事

    こちらのシリーズの登録マガジンはこちら

    他のマガジンの紹介


     
     
    異なる認知世界の翻訳家。G検定・生成AIパスポート。30数年IT業界・寄り道型。生成AIを共創的な思考の相棒に、人の認知・感情・組織・学び・お金・科学を行き来しながら、「なんか変だぞ」を入口に構造をほどき、別の世界へ橋を架けています。 ゆるく、ふわっと、中身はちゃんと(笑)

    あなたへのおすすめ