Lewati ke konten utama

Circuit library

Versi paket

Kode di halaman ini dikembangkan menggunakan persyaratan berikut. Kami merekomendasikan menggunakan versi ini atau yang lebih baru.

qiskit[all]~=2.3.0

Qiskit SDK menyertakan library berisi sirkuit-sirkuit populer yang bisa kamu gunakan sebagai blok pembangun dalam programmu sendiri. Menggunakan sirkuit yang sudah didefinisikan sebelumnya menghemat waktu untuk riset, penulisan kode, dan debugging. Library ini mencakup sirkuit-sirkuit populer dalam komputasi kuantum, sirkuit yang sulit disimulasikan secara klasik, dan sirkuit yang berguna untuk benchmarking perangkat keras kuantum.

Halaman ini mencantumkan berbagai kategori sirkuit yang disediakan oleh library. Untuk daftar lengkap sirkuit, lihat dokumentasi API circuit library.

Gate standar​

Circuit library juga mencakup gate-gate kuantum standar. Beberapa merupakan gate yang lebih fundamental (seperti UGate), dan yang lainnya adalah gate multi-qubit yang biasanya perlu dibangun dari gate satu dan dua qubit. Untuk menambahkan gate yang diimpor ke sirkuitmu, gunakan metode append; argumen pertama adalah gate-nya, dan argumen berikutnya adalah daftar qubit yang akan dikenai gate tersebut.

Sebagai contoh, kode berikut membuat sebuah Circuit dengan gate Hadamard dan gate multi-controlled-X.

# 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 standar di dokumentasi API circuit library.

Tidak yakin nama gate-mu? Coba tanyakan ke Qiskit Code Assistant.

Sirkuit N-local​

Sirkuit-sirkuit ini menggilir lapisan gate rotasi satu qubit dengan lapisan gate entangling multi-qubit.

Keluarga sirkuit ini populer dalam algoritma kuantum variasional karena dapat menghasilkan berbagai macam state kuantum. Algoritma variasional menyesuaikan parameter gate untuk menemukan state yang memiliki sifat tertentu (seperti state yang mewakili solusi bagus untuk masalah optimasi). Untuk tujuan ini, banyak sirkuit dalam library yang diparameterisasi, artinya kamu bisa mendefinisikannya tanpa nilai tetap.

Kode berikut mengimpor Circuit n_local, di mana gate entanglingnya adalah gate dua qubit. Circuit ini menyelingi blok gate satu qubit berparameter, diikuti oleh blok entangling gate dua qubit. Kode berikut membuat Circuit tiga qubit, dengan gate RX satu qubit 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

Kamu bisa mendapatkan objek seperti daftar parameter sirkuit dari 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])])

Kamu juga bisa menggunakan ini untuk menetapkan parameter-parameter tersebut ke nilai nyata menggunakan kamus dengan format { Parameter: number }. Sebagai demonstrasi, kode berikut menetapkan setiap parameter dalam sirkuit ke 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 informasi lebih lanjut, lihat Gate N-local di dokumentasi API circuit library atau ikuti kursus desain algoritma variasional di IBM Quantum Learning.

Sirkuit data-encoding​

Sirkuit berparameter ini mengkodekan data ke dalam state kuantum untuk diproses oleh algoritma pembelajaran mesin kuantum. Beberapa sirkuit yang didukung Qiskit antara lain:

  • Amplitude encoding, yang mengkodekan setiap angka ke dalam amplitudo state basis. Ini bisa menyimpan 2n2^n angka dalam satu state, tetapi bisa mahal untuk diimplementasikan.
  • Basis encoding, yang mengkodekan bilangan bulat kk dengan menyiapkan state basis yang sesuai ∣k⟩|k\rangle.
  • Angle encoding, yang menetapkan setiap angka dalam data sebagai sudut rotasi dalam sirkuit berparameter.

Pendekatan terbaik bergantung pada spesifik aplikasimu. Namun, pada komputer kuantum saat ini, kita sering menggunakan sirkuit angle-encoding 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 Sirkuit data encoding di dokumentasi API circuit library.

Sirkuit time-evolution​

Sirkuit-sirkuit ini mensimulasikan evolusi state kuantum dalam waktu. Gunakan sirkuit time-evolution untuk menyelidiki efek fisika seperti perpindahan panas atau transisi fase dalam suatu sistem. Sirkuit time-evolution juga merupakan blok pembangun fundamental dari fungsi gelombang kimia (seperti state percobaan unitary coupled-cluster) dan dari algoritma QAOA yang kita gunakan untuk masalah optimasi.

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.

Sirkuit benchmarking dan teori kompleksitas​

Sirkuit benchmarking memberi kita gambaran seberapa baik perangkat keras kita benar-benar bekerja, dan sirkuit teori kompleksitas membantu kita memahami seberapa sulit masalah yang ingin kita selesaikan.

Sebagai contoh, benchmark "quantum volume" mengukur seberapa akurat komputer kuantum mengeksekusi jenis sirkuit kuantum acak tertentu. Skor komputer kuantum meningkat seiring ukuran sirkuit yang bisa dijalankan secara andal. Ini memperhitungkan semua aspek komputer, termasuk jumlah qubit, fidelitas instruksi, konektivitas qubit, dan software stack yang melakukan transpilasi dan post-processing hasil. Baca lebih lanjut tentang quantum volume di makalah quantum volume aslinya.

Kode berikut menunjukkan contoh Circuit quantum volume yang dibangun di Qiskit yang berjalan di empat qubit (blok unitary adalah gate dua qubit yang diacak).

from qiskit.circuit.library import quantum_volume

quantum_volume(4).draw("mpl")

Output of the previous code cell

Circuit library juga mencakup sirkuit yang diyakini sulit untuk disimulasikan secara klasik, seperti sirkuit instantaneous quantum polynomial (iqp). Sirkuit-sirkuit ini menyelipkan gate diagonal tertentu (dalam basis komputasional) di antara blok gate Hadamard.

Sirkuit lainnya mencakup grover_operator untuk digunakan dalam algoritma Grover, dan sirkuit fourier_checking untuk masalah Fourier checking. Lihat sirkuit-sirkuit ini di Sirkuit kuantum tertentu di dokumentasi API circuit library.

Sirkuit aritmatika​

Operasi aritmatika adalah fungsi-fungsi klasik, seperti penambahan bilangan bulat dan operasi bitwise. Ini mungkin berguna dengan algoritma seperti amplitude estimation untuk aplikasi keuangan, dan dalam algoritma seperti algoritma HHL, yang menyelesaikan sistem persamaan linear.

Sebagai contoh, mari kita coba menambahkan dua bilangan tiga-bit menggunakan Circuit "ripple-carry" untuk melakukan penambahan di-tempat (FullAdderGate). Penjumlah ini menambahkan dua bilangan (kita akan menyebutnya "A" dan "B") dan menulis hasilnya ke register yang menampung 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 bahwa outputnya adalah 5 untuk semua 1024 shot (yaitu diukur dengan probabilitas 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 Aritmatika di dokumentasi API circuit library.

Langkah selanjutnya​

Rekomendasi
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 Mar 2026