← 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
- Statevector ölçümsüz bir devrenin bütün genliklerini verir; yalnızca simülasyonda mümkündür.
- Z gözlemlenebilirinde 0 sonucu +1, 1 sonucu −1 sayılır; beklenen değer bunların ortalamasıdır.
- SparsePauliOp("ZZ") gibi Pauli dizileri de sağdan sola okunur: en sağdaki harf q0’a aittir.
- Estimator beklenen değerleri hesaplar; kimya ve VQE gibi uygulamaların temelidir.
Kendini sına
Bell durumunda ZZ gözlemlenebilirinin beklenen değeri nedir?
- 0
- +1
- −1
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 →