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?

Transpilasi circuit fermionik

Penting

Konsep dalam panduan ini saat ini hanya tersedia di Python API. Fungsionalitas yang setara akan tersedia di C API pada rilis mendatang.

Panduan ini menjelaskan cara mentranspilasi FermionicCircuit menjadi QuantumCircuit standar. Panduan ini melanjutkan contoh evolusi waktu yang sama dari panduan circuit fermionik.

Tahap transpilasi​

Seperti dijelaskan di qiskit_fermions.transpiler, pass manager preset dalam proyek ini membagi transpilasi menjadi tahap-tahap berikut:

Input​

Mengubah circuit input menjadi struktur data directed acyclic graph (DAG).

Optimisasi​

Menjaga circuit tetap dalam ruang fermionik. Pass ini memanfaatkan struktur fermionik dan relasi komutasi sementara pengetahuan yang sadar masalah tetap tersedia sepenuhnya. F2FSynthesis adalah pass yang mentrotterisasi gate Evolution di sini, dengan product formula atau dengan FermionicQDrift, dan QDriftTrotterization adalah varian yang sadar okupansi; lihat Optimization Passes untuk kumpulan lengkapnya dan Synthesize an Evolution gate in fermionic space untuk cara memilih product formula.

Tata letak​

Memetakan register mode fermionik ke register kuantum. Untuk pemetaan basis okupansi seperti Jordan-Wigner, setiap mode fermionik dipetakan ke satu qubit. Tahap ini juga mendukung pemetaan yang lebih umum di mana jumlah qubit berbeda dari jumlah mode fermionik.

Sintesis​

Mengubah gate fermionik menjadi operasi qubit dengan memakai pemetaan fermion-ke-qubit yang dipilih. Instance FermionicGate diubah menjadi rangkaian gate kuantum standar. Sebuah barrier diteruskan ke setiap qubit pada tiap register yang disentuhnya, sehingga barrier itu tetap memisahkan gate di kedua sisinya selama tahap qubit.

Qubit​

Mentranspilasi circuit qubit yang dihasilkan dengan metode Qiskit standar, termasuk optimisasi, layout, dan routing untuk hardware targetmu.

Output​

Mengubah struktur data DAG internal menjadi format output yang diinginkan.

Contoh praktis: transpilasi memakai Jordan-Wigner​

Gunakan pass manager preset untuk mentranspilasi circuit fermionikmu dengan pemetaan fermion-ke-qubit Jordan-Wigner:

>>> from qiskit_fermions.circuit import FermionicCircuit
>>> from qiskit_fermions.circuit.library import Evolution
>>> from qiskit_fermions.operators import FermionOperator, cre, ann
>>> from qiskit_fermions.transpiler.presets import generate_preset_jw_pass_manager
>>>
>>> # Create the same fermionic circuit from the previous guide
>>> circuit = FermionicCircuit(4)
>>> hamiltonian = FermionOperator.from_terms([
... ([cre(0), ann(2)], 0.5),
... ([cre(2), ann(0)], 0.5),
... ([cre(1), ann(3)], 0.5),
... ([cre(3), ann(1)], 0.5),
... ])
>>> hamiltonian.groups = [0, 0, 1, 1]
>>> evolution = Evolution(4, hamiltonian, time=1.0)
>>> circuit.append(evolution, circuit.register)
>>>
>>> # Generate the Jordan-Wigner transpilation pipeline
>>> pm = generate_preset_jw_pass_manager()
>>>
>>> # Transpile the fermionic circuit to a qubit circuit
>>> qubit_circuit = pm.run(circuit)
>>>
>>> # The result is a standard QuantumCircuit
>>> print(type(qubit_circuit))
<class 'qiskit.circuit.quantumcircuit.QuantumCircuit'>

The transpiled QuantumCircuit of the fermionic time evolution.

Bandingkan dengan alur kerja tradisional​

Panduan circuit fermionik menjelaskan bagaimana alur kerja tradisional melakukan encoding fermion-ke-qubit sebelum membangun QuantumCircuit. Bandingkan kedua pendekatan:

>>> from qiskit_fermions.mappers.library import jordan_wigner
>>> from qiskit.circuit import QuantumCircuit
>>> from qiskit.circuit.library import PauliEvolutionGate
>>>
>>> # Map the fermionic Hamiltonian to a qubit operator
>>> qubit_hamiltonian = jordan_wigner(hamiltonian, 4).simplify()
>>>
>>> # Build the QuantumCircuit directly
>>> quantum_circuit = QuantumCircuit(4)
>>> pauli_evolution = PauliEvolutionGate(qubit_hamiltonian, time=1.0)
>>> quantum_circuit.append(pauli_evolution, quantum_circuit.qubits)
<qiskit.circuit.instructionset.InstructionSet object at ...>

The directly constructed QuantumCircuit of the fermionic time evolution.

Kedua alur kerja menghasilkan circuit yang setara. Namun, alur kerja tradisional mengharuskanmu mengimplementasikan langkah optimisasi secara manual, sedangkan dengan pendekatan fermionic-first kamu bisa mengintegrasikan optimisasi yang sadar masalah ke dalam proses transpilasi.

Alur kerja lanjutan​

Pass manager preset menyediakan titik awal yang praktis. Untuk kasus penggunaan yang lebih lanjut, kamu bisa melakukan hal berikut: