非常に単純な量子プログラムはどのようなものでしょうか?


76

世界初のプログラム可能な量子フォトニックチップの発表に照らして、量子エンタングルメントを使用するコンピューター用のソフトウェアはどのようなものになるのだろうと思いました。私が今までに書いた最初のプログラムの1つは

for i = 1 to 10
  print i
next i

擬似コードまたは高級言語で、量子フォトニックチップ(または同様のハードウェア)を利用する、同等の単純さのコードの例を挙げることができますか?従来のプログラミングからエンタングルメントなどへの概念的なジャンプを行うのが困難です。


あなたのリンクが壊れている
スレシュヴェンカト

1
この質問の+1と。チューリングマシンのパラダイムとは異なるパラダイムの下でのプログラミング言語については非常に興味がありますが、量子コンピューターで実際にコードを実行することはできません。
ジャノマ

回答:


60

警告Emptor:以下は、私自身の研究とQCの分野に関する見解に大きく偏っています。これは、この分野の一般的なコンセンサスを構成するものではなく、自己宣伝が含まれる場合もあります。

量子コンピューティングの「ハローワールド」を示す問題は、ライプニッツまたはバベッジが現在のコンピューターから離れていたのと同じくらい基本的に量子コンピューターから遠いということです。それらが理論的にどのように動作するかはわかっていますが、物理的な量子コンピューターを実際に構築する標準的な方法はありません。その副作用は、量子コンピューティングの単一のプログラミングモデルがないことです。ニールセンなどの教科書 「量子回路」図が表示されますが、これらは正式なプログラミング言語とはほど遠いものです。古典的な制御や入力/出力/測定結果の処理などの詳細について少し「手を振る」ことができます。

プログラミング言語のコンピューター科学者としての私の研究で私に最も適しているのは、QCの精神を他のコンピューター科学者に伝えるために、私が遭遇した最も単純なQCモデルを使用することです。

すべての重要な要素を含む最も単純な量子計算プログラムは、私が遭遇した最も単純な量子プログラミングモデルの小さな3命令プログラムです。基本を理解するために「こんにちは世界」と同じように使用します。

ダノス他による測定計算の簡単な要約を簡単に与えさせてください。 基づいている1は一方向量子コンピューターに基づいています2:量子ビットは測定時に破壊されますが、それを測定すると、量子ビットと絡み合った他のすべての量子ビットに影響します。フォトニックチップによって実現される「回路ベース」の量子コンピューターよりも理論的および実用的な利点がいくつかありますが、それは別の議論です。

N、E、M、X、Zの5つの命令しか持たない量子コンピューターを考えてみましょう。その「アセンブリ言語」は通常のコンピューターに似ています。1つの命令を実行すると、シーケンス内の次の命令に進みます。各命令は、ターゲットの量子ビット識別子を取ります。ここでは、数字と他の引数のみを使用します。

N 2          # create a new quantum bit and identify it as '2'
E 1 2        # entangle qubits '1' and '2', qubit 1 already exists and is considered input
M 1 0        # measure qubit '1' with an angle of zero  (angle can be anything in [0,2pi]
             # qubit '1' is destroyed and the result is either True or False
             # operations beyond this point can be dependent on the signal of '1'
X 2 1        # if the signal of qubit '1' is True, execute the Pauli-X operation on qubit '2'

したがって、上記のプログラムは補助器を作成し、入力キュービットと交絡させ、入力を測定し、測定結果に応じて補助器で操作を実行します。その結果、アダマール操作後のキュービット2にキュービット1の状態が含まれるようになります。

上記は当然、手作業でコーディングしたくないほど低いレベルです。測定計算の利点は、サブルーチンと同様に、より大きなアルゴリズムを作成できる、ある種の構成可能なマクロである「パターン」を導入することです。1命令パターンから始めて、そこからより大きなパターンを成長させます。

アセンブラーのような命令シーケンスの代わりに、プログラムをグラフとして書き留めることも一般的です。

 input                .........
    \--> ( E ) ---> (M:0)     v
(N) ---> (   ) ------------> (X) ---> output

ここで、完全な矢印はキュービット依存性であり、点線の矢印は「信号」依存性です。

以下は、「量子プログラマー」が使用すると想像するのと同じ小さなプログラミングツールで表現された同じアダマールの例です。

測定計算ツール

編集:(「古典的な」コンピューターとの関係を追加する)古典的なコンピューターは、最善を尽くすという点で依然として非常に効率的であるため、量子コンピューターを使用して特定のアルゴリズムをオフロードすることが、現在のコンピューターがグラフィックをGPU。上記で見たように、CPUは命令ストリームを送信して量子コンピューターを制御し、ブール値の「信号」から測定結果を読み返します。このようにして、CPUと量子状態による古典的な制御と量子コンピューターへの影響を厳密に分離できます。

たとえば、量子コプロセッサを使用して、ランダムなブール値またはコイントスを計算します。古典的なコンピューターは決定論的であるため、良い乱数を返すのは苦手です。量子コンピューターは本質的に確率論的ですが、ランダムな0または1を得るために私がしなければならないことは、均等にバランスの取れたキュービットを測定することです。CPUと「QPU」間の通信は次のようになります。

 qrand()       N 1; M 1 0;
 ==>  | CPU | ------------> | QPU |  ==> { q1 } ,  []
                 start()
      |     | ------------> |     |  ==> { } , [q1: 0]
                 read(q1)         
      |     | ------------> |     |
                  q1: 0 
 0    |     | <-----------  |     |
 <==

