Langkau ke kandungan utama

Perpustakaan Circuit

Versi pakej

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

qiskit[all]~=2.3.0

Qiskit SDK menyertakan perpustakaan Circuit popular untuk digunakan sebagai blok binaan dalam program anda sendiri. Menggunakan Circuit yang telah ditakrifkan menjimatkan masa penyelidikan, penulisan kod, dan penyahpepijatan. Perpustakaan ini merangkumi Circuit popular dalam pengkomputeran kuantum, Circuit yang sukar untuk disimulasikan secara klasikal, dan Circuit yang berguna untuk penanda aras perkakasan kuantum.

Halaman ini menyenaraikan kategori Circuit berbeza yang disediakan oleh perpustakaan. Untuk senarai lengkap Circuit, lihat dokumentasi API perpustakaan Circuit.

Gate piawai​

Perpustakaan Circuit juga merangkumi Gate kuantum piawai. Sesetengahnya adalah Gate yang lebih asas (seperti UGate), dan yang lain adalah Gate berbilang qubit yang biasanya perlu dibina daripada Gate qubit tunggal dan dua qubit. Untuk menambah Gate yang diimport ke Circuit anda, gunakan kaedah append; argumen pertama adalah Gate, dan argumen seterusnya adalah senarai qubit untuk menggunakan Gate tersebut.

Sebagai contoh, sel kod berikut mencipta Circuit dengan Gate Hadamard dan Gate X berbilang kawalan.

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit
from qiskit import QuantumCircuit
from qiskit.circuit.library import HGate, MCXGate

mcx_gate = MCXGate(3)
hadamard_gate = HGate()

qc = QuantumCircuit(4)
qc.append(hadamard_gate, [0])
qc.append(mcx_gate, [0, 1, 2, 3])
qc.draw("mpl")

Output of the previous code cell

Lihat Gate piawai dalam dokumentasi API perpustakaan Circuit.

Tidak pasti nama Gate anda? Cuba tanya Qiskit Code Assistant.

Circuit N-tempatan​

Circuit ini menyilih lapisan Gate putaran qubit tunggal dengan lapisan Gate pembelitan berbilang qubit.

Keluarga Circuit ini popular dalam algoritma kuantum variasi kerana ia boleh menghasilkan pelbagai keadaan kuantum. Algoritma variasi melaraskan parameter Gate untuk mencari keadaan yang mempunyai sifat tertentu (seperti keadaan yang mewakili penyelesaian baik kepada masalah pengoptimuman). Untuk tujuan ini, banyak Circuit dalam perpustakaan adalah berparameter, bermakna anda boleh mentakrifkannya tanpa nilai tetap.

Sel kod berikut mengimport Circuit n_local, di mana Gate pembelitan adalah Gate dua qubit. Circuit ini menyilihkan blok Gate qubit tunggal berparameter, diikuti oleh blok pembelitan Gate dua qubit. Kod berikut mencipta Circuit tiga qubit, dengan Gate RX qubit tunggal dan Gate CZ dua qubit.

from qiskit.circuit.library import n_local

two_local = n_local(3, "rx", "cz")
two_local.draw("mpl")

Output of the previous code cell

Anda boleh mendapatkan objek seperti senarai parameter Circuit daripada atribut parameters.

two_local.parameters
ParameterView([ParameterVectorElement(θ[0]), ParameterVectorElement(θ[1]), ParameterVectorElement(θ[2]), ParameterVectorElement(θ[3]), ParameterVectorElement(θ[4]), ParameterVectorElement(θ[5]), ParameterVectorElement(θ[6]), ParameterVectorElement(θ[7]), ParameterVectorElement(θ[8]), ParameterVectorElement(θ[9]), ParameterVectorElement(θ[10]), ParameterVectorElement(θ[11])])

Anda juga boleh menggunakan ini untuk menetapkan parameter ini kepada nilai nyata menggunakan kamus dalam bentuk { Parameter: nombor }. Untuk menunjukkan ini, sel kod berikut menetapkan setiap parameter dalam Circuit kepada 0.

bound_circuit = two_local.assign_parameters(
{p: 0 for p in two_local.parameters}
)
bound_circuit.decompose().draw("mpl")

Output of the previous code cell

Untuk maklumat lanjut, lihat Gate N-tempatan dalam dokumentasi API perpustakaan Circuit atau ikuti Kursus reka bentuk algoritma variasi dalam IBM Quantum Learning.

Circuit pengekodan data​

Circuit berparameter ini mengekod data ke atas keadaan kuantum untuk diproses oleh algoritma pembelajaran mesin kuantum. Beberapa Circuit yang disokong oleh Qiskit ialah:

  • Pengekodan amplitud, yang mengekod setiap nombor ke dalam amplitud keadaan asas. Ini boleh menyimpan 2n2^n nombor dalam satu keadaan, tetapi boleh mahal untuk dilaksanakan.
  • Pengekodan asas, yang mengekod integer kk dengan menyediakan keadaan asas yang sepadan ∣k⟩|k\rangle.
  • Pengekodan sudut, yang menetapkan setiap nombor dalam data sebagai sudut putaran dalam Circuit berparameter.

Pendekatan terbaik bergantung pada spesifik aplikasi anda. Walau bagaimanapun, pada komputer kuantum semasa, kita sering menggunakan Circuit pengekodan sudut seperti zz_feature_map.

from qiskit.circuit.library import zz_feature_map

features = [0.2, 0.4, 0.8]
feature_map = zz_feature_map(feature_dimension=len(features))

