Simulasi Hamiltonian dengan koefisien kompleks

12

Sebagai bagian dari algoritma variasi, saya ingin membuat rangkaian kuantum (idealnya dengan pyQuil ) yang mensimulasikan Hamiltonian dari bentuk:

H=0,3Z3Z4+0,12Z1Z3+[...]+-11,03Z3-10.92Z4+0,12sayaZ1Y5X4

Ketika datang ke istilah terakhir, masalahnya adalah bahwa pyQuil melempar kesalahan berikut:

TypeError: PauliTerm coefficient must be real

Saya mulai menyelam ke dalam literatur dan sepertinya masalah yang tidak sepele. Saya menemukan makalah ini tentang Hamiltonian kuantum universal di mana pengkodean kompleks ke nyata serta pengkodean lokal dibahas. Namun, masih belum jelas bagi saya bagaimana seseorang akan secara praktis mengimplementasikan sesuatu seperti ini. Adakah yang bisa memberi saya saran praktis bagaimana mengatasi masalah ini?

Mark Fingerhuth
sumber
1
Apakah ada kesalahan saat Anda menggantinya dengan ? Sj2(XjSjXj)2
AHusain
3
Ingat bahwa seorang Hamilton haruslah seorang Hermitian. Itu hanya benar dari koefisien yang nyata.
DaftWullie
1
Saya mungkin menggunakan definisi yang berbeda untuk daripada Anda. Tetapi intinya adalah Anda dapat menemukan beberapa kombinasi yang menghasilkan i I d 2 . Ssayasayad2
AHusain
1
Tidakkah Anda memiliki istilah lain di dalam , yaitu konjugasi Hermitian? H = i A B - i B A H=sayaSEBUAHB-sayaBSEBUAH
AHusain
1
Atau apakah semua persyaratan dalam bentuk itu dibatalkan?
AHusain

Jawaban:

10

Hamiltonian konvensional adalah Hermitian. Oleh karena itu, jika mengandung istilah non-Hermitian, itu juga harus mengandung conjuagte Hermitian sebagai istilah lain, atau memiliki 0 bobot. Dalam kasus khusus ini, karena adalah Hermitian itu sendiri, koefisiennya harus 0. Jadi, jika Anda berbicara tentang orang Hamilton konvensional, Anda mungkin membuat kesalahan dalam perhitungan Anda. Perhatikan bahwa jika konjugasi Hermitian dari istilah ini tidak ada, Anda tidak bisa begitu saja memperbaiki hal-hal dengan menambahkannya; itu akan memberi Anda hasil yang sama sekali berbeda.ZXY

Di sisi lain, Anda mungkin ingin menerapkan Hamiltonian non-Hermitian . Hal-hal ini memang ada, seringkali untuk deskripsi proses kebisingan, tetapi hampir tidak begitu luas. Anda perlu secara eksplisit memasukkan terminologi "non-Hermitian", jika tidak semua orang hanya akan berpikir bahwa apa yang Anda lakukan salah karena itu bukan Hermitian, dan Hamiltonian haruslah Hermitian. Saya tidak terlalu terbiasa dengan kemampuan apa yang disediakan berbagai simulator, tetapi saya akan terkejut jika mereka memiliki built-in non-Hermiticity.

Namun, Anda dapat mensimulasikannya, dengan biaya implementasi non-deterministik. Akan ada metode yang lebih canggih dari ini (lihat tautan dalam jawaban ini ), tetapi izinkan saya menjelaskan satu yang sangat sederhana: Saya akan menganggap hanya ada satu komponen non-Hermitian, yaitu (produk tensor dari Paulis ). Saya akan menyebutnya produk tensor Paulis K . Sisa dari Hamiltonian adalah H . Anda ingin membuat evolusi e - i H t + K t Kita mulai dengan Trotterising the evolution, e - i H t + K t = Nsaya×KH

e-sayaHt+Kt
manaNδt=t. Sekarang kami berupaya mensimulasikan sebuah istilah individuale-iHδt+Kδte-iHδtEKδt(yang menjadi lebih akurat padaNbesar). Anda sudah tahu bagaimana menangani bagian Hermitian begitu, fokus padaeKδt=
e-sayaHt+Kt=saya=1Ne-sayaHδt+Kδt
Nδt=te-sayaHδt+Kδte-sayaHδteKδtN
eKδt=tongkat pendek(δt)saya+sinh(δt)K.

Kami memperkenalkan ancilla qubit di negara , dan kami menggunakan ini sebagai qubit kontrol dalam controlled- K gerbang. Kemudian kita mengukur ancilla di { | ψ , | ψ } basis (di mana ψ | ψ = 0 ). Jika hasilnya | ψ , kemudian pada qubit sasaran kami telah menerapkan operasi | α ||ψ=α|0+β|1K{|ψ,|ψ}ψ|ψ=0|ψ , hingga normalisasi. Jadi, jika Anda memperbaiki ( 1 - | α | 2 ) / | α | 2 = tanh ( δ t ) , Anda telah mengimplementasikan operasi itu dengan sempurna. Jika pengukuran gagal, maka terserah Anda apakah Anda ingin mencoba memulihkan (ini mungkin tidak mungkin) atau mulai lagi.|α|2saya+|β|2K(1-|α|2)/|α|2=tanh(δt)

DaftWullie
sumber
3

saya0,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

Outputnya adalah 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

Karena ini adalah matriks nyata, Hermitian berarti simetris, tetapi ini bukan simetris dan karenanya bukan Hermitian. Segitiga kanan atas tidak sama dengan segitiga kanan bawah.

Namun segitiga kanan atas adalah negatif dari segitiga kanan bawah, jadi itu anti-Hermitian.

Jadi melakukan saran AHussain untuk menambahkan transpose konjugat, menghasilkan 0. Cukup jalankan perintah ini:

H + H'

dan Anda akan mendapatkan matriks 8x8 dari 0.

Jadi ketika Anda membuat Hamiltonian Hermitian Anda dengan menambahkan transpose konjugat, Anda mendapatkan 0 untuk istilah ini, dan karena itu Anda tidak perlu memiliki koefisien imajiner apa pun .

pengguna1271772
sumber
HM.HM.+HM.HM.
1
Itu sebabnya komentar @ DaftWullie keliru tanpa asumsi lebih lanjut.
AHusain
1
@MarkFingerhuth: Maaf atas keterlambatan ulangan. Saya sangat sibuk selama hari-hari dan telah pulang hampir tengah malam setiap hari bulan ini. Jika Anda bisa menunjukkan kepada saya kertas dari mana persamaan berasal, saya bisa memikirkan bagaimana hasil Anda berbeda secara mendasar. Saya dapat mengubah jawaban saya untuk mengatakan "PyQuil tidak mendukung matriks non-Hermitian, tetapi itu tidak berarti program lain tidak dapat".
user1271772
1
@ MarkFingerhuth: Anda mengatakan "Saya membuatnya berdasarkan persamaan dari makalah teoretis" yang persamaan dari makalah teoretis mana? Makalah yang ditautkan dalam pertanyaan ini memiliki panjang 82 halaman, tidak bisakah Anda tunjukkan saja persamaan yang Anda gunakan untuk menghasilkan "Hamiltonian" ini?
user1271772
1
@ MarkFingerhuth, ya kita bisa bicara offline, namun saya tidak akan mendapatkan poin untuk itu. Saya hanya mendapat 1 upvote untuk usaha saya di sini, jadi insentifnya rendah.
user1271772