Langkau ke kandungan utama
Projek ini dalam fasa beta. Jumpa pepijat? Buat isu GitHub. Ada soalan atau idea? Tanya dalam Discussions β€” kami suka dengar maklum balas anda!
Bagaimana kualiti terjemahan pada halaman ini?

Sintesis operasi unitary

Versi pakej

Kod pada halaman ini dibangunkan menggunakan keperluan berikut. Kami mengesyorkan menggunakan versi ini atau yang lebih baharu.

qiskit[all]~=2.5.2

Operasi unitari menerangkan perubahan yang memelihara norma kepada sistem kuantum. Untuk nn qubit, perubahan ini diterangkan oleh matriks kompleks UU berdimensi 2nΓ—2n2^n \times 2^n yang adjointnya sama dengan songsangnya, iaitu U†U=1U^\dagger U = \mathbb{1}.

Mensintesis operasi unitary tertentu kepada set gate kuantum adalah tugas asas yang digunakan, contohnya, dalam reka bentuk dan penggunaan algoritma kuantum atau dalam mengkompilasi litar kuantum.

Walaupun sintesis yang cekap adalah mungkin untuk kelas unitary tertentu β€” seperti yang terdiri daripada gate Clifford atau mempunyai struktur hasil darab tensor β€” kebanyakan unitary tidak termasuk dalam kategori ini. Bagi matriks unitary umum, sintesis adalah tugas yang rumit dengan kos pengiraan yang meningkat secara eksponen dengan bilangan qubit. Oleh itu, jika anda mengetahui penguraian cekap untuk unitary yang ingin anda laksanakan, ia kemungkinan besar lebih baik daripada sintesis umum.

nota

Jika tiada penguraian tersedia, Qiskit SDK menyediakan anda dengan alat untuk mencarinya. Namun, perhatikan bahawa ini umumnya menghasilkan litar yang dalam yang mungkin tidak sesuai untuk dijalankan pada komputer kuantum berbising.

# Added by doQumentation β€” installs the packages this notebook needs if they are missing
import importlib.util

_needed = {"numpy": "numpy", "qiskit": "qiskit"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
import numpy as np
from qiskit import QuantumCircuit

U = 0.5 * np.array(
[[1, 1, 1, 1], [-1, 1, -1, 1], [-1, -1, 1, 1], [-1, 1, 1, -1]]
)

circuit = QuantumCircuit(2)
circuit.unitary(U, circuit.qubits)
<qiskit.circuit.instructionset.InstructionSet at 0x7fe21013b1f0>

Sintesis semula untuk pengoptimuman litar​

Kadangkala bermanfaat untuk mensintesis semula siri panjang gate satu dan dua qubit, jika panjangnya boleh dikurangkan. Contohnya, litar berikut menggunakan tiga gate dua qubit.

from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit

qreg_q = QuantumRegister(2, "q")
creg_c = ClassicalRegister(4, "c")
circuit = QuantumCircuit(qreg_q, creg_c)

circuit.h(qreg_q[0])
circuit.cx(qreg_q[0], qreg_q[1])
circuit.sx(qreg_q[1])
circuit.cz(qreg_q[0], qreg_q[1])
circuit.x(qreg_q[1])
circuit.x(qreg_q[0])
circuit.cx(qreg_q[0], qreg_q[1])
circuit.h(qreg_q[0])
circuit.draw("mpl")

Output of the previous code cell

Namun, selepas disintesis semula dengan kod berikut, ia hanya memerlukan satu gate CX. (Di sini kami menggunakan kaedah QuantumCircuit.decompose() untuk memvisualisasikan dengan lebih baik gate yang digunakan untuk mensintesis semula unitary.)

from qiskit.quantum_info import Operator

# compute unitary matrix of circuit
U = Operator(circuit)

# re-synthesize
better_circuit = QuantumCircuit(2)
better_circuit.unitary(U, range(2))
better_circuit.decompose().draw()
global phase: 15Ο€/8
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
q_0: ─ U(Ο€/2,Ο€/2,-Ο€) β”œβ”€β”€β”€β– β”€β”€β”€ U(Ο€/2,-Ο€,-Ο€/2) β”œ
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”β”Œβ”€β”΄β”€β”β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”˜
q_1: ─ U(3Ο€/4,Ο€/2,-Ο€) β”œβ”€ X β”œβ”€ U(Ο€/2,Ο€/4,-Ο€) β”œβ”€
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Fungsi transpile Qiskit secara automatik melakukan sintesis semula ini untuk tahap pengoptimuman yang cukup tinggi.

Langkah seterusnya​

Cadangan