web-dev-qa-db-ja.com

量子コンピューティングはプログラミングをどのように変えますか?

量子アルゴリズムのプログラミングはどう違うのですか? Cライクな言語がキュービット用に設計されているとしたら、どのようなものでしょうかタイプは変わりますか?

33
MaiaVictor

少し前にこれを調べたとき、量子アルゴリズムは、特に高速ではありませんが、指数関数的に大規模な並列処理を許可していることが明らかでした。したがって、シーケンシャルハードウェアでは実用的ではないスペースでの検索を伴う場合や、大規模なパラレルシーケンシャルハードウェアでさえ、それらは優れています。

量子アルゴリズムの特性の1つは、可逆でなければならないことです。与えられたアルゴリズムは、逆方向に実行できるように十分なレコード保持を追加することにより、可逆的なアルゴリズムに変換できます。

もう1つの特性は、計算の最後に得られるのは複数の回答であり、それぞれが独自の確率を持つため、量子アルゴリズムから回答を取得することは、見当違いの問題であることです。あなたが望む答えが高い確率を持つような方法で実行する必要があります。これには、アルゴリズムを前後に複数回実行することが含まれる場合があります。

グローバーの検索アルゴリズム を確認してください。


挿入され、Groverのアルゴリズムの基本的な操作を示します。検索に問題があるとします。可能な答えは0、1、2、3ですが、rightの答えは2です。したがって、量子コンピューターは4つすべての重ね合わせに配置されます状態を示し、一連のステップを実行して正しいものを確認し、その振幅を反転します(下の黒い点と矢印のように)。

enter image description here

矢印2がマシンの内側で反転していることがわかりますが、外側にあるのは確率squared、そして二乗するとすべて等しい。

ただし、振幅には赤い線で示される平均値があり、コンピューターは、平均値の周りの各振幅を反転する一連のステップを実行するように作成できます。それが完了すると、振幅と確率が状態2に移行し、正解!したがって、マシンを監視すると、状態2が輝きます。

それほど簡単ではありません。一般に、正解の確率を最大化するために、マシンの複数のサイクル(前進および後退、各サイクルの終わりに反転)が必要です。また、同じ回数だけ元に戻すことができるため、その回数を超えないように注意する必要があります。

では、なぜ量子コンピュータは速いと言うのでしょうか。キュービットの数を2倍にするたびに、並列処理は2乗されますが、時間の長さは2乗されないため、最終的には勝ちます。

面白くないですか?


これがソフトウェアの正当性の検証にどのように適用できるかに個人的に興味を持っていました。ここで、ソフトウェアに一連のテスト入力をスローしてソフトウェアをテストし、(非常に簡単にするために)ソフトウェアがアサートにヒットするかどうかを確認します。量子コンピューターでは、より密度の高い入力セットに対して並列に実行し、それらのケースのいずれかがアサートにヒットするかどうかを確認することができます。

アルゴリズムへの入力が128バイトまたは1024ビットである場合と同様に、2 ^ 1024または10 ^ 308の異なる入力が可能です。多くの入力を従来のコンピューターでテストする方法はありませんが、量子コンピューターはすべてを並行して試すことができます。

17
Mike Dunlavey

Cライクな言語がキュービット用に設計されているとしたら、どのようなものでしょうか?タイプは変わりますか?

Cのように理解できないほど大幅に異なります。

(私が理解しているように)主な問題は、量子コンピューティングが「これを実行し、次にそれを実行し、それからこの他のことを実行する」という素晴らしい命令的な方法で機能しないことです。 Cの機能を量子コンピュータの「プロセッサ」に強制的に適用しようとすることは、不可能ではないにしても、非常に非効率的です。

量子コンピューティングのプログラミングアルゴリズム(ここでも、私が理解しているように)は、関数型プログラミングスタイルのmap/reduceに近い傾向があります。観察したとき。

量子コンピューターを実行するためのデバイスは存在しませんが、量子コンピューターにはいくつかの既存のアルゴリズムがあることに注意してください。 Simonのアルゴリズム たとえば。

7
Telastyn

量子コンピューターを可能な限り効果的に使用するには、量子レジスターの状態である入力と出力を処理できる必要があります。これには、古典的なアナログはありません。量子情報の分野での数年の経験から言えば、C *代数の抽象的な数学を超えてこれについて良い直感を持つ人は誰もいないということを警告しなければなりません。あなたが相対性理論について不思議に思っているなら。

量子コンピューターで効率的に解ける問題のクラスは、有界量子多項式のBQPとして知られています。これはBPPのクォンタムバージョンであり、このペーパーで詳細を確認できます。 http://www.scottaaronson.com/papers/bqpph.pdf

昨夜、量子アルゴリズムの研究者から、BQP完全な非常に重要な問題があると言われました。N方程式の線形システムを解くことです。古典的には、これはO(N)ガウス消去法のステップで解決できます。Harrow-Hassidim-Lloydアルゴリズム( http://arxiv.org/abs/0811.3171 )polylog(N)でそれを解決します。ただし、量子状態としてエンコードされた解を持つ回答を受け入れてもかまいません。したがって、量子コンピュータを最大限に活用したい場合は、対応する型が必要になるようです。量子レジスタの状態に。

私は今、私の専門知識から少し外れていますが、魔法の状態に対応する型にアクセスできれば、量子コンピューターをプログラミングできると思います。それは難しい概念ですが、それは主題のかなりの研究が必要です。

量子コンピューティング研究の非常に原始的な段階にいるため、量子プログラミング言語を使用してから非常に長い時間であることに注意してください。今すぐ量子Cを要求することは、アランチューリングに行ってPythonを設計するように依頼するようなものです。私たちはまだ真空管の量子バージョンさえ持っていません!

3
Kernel