量子コンピュータの量子ビット、つまりキュービットは情報を確率(あるいは全ての組み合わせ)で表現できるので、変数を含む計算式を計算する専用の演算回路を作り、この回路の出力結果と正しい計算結果を照合できる回路を組み合わせることができれば、1回の試行で全ての組み合わせを実行できるハズだから、1回の試行時間で結果が出せるハズである。判りやすい例を挙げれば、X×Y=Zの計算式の回路を作り、Z=xxxx・・・xxxxxx と設定して、無数のXとYの組み合わせを計算させ、Z=xxxx・・・xxxxxxと一致するXとYを得ることができそうである。※但し、計算結果が1個に収束しないこともあるので、照合回路の設計要件を容易には定義できない。普通に素因数分解するなら変数の数をいっぱい増やさないといけないので回路が複雑になるから、簡素な回路にするためにはXとYの正しい組み合わせが1通りという前提が必要。
しかし、これでは特定の目的のためのアクセラレータでしかなく、仮に配線の見直しをすればプログラミングできるとしても、それは量子コンピュータ版のエニアックを復刻したようなものだ。
つまり、今のパソコンのように自分の目的のためのプログラムを自分のためだけに実行できるものではないので、お金持ちな国家の軍隊とか諜報組織や巨大な企業の御用達品だと思う。
では、今のパソコンのようにメモリにプログラムを内蔵(ストア)できる量子コンピュータは無理なのだろうか?一番効果がありそうなのは大量のポリゴンを処理して作る3DCG映像を作るグラボだろう。
もしポリゴンも3DCG結果も全て量子メモリ化すれば、1度の試行でレンダリング処理を完了するのだろうか?そんなことはない。全ての可能性を確率で表現できる量子メモリを使って処理するのだから、ポリゴンのあらゆる可能性を一度に計算させれば、訳が判らない結果しか出てこないので、正しい3DCG結果と照合する必要があるが、そんなものがあればそもそも演算する必要がないし、仮にポリゴンの全ての可能性を何等かの方法で絞り込もうとすれば・・・特定のパターンに反応するように回路を変更(プログラミング)できる必要があるだろうから、数万規模のポリゴンでも、とんでもない規模のグラボになるだろう。もちろんFPGAっぽい量子コンピュータもありと云えばありだが、3DCGの動画をレンダリングする度に回路データをロードしなおすのはとてもナンセンスな気がするし、結局のところローディング時間を考えれば、1ポリゴンづつ処理したって同じであり、全くの無駄な気がする。
仮に1ポリゴンづつ順に計算させ、1度に1画面分の結果をZバッファに格納させれば、回路の規模が大幅に減るものの、現在のウルトラハイエンド程度しか性能が出ないだろう。逆に全ポリゴンを量子メモリに入れたとしてもそれを同時に処理させようとすれば、今度は画面の1ドットに対応した結果しか得られず、結局フルHDなモニターなら回路を1920×1080分のループを回さないといけなくなるので、ポリゴン数がある程度の規模に達しない場合は沢山のプロセッサが分担処理する現行のクラボ未満に陥ることもあるだろう。
な感じなので、
今のデジタルな処理を量子コンピュータで超高速に処理できそうな気が全くしないのである。
何かよい方法がないものかな・・・
例えば、
量子ゆらぎの関係にある光子同士は緊密な関係だが、そうではない光子同士は疎遠になる、そんな特徴を持つ量子演算回路が作れれば、互いに不干渉な状況にある大量のスレッドを1つの演算回路に送り込むことが可能だろう。普通のCPUはともかく簡単なCPUなら10数種類の命令があれば使い物になるだろう。そんな簡単な量子演算なCPUを作り、デジタルな処理の並列化に特化した量子コンピュータならば、システム周波数もケタ外れに高速。(かもしれない
そして、数億のスレッド(量子ゆらぎ状態にある光子の集まり)がスレッド毎のプログラムカウンタが示す先のアドレスにある命令に沿って分岐して処理することができれば・・・
超高速な量子コンピュータなグラボも夢ではないのかもしれない。
てか、データセンターが1個の量子コンピュータで代用できてしまいそう。
多分、実用化しても、とってもお高いんでしょうね。(大笑