Your First Quantum Circuit #
Let’s start by creating a simple quantum circuit in Qiskit:
from qiskit import QuantumCircuit
# Create a quantum circuit with 2 qubits
qc = QuantumCircuit(2)
# Add a Hadamard gate to the first qubit
qc.h(0)
# Add a CNOT gate with qubit 0 as control and qubit 1 as target
qc.cx(0, 1)
# Visualize the circuit
print(qc)
This creates a Bell state, one of the fundamental entangled quantum states!
Understanding Quantum Circuits #
Circuit Components #
A quantum circuit consists of:
- Qubits: The quantum registers (analogous to classical bits)
- Gates: Operations that manipulate qubits
- Measurements: Reading the final state of qubits
- Classical Bits: Storage for measurement results
Creating a Circuit #
from qiskit import QuantumCircuit
# Create circuit with 3 qubits and 3 classical bits
qc = QuantumCircuit(3, 3)
Common Quantum Gates #
Single-Qubit Gates #
Pauli Gates
qc = QuantumCircuit(1)
# X gate (NOT gate) - flips |0⟩ to |1⟩
qc.x(0)
# Y gate - rotation around Y-axis
qc.y(0)
# Z gate - phase flip
qc.z(0)
Hadamard Gate
# Creates superposition
qc.h(0) # Transforms |0⟩ to (|0⟩ + |1⟩)/√2
Phase Gates
import math
# S gate (phase gate)
qc.s(0)
# T gate
qc.t(0)
# Arbitrary phase rotation
qc.p(math.pi/4, 0)
Rotation Gates
# Rotation around X-axis
qc.rx(math.pi/2, 0)
# Rotation around Y-axis
qc.ry(math.pi/2, 0)
# Rotation around Z-axis
qc.rz(math.pi/2, 0)
Two-Qubit Gates #
CNOT (Controlled-NOT)
qc = QuantumCircuit(2)
# Control qubit 0, target qubit 1
qc.cx(0, 1)
CZ (Controlled-Z)
qc.cz(0, 1)
SWAP Gate
qc.swap(0, 1)
Controlled Phase
qc.cp(math.pi/4, 0, 1)
Multi-Qubit Gates #
Toffoli (CCX) Gate
qc = QuantumCircuit(3)
# Two control qubits (0 and 1), target qubit 2
qc.ccx(0, 1, 2)
Measuring Qubits #
qc = QuantumCircuit(2, 2)
# Add some gates
qc.h(0)
qc.cx(0, 1)
# Measure qubits into classical bits
qc.measure([0, 1], [0, 1]) # Measure qubits 0,1 into classical bits 0,1
# Or measure all qubits
qc.measure_all()
Circuit Visualization #
Text Representation #
print(qc)
Matplotlib Drawer #
qc.draw('mpl') # Creates a nice matplotlib figure
Text Drawing with Symbols #
qc.draw('text') # ASCII art representation
LaTeX-style Drawing #
qc.draw('latex') # Publication-quality diagrams
Running Circuits: Simulators #
Using Aer Simulator #
from qiskit_aer import AerSimulator
from qiskit import transpile
# Create a quantum circuit
qc = QuantumCircuit(2, 2)
qc.h(0)
qc.cx(0, 1)
qc.measure([0, 1], [0, 1])
# Use the Aer simulator
simulator = AerSimulator()
# Transpile the circuit for the simulator
transpiled_qc = transpile(qc, simulator)
# Run the circuit
job = simulator.run(transpiled_qc, shots=1000)
# Get results
result = job.result()
counts = result.get_counts()
print(counts)
# Output: {'00': ~500, '11': ~500}
Visualizing Results #
from qiskit.visualization import plot_histogram
# Plot the measurement results
plot_histogram(counts)
Complete Example: Bell State #
Here’s a complete example creating and measuring a Bell state:
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator
from qiskit.visualization import plot_histogram
import matplotlib.pyplot as plt
# Create circuit
qc = QuantumCircuit(2, 2)
# Create Bell state
qc.h(0) # Put qubit 0 in superposition
qc.cx(0, 1) # Entangle qubits 0 and 1
# Measure
qc.measure([0, 1], [0, 1])
# Visualize circuit
print(qc)
# Simulate
simulator = AerSimulator()
job = simulator.run(qc, shots=1000)
result = job.result()
counts = result.get_counts()
# Display results
print("\nMeasurement results:", counts)
plot_histogram(counts)
plt.show()
Useful Circuit Methods #
# Get circuit depth
depth = qc.depth()
# Count operations
op_count = qc.count_ops()
# Get number of qubits
num_qubits = qc.num_qubits
# Compose circuits
qc1 = QuantumCircuit(2)
qc2 = QuantumCircuit(2)
qc1.h(0)
qc2.cx(0, 1)
combined = qc1.compose(qc2) # Concatenate circuits
# Add barriers (for visualization)
qc.barrier()
Practice Exercises #
Try creating these circuits on your own:
- Superposition: Put a single qubit in equal superposition
- Bell States: Create all four Bell states
- GHZ State: Create a 3-qubit GHZ state
- Quantum Teleportation: Implement a simple teleportation circuit
Next Steps #
Now that you understand basic circuits, you’re ready to:
- Implement quantum algorithms
- Work with more complex gate sequences
- Optimize circuits for real hardware
- Explore quantum error correction
In the next section, we’ll explore how to implement fundamental quantum algorithms using Qiskit!