量子アルゴリズムのプログラミングはどう違うのですか?量子ビット用に設計された場合、Cライクな言語はどのようになりますか?タイプは変わりますか?
量子アルゴリズムのプログラミングはどう違うのですか?量子ビット用に設計された場合、Cライクな言語はどのようになりますか?タイプは変わりますか?
回答:
少し前にこれを調べたとき、量子アルゴリズムは、特に高速ではありませんが、指数関数的に大規模な並列処理を可能にすることは明らかでした。したがって、それらは、シーケンシャルハードウェアでは実用的ではないスペースでの検索を含む場合、さらには超並列シーケンシャルハードウェアでさえも、光ります。
量子アルゴリズムの1つの特性はそれらが可逆でなければならないということです。所定のアルゴリズムは、逆方向に実行できるように十分な記録保持を追加することにより、可逆アルゴリズムに変換できます。
もう1つの特性は、量子アルゴリズムから答えを取得することは、ミスアンドミスの問題であることです。計算の最後に取得するのは、それぞれ独自の確率を持つ複数の答えです。希望する答えが高い確率で実行されるように実行する必要があります。これには、アルゴリズムを複数回前後に実行することが含まれる場合があります。
Groverの検索アルゴリズムをご覧ください。
Groverのアルゴリズムの基本的な動作を示すために挿入されました。検索に問題があるとします。可能な答えは0、1、2、および3ですが、正しい答えは2です。したがって、量子コンピューターは4つの状態すべての重ね合わせに置かれ、正しい状態を確認するために一連の手順を実行します。下の黒い点と矢印のように、振幅を反転します:
あなたが見ることができる唯一の確率が見え外であるため、振幅がされ、その矢印2は、マシン内で反転しているが、その外に伝える方法はありません乗、およびとき、彼らはすべて等しい平方しました。
ただし、振幅には平均値があり、赤い線で示されており、コンピューターは平均値を中心に各振幅を反転させる一連のステップを実行することができます。それが完了すると、振幅と確率が状態2に移行し、正しい答えが得られます。そのため、マシンが観察されると、状態2が輝いています。
それほど単純ではありません。一般に、正解の確率を最大化するには、マシンの複数のサイクル(順方向と逆方向)を行い、各サイクルの終わりに反転します。また、同じ回数だけそれを簡単に元に戻すことができるため、その回数を超えないように注意する必要があります。
それでは、なぜ量子コンピューターはこんなに速いと言うのでしょうか?なぜなら、キュービットの数を2倍にするたびに、並列度は2乗するが、時間の長さは2乗しないため、最終的には勝つからです。
そんなに面白くないですか?
私は、これがソフトウェアの正確性の検証にどのように適用できるかについて個人的に興味がありました。次に、ソフトウェアをテストします。テスト入力の束を投げて、(非常に単純に)Assertにヒットするかどうかを確認します。量子コンピューターでは、より高密度の入力セットに対して並行して実行し、それらのケースのいずれかがアサートにヒットするかどうかを確認できる場合があります。
アルゴリズムへの入力が128バイト、つまり1024ビットの場合、2 ^ 1024または10 ^ 308の異なる入力が可能です。従来のコンピューターでそのような多くの入力をテストする方法はありませんが、量子コンピューターはそれらをすべて並行して試すことができます。
量子ビット用に設計された場合、Cライクな言語はどのようになりますか?タイプは変わりますか?
Cのように理解できないほど劇的に異なるでしょう。
主な問題(私が理解しているように)は、量子コンピューティングが「これをして、それから、この他のこと」をすてきな命令的な方法で動作しないことです。量子コンピューターの「プロセッサー」にそれを行うCの能力を強制しようとすることは、不可能ではないにしても、非常に非効率的です。
量子コンピューターのプログラミングアルゴリズム(これも私が理解しているように)は、関数型プログラミングスタイルのmap / reduceに近い傾向があります。これは、量子コンピューティングにより、「reduce」部分のすべての候補が同時に存在し、コンピューターから「抜け出す」ためです。観察されたとき。
量子コンピューターには既存のアルゴリズムがいくつかありますが、それらを実行するデバイスは存在しません。たとえば、サイモンのアルゴリズム。
量子コンピューターを可能な限り最も効果的に使用するためには、量子レジスターの状態である入力と出力を処理できる必要がありますが、実際には古典的なアナログはありません。量子情報の分野での長年の経験から言えば、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を設計するように頼むようなものです。真空管の量子バージョンもまだありません!