Lewati ke konten utama
Proyek ini masih dalam tahap beta. Menemukan bug? Buat isu GitHub. Punya pertanyaan atau ide? Tanya di Discussions — kami sangat menghargai masukan kamu!
Bagaimana kualitas terjemahan di halaman ini?

Sample-based quantum diagonalization (SQD)

Paket ini mengimplementasikan sample-based quantum diagonalization (SQD) — teknik untuk mencari eigenvalue dan eigenvector dari operator kuantum, seperti Hamiltonian sistem kuantum [1–6]. Teknik ini bisa menargetkan Hamiltonian yang dinyatakan sebagai kombinasi linear operator Pauli atau operator Fermionic terkuantisasi-kedua. Alur kerja berbasis SQD bisa dijalankan di komputer kuantum saat ini dan terbukti skalabel hingga ukuran masalah yang tidak mungkin dicapai metode variasional — bahkan melampaui jangkauan metode diagonalisasi klasik yang eksak.

Alur kerja berbasis SQD diawali dengan menyiapkan satu atau lebih keadaan kuantum di perangkat kuantum dan mengambil sampel darinya. Lalu, komputasi terdistribusi klasik dipakai untuk memproses sampel berderau tersebut. Pemrosesan ini terjadi secara iteratif dalam dua langkah: pertama, langkah pemulihan konfigurasi mengoreksi sampel berderau memakai informasi tentang masalah input; kedua, Hamiltonian diproyeksikan dan didiagonalisasi di subruang yang direntang oleh sampel tersebut. Langkah-langkah ini diulang secara self-consistent sampai konvergen. Hasilnya adalah aproksimasi eigenvalue terendah (energi) dan eigenstate berenergi terendah dari Hamiltonian tertentu. SQD tahan terhadap sampel yang rusak akibat derau kuantum; bahkan, selama sinyal yang berguna bisa diambil dari komputer kuantum, hasil SQD tidak akan terpengaruh oleh bitstring berderau.

qiskit-addon-sqd dalam praktiknya bisa dipakai untuk memproses secara klasik sampel yang diambil dari berbagai circuit kuantum. Misalnya:

  1. Ansatz circuit variasional dengan parameter yang dipilih sedemikian rupa sehingga sampling circuit menghasilkan konfigurasi elektronik yang menjadi support signifikan bagi fungsi gelombang target (misalnya ground state). Ini menarik untuk aplikasi kimia di mana Hamiltonian bisa punya jutaan suku interaksi [1]. Untuk contoh pendekatan ini yang diterapkan pada kimia memakai circuit LUCJ, lihat tutorial untuk mengaproksimasi energi ground state molekul N2.
  2. Sekumpulan keadaan basis Krylov disiapkan pada interval waktu yang makin besar. Dengan asumsi keadaan awal yang baik dan sparsity pada ground state, pendekatan ini terbukti konvergen secara efisien. Karena perlu menyiapkan circuit evolusi waktu Trotterized di perangkat kuantum, pendekatan ini paling cocok untuk aplikasi pada model kisi [2], bukan Hamiltonian many-body kompleks seperti yang ada di kimia kuantum. Untuk contoh pendekatan ini yang diterapkan pada Hamiltonian kisi Fermionic, lihat tutorial untuk mengaproksimasi energi ground state model Anderson satu-pengotor yang disederhanakan.
  3. Sekumpulan keadaan basis Krylov yang diimplementasikan dengan kompilasi acak qDRIFT pada operator evolusi waktu. Pendekatan ini menghasilkan circuit berkedalaman lebih pendek dibandingkan dekomposisi evolusi waktu berbasis Trotter sehingga bisa dipakai untuk Hamiltonian kimia kuantum. Teknik ini telah diterapkan pada energi ground state hidrokarbon aromatik polisiklik [6].

Memulai​

Panduan sederhana untuk membantu kamu memulai dengan cepat memakai paket ini tersedia di panduan quickstart.

Contoh kasus penggunaan​

Teknik sample-based quantum diagonalization bisa dipakai untuk mengimplementasikan beragam alur kerja. Beberapa contoh penggunaannya antara lain:

Pembahasan teknis​

Ukuran sistem dan kebutuhan komputasi​

Biaya komputasi SQD didominasi oleh pemanggilan eigenstate solver. Di setiap langkah iterasi self-consistent configuration recovery, dilakukan n_batches pemanggilan eigenstate solver. Pemanggilan-pemanggilan itu bisa dijalankan secara paralel dengan mudah (embarrassingly parallel). Di tutorial ini, pemanggilan tersebut ada di dalam sebuah for loop. Sangat disarankan untuk menjalankan pemanggilan ini secara paralel.

Fungsi qiskit_addon_sqd.fermion.solve_fermion() bersifat multithreaded dan mampu menangani sistem dengan ~25 orbital spasial dan ~10 elektron dengan dimensi subruang ~$10^7$, memakai ~10-30 core.

Memilih dimensi subruang​

Pilihan dimensi subruang memengaruhi akurasi dan waktu jalan eigenstate solver. Makin besar subruangnya, makin akurat perhitungannya, tapi runtime dan kebutuhan memorinya juga naik. Ukuran subruang yang optimal untuk sistem tertentu belum diketahui; karena itu, kamu bisa melakukan studi konvergensi terhadap dimensi subruang, seperti dijelaskan di panduan ini.

Membatasi dimensi subruang​

