Cirq क्या है?
Cirq, Google का क्वांटम कंप्यूटिंग फ्रेमवर्क है जो NISQ (Noisy Intermediate-Scale Quantum) डिवाइसों के लिए डिज़ाइन किया गया है। यह गेट-स्तरीय ऑपरेशनों पर सूक्ष्म नियंत्रण प्रदान करता है, जो इसे एल्गोरिदम विकास और हार्डवेयर प्रयोगों के लिए आदर्श बनाता है। Cirq में कई मुफ्त सिम्युलेटर शामिल हैं और यह साझेदारियों के माध्यम से Google के क्वांटम हार्डवेयर पर चल सकता है।
Cirq is built for NISQ-era devices — compare it with the other SDK before you commit to one.
इंस्टॉलेशन
terminal
pip install cirq # Core + simulator
pip install cirq-google # Google hardware access (optional)
pip install cirq-web # Web visualization (optional)बुनियादी सर्किट और सिम्युलेशन
cirq_basic.py
import cirq
import numpy as np
# Create qubits
q0, q1 = cirq.LineQubit.range(2)
# Build a Bell state circuit
circuit = cirq.Circuit([
cirq.H(q0),
cirq.CNOT(q0, q1),
cirq.measure(q0, q1, key='result')
])
print(circuit)
# 0: ───H───@───M('result')───
# │ │
# 1: ───────X───M─────────────
# Simulate with shots (sampling)
sim = cirq.Simulator()
result = sim.run(circuit, repetitions=1000)
print(result.histogram(key='result'))
# Counter({0: 504, 3: 496}) (0=|00⟩, 3=|11⟩)Statevector और Density Matrix सिम्युलेशन
cirq_statevector.py
import cirq
q0, q1 = cirq.LineQubit.range(2)
# Build without measurement for statevector
circuit = cirq.Circuit([cirq.H(q0), cirq.CNOT(q0, q1)])
# Exact statevector simulation (free, local)
sim = cirq.Simulator()
result = sim.simulate(circuit)
print(result.final_state_vector)
# [0.707+0j, 0+0j, 0+0j, 0.707+0j]
# Density matrix simulation (for noisy circuits)
noise_model = cirq.ConstantQubitNoiseModel(
cirq.depolarize(p=0.01)
)
noisy_sim = cirq.DensityMatrixSimulator(noise=noise_model)
noisy_result = noisy_sim.simulate(circuit)
print(noisy_result.final_density_matrix)Clifford सिम्युलेटर (Stabilizer सर्किट के लिए कुशल)
cirq_clifford.py
import cirq
# CliffordSimulator efficiently handles stabilizer circuits
# Simulates 1000s of qubits for Clifford gates
qubits = cirq.LineQubit.range(50) # 50 qubits!
circuit = cirq.Circuit(
[cirq.H(q) for q in qubits],
[cirq.CNOT(qubits[i], qubits[i+1]) for i in range(49)],
cirq.measure(*qubits, key='ghz')
)
sim = cirq.CliffordSimulator()
result = sim.run(circuit, repetitions=100)
print(result.histogram(key='ghz'))Cirq के साथ Variational एल्गोरिदम
cirq_vqa.py
import cirq
import numpy as np
from scipy.optimize import minimize
q0, q1 = cirq.LineQubit.range(2)
def ansatz(theta: float) -> cirq.Circuit:
return cirq.Circuit([
cirq.ry(theta)(q0),
cirq.CNOT(q0, q1),
cirq.measure(q0, q1, key='m')
])
def cost(params):
circuit = ansatz(params[0])
sim = cirq.Simulator()
result = sim.run(circuit, repetitions=200)
counts = result.histogram(key='m')
# Minimize energy (simplified objective)
return -counts.get(0, 0) / 200 # maximize |00⟩ prob
result = minimize(cost, x0=[0.5], method='COBYLA')
print(f"Optimal theta: {result.x[0]:.4f}")Keep exploring
💡
Also available via HLQuantum
Want to run the same circuit on multiple backends without rewriting your code? HLQuantum abstracts this SDK (and 5 others) behind a single unified API.
python
import hlquantum as hlq
qc = hlq.Circuit(2)
qc.h(0).cx(0, 1).measure_all()
# One line to switch between any backend
result = hlq.run(qc, shots=1024) # auto-detect
result = hlq.run(qc, shots=1024, backend="cirq") # explicit