Sebagai bagian dari algoritma variasi, saya ingin membuat rangkaian kuantum (idealnya dengan pyQuil ) yang mensimulasikan Hamiltonian dari bentuk:
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?
programming
simulation
hamiltonian-simulation
pyquil
Mark Fingerhuth
sumber
sumber
Jawaban:
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.Z⊗ X⊗ Y
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 = Ni × K H
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 | α || ψ⟩=a | 0⟩+β| 1⟩ K { | ψ ⟩ , | ψ⊥⟩ } ⟨ Ψ | ψ⊥⟩ = 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 )
sumber
Outputnya adalah H:
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:
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 .
sumber