← Quantum Store · Rehberler · Dersler · Sözlük · Paketler · Öğrenme yolları · English

Qiskit kursu: gerçek kuantum programlama · Ders 4 / 6 · 10 dk

Durum vektörü ve beklenen değer

Statevector ile ölçmeden önceki durumu gör, gözlemlenebilirleri SparsePauliOp ile yaz ve Estimator ile beklenen değerlerini hesapla.

Statevector: ölçmeden önceki durum

Sampler yalnızca ölçüm sonuçlarını verir. Simülasyonda ise ölçümden önceki bütün genlikleri de görebiliriz. Statevector devreyi ideal olarak hesaplar ve 2ⁿ genliğin hepsini verir. Devreye ölçüm ekleme: ölçüm durumu rastgele bir sonuca çöktürür, Statevector ise ölçümsüz bir devre ister.

Gerçek bir kuantum bilgisayarda durum vektörü doğrudan görülemez; yalnızca ölçüm sonuçları görülür. Ayrıca her yeni kübit belleği ikiye katlar, bu yüzden sıradan bir bilgisayar 30 kübit civarında tıkanır. Statevector küçük devreleri anlamak ve test etmek için birebirdir.

from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector

qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)            # ölçüm yok

sv = Statevector(qc)
print(sv)                       # 00 ve 11 için 0,707, diğerleri 0
print(sv.probabilities_dict())  # yaklaşık {'00': 0.5, '11': 0.5}

Gözlemlenebilir ve beklenen değer

Ölçüm sonuçlarına sayı değerleri verip ortalamasını alabiliriz. Z gözlemlenebilirinde 0 sonucu +1, 1 sonucu −1 sayılır. Kübit hep 0 veriyorsa beklenen değer +1, hep 1 veriyorsa −1, yarı yarıya ise 0’dır.

İki kübitte ZZ, iki bit aynıysa +1, farklıysa −1 sayar. Bell durumunda bitler her zaman aynı olduğu için ZZ’nin beklenen değeri +1’dir. Qiskit’te gözlemlenebilirler SparsePauliOp("ZZ") gibi Pauli dizileriyle yazılır ve bu diziler de sağdan sola okunur: "ZI", q1’e Z, q0’a hiçbir şey (I) uygular.

Estimator ile hesaplamak

StatevectorEstimator, bir devre ve gözlemlenebilirler listesi alıp her birinin beklenen değerini hesaplar. Bell durumu için ZZ +1, ZI 0 ve XX yine +1 çıkar. Kimya hesaplarında bir molekülün enerjisi de çok sayıda Pauli teriminin toplamı olarak yazılır ve Estimator ile hesaplanır; VQE gibi algoritmaların temeli budur.

from qiskit.primitives import StatevectorEstimator
from qiskit.quantum_info import SparsePauliOp

gozlemler = [SparsePauliOp('ZZ'), SparsePauliOp('ZI'), SparsePauliOp('XX')]
estimator = StatevectorEstimator()
result = estimator.run([(qc, gozlemler)]).result()
print(result[0].data.evs)   # yaklaşık [1. 0. 1.]

Kendin dene

Bell örneğinde 00 ve 11 hep birlikte çıkar: iki bit hep aynı olduğu için ZZ’nin beklenen değeri +1. Yazı-tura örneğinde 0 ve 1 yarı yarıya: Z’nin beklenen değeri (+1 − 1) / 2 = 0.

Tarayıcıda dene (kurulum yok)

Akılda kalsın

Kendini sına

Bell durumunda ZZ gözlemlenebilirinin beklenen değeri nedir?

Cevabı göster

+1. Bell durumunda yalnızca 00 ve 11 çıkar; iki bit her zaman aynı olduğu için ZZ her ölçümde +1 sayar ve ortalama +1 olur.

← Bit sırası: Qiskit sonuçlarını doğru okumak · Döndürme kapıları ve parametreli devreler →

Paylaş: X · LinkedIn