Karmaşık katsayılara sahip Hamilton simülasyonu


12

Bir varyasyon algoritmasının bir parçası olarak, formun bir Hamiltonianını simüle eden bir kuantum devresi (ideal olarak pyQuil ile ) oluşturmak istiyorum:

H=0.3Z3Z4+0.12Z1Z3+[...]+11.03Z310.92Z4+0.12iZ1Y5X4

Son terim söz konusu olduğunda, sorun pyQuil'in aşağıdaki hatayı atmasıdır:

TypeError: PauliTerm coefficient must be real

Literatüre dalmaya başladım ve bu önemsiz bir sorun gibi görünüyor. Bu makaleye, karmaşık kodları gerçek kodlamaların yanı sıra yerel kodlamaların tartışıldığı evrensel kuantum Hamiltonyanlar hakkında rastladım . Ancak, bunun gibi bir şeyi pratik olarak nasıl uygulayacağı hala net değil. Birisi bana bu sorunun nasıl çözüleceğine dair pratik tavsiyeler verebilir mi?


1
İ i ile değiştirdiğinizde bir hata veriyor mu? Sj2(XjSjXj)2
AHusain

3
Bir Hamiltonyen'in Hermityalı olması gerektiğini unutmayın. Bu sadece katsayıların gerçek olduğu doğrudur.
DaftWullie

1
için senden farklı bir tanım kullanıyor olabilirim . Ama asıl nokta i I d 2 ile sonuçlanan bir kombinasyon bulabilmenizdir . SiId2
AHusain

1
Bu yerde başka bir terim yok mu, Hermityan eşleniği mi? H = i A B - i B A H=iABiBA
AHusain

1
Yoksa formun tüm şartları iptal edilecek şekilde mi?
AHusain

Yanıtlar:


10

Geleneksel bir Hamiltoniyen Hermityan'dır. Bu nedenle, Hermityan olmayan bir terim içeriyorsa, başka bir terim olarak Hermitiyen çağrışımını da içermeli veya 0 ağırlığa sahip olmalıdır. Bu özel durumda, Hermityan'ın kendisi olduğu için, katsayının 0 olması gerekir. Bu nedenle, geleneksel Hamiltonyalılardan bahsediyorsanız, muhtemelen hesaplamalarınızda bir hata yaptınız. Terimin Hermitiyen eşleniği yoksa, şeyleri ekleyerek düzeltemezsiniz; size tamamen farklı bir sonuç verecektir.ZXY

Öte yandan, Hermitili olmayan bir Hamiltonyen uygulamak isteyebilirsiniz . Bunlar, genellikle gürültü süreçlerinin tanımlanması için mevcuttur, ancak neredeyse o kadar yaygın değildir. Açıkça "Hermityan olmayan" terminolojisini eklemeniz gerekir, aksi takdirde herkes sadece yaptığınız şeyin yanlış olduğunu düşünür, çünkü bu Hermityan değildir ve Hamiltonyalılar Hermityan olmalıdır. Çeşitli simülatörlerin hangi yetenekleri sağladığına çok aşina değilim, ancak yerleşik Hermitisite olmayanlar varsa şaşırırdım.

Ancak, deterministik olmayan uygulama pahasına bunu simüle edebilirsiniz. Orada bundan daha (bağlantılara bakın daha sofistike yöntemler olacak bu cevap ) ancak bana tarif edelim özellikle basitçe tek: Ben sadece bir sigara Hermitsel bileşeni var kabul edeceğim Paulis (a tensör ürün ). Paulis K'nin bu tensör ürünü diyeceğim . Hamiltonyanın geri kalanı H'dir . Evrimi yaratmak istiyorsunuz e - i H t + K t Evrimi tırmandırarak başlıyoruz, e - i H t + K t = Ni×KH

