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


15

最初のプログラム可能な量子フォトニックチップ」を読んだ後。量子エンタングルメントを使用するコンピューター用のソフトウェアはどうなるのかと思っていました。

特定の量子プログラミング用のコードの例はありますか?擬似コードや高級言語が好きですか?具体的には、ベル状態の作成に使用できる最短のプログラムは何に初期化状態からシミュレーションとIBMのの1両方使用して量子体験など、プロセッサをibmqx4

|ψ=12(|00+|11)
|ψ0=|00

従来のプログラミングからエンタングルメントへの概念的なジャンプをすることはそれほど簡単ではありません。


Cのlibquantumも見つけました。

回答:


12

ゲートベースの量子コンピューターを検討していると仮定すると、エンタグされた状態を生成する最も簡単な方法は、ベル状態の1つを生成することです。次の回路はベルの状態を示しています|Φ+

ベルステート

|ψ0|ψ1|ψ2

|ψ0

|ψ0=|00

|ψ1

アダマールゲートは最初のキュービットに適用され、次の結果になります。

|ψ1=H|00=H|0|0=12|0+|1|0=12|00+|10

|ψ2

これで、CNOTゲートが適用され、2番目のキュービットが反転されますが、最初のキュービットの値が1の場合のみです。結果は

|ψ2=12|00+|11

|ψ2

上記のアプローチは、通常の意味ではプログラミングのようには見えないかもしれませんが、ゲートを状態に適用することは、基本的に、ゲートベースの量子コンピューターのプログラミング方法です。高レベルのプログラミングを実行できるが、コマンドをゲートのアプリケーションに変換できる抽象化レイヤーが存在します。IBM量子経験インターフェイスは、このような機能を提供します。

MicrosoftのQ#のような言語では、上記の例は次のようになります。

operation BellTest () : ()
{
    body
    {
        // Use two qubits
        using (qubits = Qubit[2])
        {
            Set (One, qubits[0]);
            Set (Zero, qubits[1]);

            // Apply Hadamard gate to the first qubit
            H(qubits[0]);

            // Apply CNOT gate
            CNOT(qubits[0],qubits[1]);
         }
     }
}

より詳細なバージョン(測定を含む)は、Microsoft:Quantum Programの作成にあります。


14

量子プログラムを作成する1つの方法は、QISKitを使用することです。これを使用して、IBMのデバイスでプログラムを実行できます。QISKitのウェブサイトは、あなたが望むように絡み合っ回路であるにはあなたが軌道に乗る次のコードスニペットを、示唆しています。また、datellによる回答と同じプロセスです。行ごとにコメントします。

# import and initialize the method used to store quantum programs
from qiskit import QuantumProgram
qp = QuantumProgram()
# initialize a quantum register of two qubits
qr = qp.create_quantum_register('qr',2) 
# and a classical register of two bits
cr = qp.create_classical_register('cr',2) 
# create a circuit with them which we call 'Bell'
qc = qp.create_circuit('Bell',[qr],[cr]) 
# apply a Hadamard to the first qubit
qc.h(qr[0]) 
# apply a controlled not with the first qubit as control
qc.cx(qr[0], qr[1]) 
# measure the first qubit and store its result on the first bit
qc.measure(qr[0], cr[0]) 
# the same for the second qubit and bit
qc.measure(qr[1], cr[1]) 
# run the circuit
result = qp.execute('Bell') 
# extract the results
print(result.get_counts('Bell')) 

ここでの「実行」コマンドは、実行するプログラムのみを指定することに注意してください。使用するデバイス、統計を取得するためにデバイスを繰り返し使用する回数など、他のすべての設定はデフォルト値に設定されます。1024ショットのibmqx4で実行するには、代わりに次を使用できます。

results = qp.execute(['Bell'], backend='ibmqx4', shots=1024)

4

私が考えることができる最も単純な量子プログラムは、(1ビット)真の乱数ジェネレータです。量子回路としては、次のようになります。

|022|0+|1|0|1

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