mirror of
https://github.com/K-Dense-AI/claude-scientific-skills.git
synced 2026-03-28 07:33:45 +08:00
198 lines
3.4 KiB
Markdown
198 lines
3.4 KiB
Markdown
# Quantum Circuit Building
|
|
|
|
## Creating a Quantum Circuit
|
|
|
|
Create circuits using the `QuantumCircuit` class:
|
|
|
|
```python
|
|
from qiskit import QuantumCircuit
|
|
|
|
# Create a circuit with 3 qubits
|
|
qc = QuantumCircuit(3)
|
|
|
|
# Create a circuit with 3 qubits and 3 classical bits
|
|
qc = QuantumCircuit(3, 3)
|
|
```
|
|
|
|
## Single-Qubit Gates
|
|
|
|
### Pauli Gates
|
|
|
|
```python
|
|
qc.x(0) # NOT/Pauli-X gate on qubit 0
|
|
qc.y(1) # Pauli-Y gate on qubit 1
|
|
qc.z(2) # Pauli-Z gate on qubit 2
|
|
```
|
|
|
|
### Hadamard Gate
|
|
|
|
Creates superposition:
|
|
|
|
```python
|
|
qc.h(0) # Hadamard gate on qubit 0
|
|
```
|
|
|
|
### Phase Gates
|
|
|
|
```python
|
|
qc.s(0) # S gate (√Z)
|
|
qc.t(0) # T gate (√S)
|
|
qc.p(π/4, 0) # Phase gate with custom angle
|
|
```
|
|
|
|
### Rotation Gates
|
|
|
|
```python
|
|
from math import pi
|
|
|
|
qc.rx(pi/2, 0) # Rotation around X-axis
|
|
qc.ry(pi/4, 1) # Rotation around Y-axis
|
|
qc.rz(pi/3, 2) # Rotation around Z-axis
|
|
```
|
|
|
|
## Multi-Qubit Gates
|
|
|
|
### CNOT (Controlled-NOT)
|
|
|
|
```python
|
|
qc.cx(0, 1) # CNOT with control=0, target=1
|
|
```
|
|
|
|
### Controlled Gates
|
|
|
|
```python
|
|
qc.cy(0, 1) # Controlled-Y
|
|
qc.cz(0, 1) # Controlled-Z
|
|
qc.ch(0, 1) # Controlled-Hadamard
|
|
```
|
|
|
|
### SWAP Gate
|
|
|
|
```python
|
|
qc.swap(0, 1) # Swap qubits 0 and 1
|
|
```
|
|
|
|
### Toffoli (CCX) Gate
|
|
|
|
```python
|
|
qc.ccx(0, 1, 2) # Toffoli with controls=0,1 and target=2
|
|
```
|
|
|
|
## Measurements
|
|
|
|
Add measurements to read qubit states:
|
|
|
|
```python
|
|
# Measure all qubits
|
|
qc.measure_all()
|
|
|
|
# Measure specific qubits to specific classical bits
|
|
qc.measure(0, 0) # Measure qubit 0 to classical bit 0
|
|
qc.measure([0, 1], [0, 1]) # Measure qubits 0,1 to bits 0,1
|
|
```
|
|
|
|
## Circuit Composition
|
|
|
|
### Combining Circuits
|
|
|
|
```python
|
|
qc1 = QuantumCircuit(2)
|
|
qc1.h(0)
|
|
|
|
qc2 = QuantumCircuit(2)
|
|
qc2.cx(0, 1)
|
|
|
|
# Compose circuits
|
|
qc_combined = qc1.compose(qc2)
|
|
```
|
|
|
|
### Tensor Product
|
|
|
|
```python
|
|
qc1 = QuantumCircuit(1)
|
|
qc1.h(0)
|
|
|
|
qc2 = QuantumCircuit(1)
|
|
qc2.x(0)
|
|
|
|
# Create larger circuit from smaller ones
|
|
qc_tensor = qc1.tensor(qc2) # Results in 2-qubit circuit
|
|
```
|
|
|
|
## Barriers and Labels
|
|
|
|
```python
|
|
qc.barrier() # Add visual barrier in circuit
|
|
qc.barrier([0, 1]) # Barrier on specific qubits
|
|
|
|
# Add labels for clarity
|
|
qc.barrier(label="Initialization")
|
|
```
|
|
|
|
## Circuit Properties
|
|
|
|
```python
|
|
print(qc.num_qubits) # Number of qubits
|
|
print(qc.num_clbits) # Number of classical bits
|
|
print(qc.depth()) # Circuit depth
|
|
print(qc.size()) # Total gate count
|
|
print(qc.count_ops()) # Dictionary of gate counts
|
|
```
|
|
|
|
## Example: Bell State
|
|
|
|
Create entanglement between two qubits:
|
|
|
|
```python
|
|
qc = QuantumCircuit(2)
|
|
qc.h(0) # Superposition on qubit 0
|
|
qc.cx(0, 1) # Entangle qubit 0 and 1
|
|
qc.measure_all() # Measure both qubits
|
|
```
|
|
|
|
## Example: Quantum Fourier Transform (QFT)
|
|
|
|
```python
|
|
from math import pi
|
|
|
|
def qft(n):
|
|
qc = QuantumCircuit(n)
|
|
for j in range(n):
|
|
qc.h(j)
|
|
for k in range(j+1, n):
|
|
qc.cp(pi/2**(k-j), k, j)
|
|
return qc
|
|
|
|
# Create 3-qubit QFT
|
|
qc_qft = qft(3)
|
|
```
|
|
|
|
## Parameterized Circuits
|
|
|
|
Create circuits with parameters for variational algorithms:
|
|
|
|
```python
|
|
from qiskit.circuit import Parameter
|
|
|
|
theta = Parameter('θ')
|
|
qc = QuantumCircuit(1)
|
|
qc.ry(theta, 0)
|
|
|
|
# Bind parameter value
|
|
qc_bound = qc.assign_parameters({theta: pi/4})
|
|
```
|
|
|
|
## Circuit Operations
|
|
|
|
```python
|
|
# Inverse of a circuit
|
|
qc_inverse = qc.inverse()
|
|
|
|
# Decompose gates to basis gates
|
|
qc_decomposed = qc.decompose()
|
|
|
|
# Draw circuit (returns string or diagram)
|
|
print(qc.draw())
|
|
print(qc.draw('mpl')) # Matplotlib figure
|
|
```
|