{ ... }量子ビットを含むQPUの量子メモリはどこにあり、[...]ブール値を含むその古典的な(信号)メモリはどこにありますか。


  1. ダノス等。測定計算。arXiv(2007)vol。quant-ph
  2. ラウセンドルフとブリーゲル。一方向の量子コンピューター。フィジカルレビューレター(2001)vol。86(22)pp。5188-5191

トピックに関する素晴らしい議論、ありがとう、ビーフ。ところで、OPは「伝統的なプログラミングからエンタングルメントなどへの概念的なジャンプをするのが難しい」と語っています。したがって、その移行に役立つものは歓迎すべきです。
クリス

そうだね、私は実際に恥のために、その部分を逃しているように見えた:/paragraph.≈を追加
牛肉

「N、E、M、X、Zの5つの命令しか持たない量子コンピューターを検討してください。」命令の説明なしZ :(
フェルナンドゴンザレスサンチェス

ZはXによく似ています;) en.wikipedia.org/wiki/Pauli_matrices X操作はベクトル[ab]を[ba]に変換し、Z操作はベクトル[a -b]に変換します。
牛肉

21

Cのlibquantum、Haskellの量子モナド、またはPerlのQuantum :: Entanglementはすべて量子計算を忠実に表していると思います。あなたは彼らの例を見るかもしれません。

一般に、量子アルゴリズムは、量子システムの状態を表すスーパーポジションに一連の線形演算子を適用する古典的なアルゴリズムとして説明します。雑誌の記事では、量子ビット/レジスターの行と線形演算子のボックスを含む回路がよく描かれています。

もちろん、難しい部分はアルゴリズムを説明することではなく、確率論的アルゴリズムのように、なぜ機能するのかを理解することです。私は常にグローバーのアルゴリズムを非常に理解しやすいと考えてきました。また、Shorのアルゴリズムで使用される量子フーリエ変換について読むこともできます。




3

答えは「単純な古典的なプログラムによく似ている」と思います。

単純に型付けされたラムダ計算(製品を含む)を古典的プログラミングの中心と考えると、それが閉じたデカルトカテゴリの内部型理論であることを活用できます。

つまり、物理学では、量子物理学に関連する代数構造は、対称モノイドのカテゴリ理論でモデル化されることがよくあります。(Hilb Cob、Tang参照してください。)また、対称モノイダルカテゴリは、デカルトカテゴリの前のステップにすぎません(複製と削除を追加するだけです)。nkk

それで、STLCがデカルト閉カテゴリーに対するものである場合、閉対称モニダルカテゴリーに対するものは何でしょうか?さて、対称モノイドの内部ロジックがMILLであることはわかっています。したがって、MILLに対応する型理論、つまり線形型理論が必要です。

抽象的なナンセンスから離れて、線形型理論で何が得られるでしょうか?直線性。リソースの直線性が得られます。そして、これはまさに私たちが望むものです。量子ビットを複製することはできません。暗黙的に測定することはできません。また、直線性は、削減中にこれらのいずれも実行できないことを意味します。

線形型理論に関するいくつかの研究がありましたが、トンではありませんでした。この記事では、物理学、トポロジ、ロジック、計算:マイクステイとジョンバエズによるロゼッタストーンのアイデアを手に入れました。


0

おそらく、単純な「小さなnで割る」カウンターの実装から始めます。

たとえば、10GHzのソースが与えられた場合、5GHzの出力を生成します(ただし、これらの数値は任意であり、概念を説明するためのものです)。

これにより、ストレージやVon Neumannアーキテクチャなどの問題を無視し、コンポーネントが実際に理解できることを実際に行っているかどうかに集中できます。

次の目標は、「small n」の小さなレパートリーを構築することです(ただし、研究者からの反論も聞きます-他の小さな目標がより実りあると感じた場合、私は確かに理解したいと思います彼らが私に言っていたこと。)

長期的な目標には、システムに情報を出し入れするためのメカニズムが含まれ、その情報を使用するのに十分な時間その情報を保持することが含まれます。

(おそらく、初期のコンピュータープログラムはすべて "ハードワイヤード"であったことを覚えておく価値があります。これらのシステムで広範な経験を積んだ後、ストアドプログラムを実装できました。)


-6

量子コンピューターのプログラミングは、通常のオブジェクト指向プログラミングとは異なる観点から見られるべきだと思います。

QCには、脳が考え、決定するのと同じ能力があります。考えることを意味する能力は、可能な選択であるデータのソースをデータマイニングする力を持ち、すべての可能な状態からどれを選ぶかを決定します。

この時点でのソフトウェアは、キュービットがデータのソースを表し、他のデータグループとデータマイニングおよびエンタングルできるようにアーキテクチャ化する必要があります。

QCには、データ読み取りを処理するデータマイナーが必要です。異なるオプションを、情報を提示するデータソースの異なるグループにリンクし、すべての可能な状態を読み取り、どの状態を続行するかを選択します。

それが私たちの脳の仕組みです。QCは、量子力学の法則を理解し、それに応じて行動することができます。つまり、問題を提示し、QCはそれを解決するためのすべての可能な解決策を示します。

QCがどれほど強力か、同意しますか?

https://www.cs.rutgers.edu/~mlittman/papers/openhouse11.pdf これが開始点です。次に、ゲートなどで量子デバイスを構築するデータマイナーを作成し、データマイナーに接続されたリーダーを読み取り、フィードバックを提供します。クォンタムデータソースコンポーネントホストデータと、データマイナーが行動する知識の範囲。

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