量子コンピューティングはプログラミングをどのように変えますか?[閉まっている]


33

量子アルゴリズムのプログラミングはどう違うのですか?量子ビット用に設計された場合、Cライクな言語はどのようになりますか?タイプは変わりますか?


注:これが有効な質問かどうかはわかりません。そうでない場合は申し訳ありません。
MaiaVictor

4
私はそう思う。繰り返しになりますが、このサイトのルールはあまりよくわかりません。そして、私は本当にこの質問への偉大な答えを持っていないが、私ははるかに効率的因子整数に使用することができ、このアルゴリズムを知っている:arxiv.org/abs/0812.0380
ジョン・デイビス

3
このトピックはまだ科学研究ですが、仮想量子コンピューターの基礎はよく知られているので、ドメイン専門家(私はそうではありません)が質問に答えるべきだと思います。だから私はそれを閉じないことに投票する。
Doc Brown

回答:


17

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

量子アルゴリズムの1つの特性はそれらが可逆でなければならないということです。所定のアルゴリズムは、逆方向に実行できるように十分な記録保持を追加することにより、可逆アルゴリズムに変換できます。

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

Groverの検索アルゴリズムをご覧ください。


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

ここに画像の説明を入力してください

あなたが見ることができる唯一の確率が見え外であるため、振幅がされ、その矢印2は、マシン内で反転しているが、その外に伝える方法はありません、およびとき、彼らはすべて等しい平方しました。

ただし、振幅には平均値があり、赤い線で示されており、コンピューターは平均値を中心に各振幅反転させる一連のステップを実行することができます。それが完了すると、振幅と確率が状態2に移行し、正しい答え得られます。そのため、マシンが観察されると、状態2が輝いています。

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

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

そんなに面白くないですか?


私は、これがソフトウェアの正確性の検証にどのように適用できるかについて個人的に興味がありました。次に、ソフトウェアをテストします。テスト入力の束を投げて、(非常に単純に)Assertにヒットするかどうかを確認します。量子コンピューターでは、より高密度の入力セットに対して並行して実行し、それらのケースのいずれかがアサートにヒットするかどうかを確認できる場合があります。

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


2
Groverの検索アルゴリズムをご覧ください... 準備ができていませんでした!
フィリップ

1
@Philip:数学はかなり不愉快なことを知っていますが、重要な考え方は平均を中心とした回転であり、確率を回答状態に移す効果があります。次に、最初に戻って前方に実行し、特定の回数だけ再度実行します。次に、観察を行うと、回答状態が表示される確率が最大になります。
マイクダンラベイ

そうですね、そんなことを言ってもそれほど悪くはありません。私は彼らが使用している表記法や量子回路に慣れていないのだと思います。量子アルゴリズムのページも同様に威圧的です。Qubitが出発点だと思います。(単純なウィキペディアにはQuantumコンピューターのページがありますが、いくつかの作業を使用できます)
フィリップ

@Philip:1024エントリのテーブルがあるとすると、インデックスを作成するには10ビットかかります。10(qu)ビットのレジスタがあり、1024の可能な状態があります。それでは、レジスタが0であるユニバース、1であるユニバースを作成し、最大1024個のパラレルユニバースを作成します。次に、量子「命令」がこれらすべてに対して並行して動作します。各宇宙には「振幅ベクトル」があり、その大きさはその確率ですが、方向もあり、それらは操作されています。1024個のベクトルのコレクションにはゼロ以外の平均ベクトルがあるため、回転により1つが大きくなり、残りが小さくなります。
マイクダンラベイ

私は改革された物理学者であり、誤解を招くのでこの答えを否定しました。1)量子アルゴリズム特に(漸近的に)高速です-グローバーの検索アルゴリズムはO(sqrt(n))で実行されますが、古典的なコンピューターでできることはO(n)です。量子コンピューターが漸近的に高速でなければ、それらはあまりおもしろくないでしょう。ハードウェアは現在遅いかもしれませんが、それはアルゴリズムのせいではありません!
ベンジャミンホジソン

7

量子ビット用に設計された場合、Cライクな言語はどのようになりますか?タイプは変わりますか?

Cのように理解できないほど劇的に異なるでしょう。

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

量子コンピューターのプログラミングアルゴリズム(これも私が理解しているように)は、関数型プログラミングスタイルのmap / reduceに近い傾向があります。これは、量子コンピューティングにより、「reduce」部分のすべての候補が同時に存在し、コンピューターから「抜け出す」ためです。観察されたとき。

量子コンピューターには既存のアルゴリズムがいくつかありますが、それらを実行するデバイスは存在しません。たとえば、サイモンのアルゴリズム


量子アルゴリズムのELI5は素晴らしいでしょう。
MaiaVictor

3

量子コンピューターを可能な限り最も効果的に使用するためには、量子レジスターの状態である入力と出力を処理できる必要がありますが、実際には古典的なアナログはありません。量子情報の分野での長年の経験から言えば、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を設計するように頼むようなものです。真空管の量子バージョンもまだありません!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.