Çok basit bir kuantum programı nasıl olurdu?


15

" İlk programlanabilir kuantum fotonik çip " okuduktan sonra . Kuantum dolaşıklığı kullanan bir bilgisayar için hangi yazılımın nasıl olacağını merak ediyordum.

Spesifik kuantum programlama için herhangi bir kod örneği var mı? Sahte kod veya üst düzey dil gibi mi? Özellikle, bir Bell durumu oluşturmak için kullanılabilecek en kısa program nedir başlatılabilecektir bir durumdan başlayarak| ψ0=| 00bir simülasyon ve IBM'in birini ikisini de kullanarakKuantum Deneyimgibi işlemcileribmqx4?

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

Geleneksel programlamadan dolaştırmaya kavramsal bir sıçrama yapmak o kadar kolay değil.


C'nin libquantum'unu da buldum .

Yanıtlar:


12

Geçit tabanlı bir kuantum bilgisayarı düşündüğünüzü varsayarsak, entagled bir durum üretmenin en kolay yolu Bell durumlarından birini üretmektir. Aşağıdaki devre Bell durumunu gösterir .|Φ+

Bellstate

|ψ0|ψ1|ψ2

|ψ0

|ψ0=|00

|ψ1

Hadamard Kapısı ilk kubit üzerinde uygulanır ve bu da aşağıdakilerle sonuçlanır:

|ψ1=(HI)|00=H|0|0=12(|0+|1)|0=12(|00+|10)

|ψ2

Şimdi bir CNOT geçidi uygulanır ve ikinci kubit çevrilir, ancak sadece birincisi 1 değerine sahipse sonuç.

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

|ψ2

Yukarıdaki yaklaşım her zamanki gibi size programlama gibi görünmese de, durumlara kapıları uygulamak temelde kapı tabanlı bir kuantum bilgisayarı programlamanın nasıl çalıştığıdır. Üst düzey programlama yapmanıza izin veren ancak komutları kapıların uygulamasına çevirmenize izin veren soyutlama katmanları vardır. IBM Kuantum Deneyim arabirimi tür özellikler sağlar.

Microsoft'un Q # gibi bir dilde yukarıdaki örnek şuna benzer:

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]);
         }
     }
}

Daha ayrıntılı bir sürümü (ölçüm dahil) burada bulabilirsiniz: Microsoft: Bir Kuantum Programı Yazma .


14

Kuantum programları yazmanın bir yolu QISKit'tir. Bu, IBM cihazlarındaki programları çalıştırmak için kullanılabilir. QISKit web sitesi istediğiniz gibi sarmalanmış bir devre için olacak sizin Aşağıdaki kod parçacığını, önerir. Aynı zamanda datell'in cevabı ile aynı süreçtir. Buna satır satır yorum yapacağım.

# 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')) 

Buradaki 'execute' komutunun yalnızca çalıştırılacak programı belirttiğini unutmayın. Kullanmak istediğiniz cihaz, istatistik almak için tekrarlama sayısı gibi diğer tüm ayarlar varsayılan değerlerine ayarlanır. 1024 çekim için ibmqx4 üzerinde koşmak için

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

4

Aklıma gelen en basit kuantum programı (1-bit) gerçek rasgele sayı üretecidir. Bir kuantum devresi olarak şöyle görünür:

|022(|0+|1)|0|1

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.