← Quantum Store · Rehberler · Dersler · Sözlük · Paketler · Öğrenme yolları · English
İleri kurs: Shor, VQE, QAOA ve kuantum yürüyüşleri · Ders 3 / 6 · 12 dk
VQE: bir molekülün en düşük enerjisini bulmak
Varyasyonel kuantum özdeğer çözücü (VQE) kuantum ve klasik bilgisayarı bir döngüde birleştirir. Varyasyon ilkesini öğren ve küçük bir problemin en düşük enerjisini Qiskit’le bul.
Kimya neden kuantum bilgisayar ister?
Bir molekülün nasıl davranacağını, örneğin bir ilacın bir proteine bağlanıp bağlanmayacağını, elektronlarının en düşük enerjili durumu (taban durumu) belirler. Elektronlar kuantum kurallarına uyduğu için bu durumu klasik bilgisayarda tam hesaplamak, elektron sayısı arttıkça üstel olarak zorlaşır.
Bir molekülün enerjisi, Hamiltonyen denen bir gözlemlenebilirle verilir. Qiskit’te Hamiltonyen, Qiskit kursunda gördüğün Pauli dizilerinin ağırlıklı toplamı olarak yazılır. Örneğin hidrojen molekülü (H₂), simetrilerle sadeleştirilince yalnızca iki kübitle temsil edilebilir.
Varyasyon ilkesi
Herhangi bir durumda ölçülen enerjinin beklenen değeri, taban durumunun enerjisinden asla düşük olamaz. Bu yüzden enerjiyi olabildiğince küçülten durumu ararsak taban durumuna yaklaşırız.
VQE bu fikri bir döngüye çevirir: kuantum bilgisayar parametreli bir devre (ansatz) hazırlar ve Estimator ile enerjiyi ölçer; klasik bir optimizasyon algoritması da açıları enerjiyi küçültecek yönde değiştirir. Bu döngü enerji daha fazla düşmeyene kadar sürer.
Qiskit’le küçük bir VQE
Aşağıda tek kübitlik bir H = Z + X Hamiltonyeni var; en düşük enerjisi −√2 ≈ −1,414’tür. Ansatz tek bir ry(θ) kapısıdır ve enerji cos θ + sin θ olur. COBYLA adlı klasik optimizasyon yöntemi θ’yı değiştirerek bu değeri küçültür ve −1,414’ü bulur.
import numpy as np
from scipy.optimize import minimize
from qiskit import QuantumCircuit
from qiskit.circuit import Parameter
from qiskit.primitives import StatevectorEstimator
from qiskit.quantum_info import SparsePauliOp
H = SparsePauliOp.from_list([('Z', 1.0), ('X', 1.0)])
theta = Parameter('theta')
ansatz = QuantumCircuit(1)
ansatz.ry(theta, 0)
estimator = StatevectorEstimator()
def energy(x):
return float(estimator.run([(ansatz, H, x)]).result()[0].data.evs)
result = minimize(energy, x0=[0.1], method='COBYLA')
print(result.fun, -np.sqrt(2)) # ikisi de yaklaşık -1.4142
Güçlü ve zayıf yanları
VQE kısa devreler kullandığı için bugünkü gürültülü cihazlarda denenebilir; bu yüzden 2014’te önerildiğinden beri en çok çalışılan algoritmalardan biridir. Ama her enerji ölçümü binlerce tekrar ister, ansatz kötü seçilirse doğru cevaba hiç ulaşılamaz ve büyük devrelerde “çorak plato” denen düzlüklerde optimizasyon takılabilir.
Bugüne kadar VQE ile çözülen moleküller klasik bilgisayarların da kolayca çözebildiği küçük moleküllerdir. Gerçek bir avantaj için daha büyük ve daha az gürültülü cihazlar gerekiyor.
Kendin dene
Bu devre (|0⟩ − |1⟩)/√2 durumunu kurar; X gözlemlenebilirinin en düşük enerjili durumu budur ve beklenen değeri −1’dir. “Durum vektörünü göster” düğmesiyle genliklerin 0,707 ve −0,707 olduğunu gör: VQE’nin aradığı da böyle en düşük enerjili bir durumdur.
Tarayıcıda dene (kurulum yok)Akılda kalsın
- Bir molekülün taban durumu enerjisi Hamiltonyen denen gözlemlenebilirle verilir; Pauli dizilerinin toplamı olarak yazılır.
- Varyasyon ilkesi: hiçbir durumun enerjisi taban durumu enerjisinden düşük olamaz.
- VQE’de kuantum bilgisayar enerjiyi ölçer, klasik optimizasyon açıları ayarlar.
- Kısa devreleri sayesinde bugünkü cihazlarda denenebilir, ama gerçek kimya avantajı henüz gösterilmedi.
Kendini sına
Varyasyon ilkesine göre bir ansatz ile ölçülen enerji için hangisi doğrudur?
- Taban durumu enerjisinden düşük olabilir
- Taban durumu enerjisinden asla düşük olamaz
- Her zaman sıfırdır
Cevabı göster
Taban durumu enerjisinden asla düşük olamaz. Her durumun enerjisi taban durumu enerjisine eşit ya da ondan büyüktür; VQE bu yüzden enerjiyi küçülterek taban durumuna yaklaşır.
← Shor algoritması: faz tahminiyle çarpanlara ayırma · QAOA: optimizasyon problemlerine kuantum yaklaşım →