encoded = feature_map.assign_parameters(features)
encoded.draw("mpl")

Output of the previous code cell

Lihat Circuit pengekodan data dalam dokumentasi API perpustakaan Circuit.

Circuit evolusi masa​

Circuit ini mensimulasikan keadaan kuantum yang berevolusi dalam masa. Gunakan Circuit evolusi masa untuk menyiasat kesan fizikal seperti pemindahan haba atau peralihan fasa dalam sistem. Circuit evolusi masa juga merupakan blok binaan asas fungsi gelombang kimia (seperti keadaan percubaan kluster berganding unitary) dan algoritma QAOA yang kami gunakan untuk masalah pengoptimuman.

from qiskit.circuit.library import PauliEvolutionGate
from qiskit.circuit import QuantumCircuit
from qiskit.quantum_info import SparsePauliOp

# Prepare an initial state with a Hadamard on the middle qubit
state = QuantumCircuit(3)
state.h(1)

hamiltonian = SparsePauliOp(["ZZI", "IZZ"])
evolution = PauliEvolutionGate(hamiltonian, time=1)

# Evolve state by appending the evolution gate
state.compose(evolution, inplace=True)

state.draw("mpl")

Output of the previous code cell

Baca dokumentasi API PauliEvolutionGate.

Circuit penanda aras dan teori kerumitan​

Circuit penanda aras memberikan gambaran seberapa baik perkakasan kami sebenarnya berfungsi, dan Circuit teori kerumitan membantu kami memahami seberapa sukar masalah yang ingin kami selesaikan.

Sebagai contoh, penanda aras "isipadu kuantum" mengukur ketepatan pelaksanaan Circuit kuantum rawak oleh komputer kuantum. Skor komputer kuantum meningkat dengan saiz Circuit yang boleh dijalankan dengan boleh percaya. Ini mengambil kira semua aspek komputer, termasuk bilangan qubit, kesetiaan arahan, kesambungan qubit, dan tumpukan perisian yang mentranspil dan memproses keputusan pasca. Baca lebih lanjut tentang isipadu kuantum dalam kertas isipadu kuantum yang asal.

Kod berikut menunjukkan contoh Circuit isipadu kuantum yang dibina dalam Qiskit yang berjalan pada empat qubit (blok unitary ialah Gate dua qubit yang diacak).

from qiskit.circuit.library import quantum_volume

quantum_volume(4).draw("mpl")

Output of the previous code cell

Perpustakaan Circuit juga merangkumi Circuit yang dipercayai sukar untuk disimulasikan secara klasikal, seperti Circuit polinomial kuantum serta-merta (iqp). Circuit ini mengepit Gate pepenjuru tertentu (dalam asas pengkomputeran) antara blok Gate Hadamard.

Circuit lain termasuk grover_operator untuk digunakan dalam algoritma Grover, dan Circuit fourier_checking untuk masalah semakan Fourier. Lihat Circuit ini dalam Circuit kuantum tertentu dalam dokumentasi API perpustakaan Circuit.

Circuit aritmetik​

Operasi aritmetik ialah fungsi klasikal, seperti menambah integer dan operasi bit. Ini mungkin berguna dengan algoritma seperti anggaran amplitud untuk aplikasi kewangan, dan dalam algoritma seperti algoritma HHL, yang menyelesaikan sistem persamaan linear.

Sebagai contoh, mari kita cuba menambah dua nombor tiga bit menggunakan Circuit "riak-bawa" untuk melakukan penambahan di tempat (FullAdderGate). Penambah ini menambah dua nombor (kita akan memanggilnya "A" dan "B") dan menulis keputusan ke daftar yang memegang B. Dalam contoh berikut, A=2 dan B=3.

from qiskit.circuit.library import FullAdderGate
from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister

adder = FullAdderGate(3) # Adder of 3-bit numbers

# Create the number A=2
reg_a = QuantumRegister(3, "a")
number_a = QuantumCircuit(reg_a)
number_a.initialize(2) # Number 2; |010>

# Create the number B=3
reg_b = QuantumRegister(3, "b")
number_b = QuantumCircuit(reg_b)
number_b.initialize(3) # Number 3; |011>

# Create a circuit to hold everything, including a classical register for
# the result
qregs = [
QuantumRegister(1, "cin"),
QuantumRegister(3, "a"),
QuantumRegister(3, "b"),
QuantumRegister(1, "cout"),
]
reg_result = ClassicalRegister(3)
circuit = QuantumCircuit(*qregs, reg_result)

# Compose number initializers with the adder. Adder stores the result to
# register B, so we'll measure those qubits.
circuit = (
circuit.compose(number_a, qubits=reg_a)
.compose(number_b, qubits=reg_b)
.compose(adder)
)
circuit.measure(reg_b, reg_result)
circuit.draw("mpl")

Output of the previous code cell

Mensimulasikan Circuit menunjukkan ia mengeluarkan 5 untuk semua 1024 tembakan (iaitu diukur dengan kebarangkalian 1.0).

from qiskit.primitives import StatevectorSampler

result = StatevectorSampler().run([circuit]).result()

print(f"Count data:\n {result[0].data.c0.get_int_counts()}")
Count data:
{5: 1024}

Lihat Aritmetik dalam dokumentasi API perpustakaan Circuit.

Langkah seterusnya​

Cadangan
Source: IBM Quantum docs — updated 27 Apr 2026
English version on doQumentation — updated 7 Mei 2026
This translation based on the English version of 11 Mac 2026