Argumen samples_per_batch dari qiskit_addon_sqd.fermion.diagonalize_fermionic_hamiltonian() menentukan jumlah bitstring di setiap batch, sehingga mengontrol dimensi subruang secara tidak langsung: untuk aplikasi kimia kuantum, nilainya menjadi batas atas dimensi subruang. Dimensi yang benar-benar dihasilkan bergantung pada berapa banyak bitstring hasil sampling yang berbeda, dan dimensi ini bertambah selama iterasi self-consistent configuration recovery, jadi tidak bisa diketahui sebelumnya. Lihat contoh ini untuk detail lebih lanjut.

Argumen max_dim dari fungsi yang sama membatasi dimensi secara langsung, dengan membatasi jumlah string CI yang dipertahankan di tiap sektor spin. Karena subruang direntang oleh hasil kali Kartesius dari dua sektor spin, max_dim=d membatasi dimensi subruang di d**2, sedangkan tuple max_dim=(d_a, d_b) membatasi sektor spin-alpha dan spin-beta secara terpisah, sehingga dimensi subruang dibatasi di d_a * d_b (dengan symmetrize_spin=True, kedua batas harus sama). Ketika sebuah batch menghasilkan lebih banyak string CI daripada yang diizinkan batas, string yang diminta lewat include_configurations dan yang dibawa dari iterasi sebelumnya dipertahankan lebih dulu, lalu sisa slot diisi dengan string yang paling sering di-sampling. Karena membatasi ukuran diagonalisasi terbesar yang akan diminta dari eigenstate solver, max_dim adalah cara praktis untuk menjaga solver tetap dalam anggaran runtime dan memori. Lihat panduan ini untuk detail lebih lanjut.

Solver​

Langkah proyeksi dan diagonalisasi dilakukan oleh solver klasik. Di sini kami menyediakan dua solver generik, satu untuk sistem Fermionic dan satu lagi untuk sistem qubit. Solver lain yang mungkin lebih efisien untuk sistem tertentu bisa dihubungkan oleh pengguna.

Trim SQD​

SQD standar mendiagonalisasi setiap batch hasil subsampling secara independen dan menyimpan hasil terbaik, sehingga jumlah konfigurasi yang bisa dipertimbangkan terbatas pada apa yang muat di satu subruang yang terjangkau. Trim SQD justru mempartisi bitstring ke dalam beberapa batch, melakukan diagonalisasi perantara pada tiap batch, lalu melakukan diagonalisasi yang lebih besar memakai determinan berbobot tertinggi dari tiap partisi. Metode ini didasarkan pada riset bersama dari Cleveland Clinic Foundation, RIKEN, dan IBM [7], dan bisa diaktifkan dengan memberikan objek TrimPolicy ke fungsi diagonalize_fermionic_hamiltonian().

Berkontribusi​

Kode sumbernya tersedia di GitHub.

Panduan developer ada di CONTRIBUTING.md di root repositori proyek ini. Dengan ikut berpartisipasi, kamu diharapkan menjunjung kode etik Qiskit.

Kami memakai GitHub issues untuk melacak permintaan dan bug.

Mengutip paket ini​

Kalau kamu memakai paket ini dalam penelitianmu, pakai file CITATION.bib di repositori proyek ini untuk mengutip referensi yang sesuai.

Ucapan terima kasih​

Paket ini menyertakan strategi sampling opsional di dalam loop self-consistent configuration recovery yang memangkas determinan berdasarkan hasil diagonalisasi perantara. Implementasinya didasarkan pada riset bersama dari Cleveland Clinic Foundation, RIKEN, dan IBM. Kalau kamu memakai fitur ini dalam penelitianmu, tolong kutip juga makalahnya, yang bisa ditemukan di file CITATION.bib dengan citation key merz2026crossing. Implementasi alur kerja lengkap dari makalah tersebut diperkirakan segera tersedia di GitHub.

Lisensi​

Apache License 2.0

Kebijakan Deprecation​

Kami mengikuti semantic versioning. Sesekali kami mungkin membuat perubahan yang merusak (breaking changes) demi memperbaiki pengalaman pengguna. Kalau memungkinkan, kami akan mempertahankan antarmuka lama dan menandainya sebagai deprecated, selama masih bisa berdampingan dengan yang baru. Setiap peningkatan besar, breaking change, atau deprecation akan didokumentasikan di catatan rilis.

Referensi​

  1. Javier Robledo-Moreno, et al., Chemistry Beyond Exact Solutions on a Quantum-Centric Supercomputer, arXiv:2405.05068 [quant-ph].

  2. Jeffery Yu, et al., Quantum-Centric Algorithm for Sample-Based Krylov Diagonalization, arXiv:2501.09702 [quant-ph].

  3. Keita Kanno, et al., Quantum-Selected Configuration Interaction: classical diagonalization of Hamiltonians in subspaces selected by quantum computers, arXiv:2302.11320 [quant-ph].

  4. Kenji Sugisaki, et al., Hamiltonian simulation-based quantum-selected configuration interaction for large-scale electronic structure calculations with a quantum computer, arXiv:2412.07218 [quant-ph].

  5. Mathias Mikkelsen, Yuya O. Nakagawa, Quantum-selected configuration interaction with time-evolved state, arXiv:2412.13839 [quant-ph].

  6. Samuele Piccinelli, et al., Quantum chemistry with provable convergence via randomized sample-based Krylov quantum diagonalization, arXiv:2508.02578 [quant-ph].

  7. Kenneth M. Merz Jr., et al., Crossing the 12,000-atom barrier with heterogeneous quantum-classical supercomputing: quantum chemistry of protein-ligand complexes, arXiv:2605.01138 [quant-ph].