eiHt+Kt
buradaNδt=t. Şimdi bireysel bir terimi simüle etmeye çalışıyoruz:e-iHδt+Kδte-iHδteKδt(büyükN'dedaha doğru olur). Hermitian kısmıyla nasıl başa çıkacağınızı zaten biliyorsunuz, bu yüzdeneKδt=
eiHt+Kt=i=1NeiHδt+Kδt
Nδt=teiHδt+KδteiHδteKδtN
eKδt=cosh(δt)I+sinh(δt)K.

Biz devlette bir ancilla kübit tanıtmak ve biz bir kontrollü kontrol QuBit olarak kullanmak K kapısı. Sonra ancilla { | ψ , | ψ } baz (burada ψ | ψ = 0 ). Sonuç ise | ψ , ardından hedef qubits biz operasyon uygulamış | α ||ψ=α|0+β|1K{|ψ,|ψ}ψ|ψ=0|ψ , normalleşmeye kadar. Yani, ( 1 - | α | 2 ) / | α | 2 = tanh ( δ t ) , bu işlemi mükemmel bir şekilde uyguladınız. Ölçüm başarısız olursa, kurtarmayı denemek (bu mümkün olmayabilir) veya tekrar başlamak isteyip istemediğiniz size bağlıdır.|α|2I+|β|2K(1|α|2)/|α|2=tanh(δt)


3

i0.12Z1Y2X3

z=[1 0 ; 0 -1];
x=[0 1;  1  0];
y=[0 -1i; 1i 0];

z1 = kron(z,eye(4));
y2 = kron(kron(eye(2),y),eye(2));
x3 = kron(eye(4),x);

H=0.12*1i*z1*y2*x3

Çıktı H:

    0     0    0 0.12    0    0     0     0
    0     0 0.12    0    0    0     0     0
    0 -0.12    0    0    0    0     0     0
-0.12     0    0    0    0    0     0     0
    0     0    0    0    0    0     0 -0.12
    0     0    0    0    0    0 -0.12     0
    0     0    0    0    0 0.12     0     0
    0     0    0    0 0.12    0     0     0

Gerçek bir matris olduğundan, Hermitian simetrik anlamına gelir, ancak bu simetrik değildir ve bu nedenle Hermitian değildir. Sağ üst üçgen sağ alt üçgene eşit değil.

Bununla birlikte, sağ üst üçgen sağ alt üçgenin negatifidir , bu yüzden anti-Hermitiyen'dir.

AHussain'in konjugat transpozisyonu ekleme önerisini yapmak 0 sonucunu verir. Sadece şu komutu çalıştırın:

H + H'

ve 8x8'lik bir matris elde edersiniz.

Yani, konjugat transpozisyonu ekleyerek Hamiltonian Hermitian'ınızı yaptığınızda, bu terim için 0 elde edersiniz ve bu nedenle herhangi bir hayali katsayıya ihtiyacınız yoktur .


'HM'HM+'HM''HM

1
Bu yüzden @ DaftWullie'nin yorumu başka varsayımlar olmadan yanlıştır.
AHusain

1
@MarkFingerhuth: Tekrardaki gecikme için üzgünüm. Gün boyunca son derece meşgulüm ve bu ay her gün gece yarısına yakın eve dönüyorum. Bana denklemlerin nereden geldiğini gösterebilirsen, sonuçlarının temelde nasıl farklılaştığını düşünebilirim. Cevabımı "PyQuil Hermityan olmayan matrisleri desteklemiyor, ancak bu farklı bir programın yapamayacağı anlamına gelmiyor" şeklinde değiştirebilirim.
user1271772

1
@MarkFingerhuth: "Teorik makaleden denklemlere dayanarak oluşturdum" dersiniz, hangi teorik makaleden denklemler? Soruda bağlantılı makale 82 sayfa uzunluğunda, sadece bu "Hamiltonian" ı oluşturmak için hangi denklemleri kullandığınızı gösteremez misiniz?
user1271772

1
@ MarkFingerhuth, evet çevrimdışı konuşabiliriz, ancak bunun için herhangi bir puan alamayacağım. Buradaki çabam için sadece 1 oy aldım, bu yüzden teşvik düşük.
user1271772
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.