Cirq Fundamentals

Lesson 2 of 8

Qubits and Superposition

Just like Qiskit's Hadamard gate, Cirq's cirq.H puts a qubit into an equal superposition, a genuine mix of 0 and 1 until measured.

Simulating without measuring

import cirq

qubit = cirq.LineQubit(0)
circuit = cirq.Circuit()
circuit.append(cirq.H(qubit))

simulator = cirq.Simulator()
result = simulator.simulate(circuit)
print(result.dirac_notation())          # something like 0.71|0> + 0.71|1>
print(abs(result.final_state_vector) ** 2)  # [0.5, 0.5]
  • cirq.Simulator() is Cirq's local simulator, .simulate(circuit) runs a circuit without any measurement, returning the exact final quantum state (only possible on a simulator, exactly like Qiskit's Statevector).
  • result.dirac_notation() prints the state using physicists' bra-ket notation, |0> and |1> are the two basis states, and the numbers in front are amplitudes.
  • result.final_state_vector is the raw list of complex amplitudes, squaring their absolute values (abs(...) ** 2) converts each amplitude into a probability, mirroring Qiskit's state.probabilities().

Measurement still collapses the state

circuit_measured = cirq.Circuit()
circuit_measured.append(cirq.H(qubit))
circuit_measured.append(cirq.measure(qubit, key='result'))

result = simulator.simulate(circuit_measured)
print(result.measurements['result'])  # a single definite outcome, 0 or 1

result.measurements is a dictionary keyed by the measurement keys you assigned with cirq.measure(..., key=...), once a qubit is measured, its superposition is gone, exactly as in Qiskit, the physics doesn't change, only the SDK's syntax does.

TIP

Cirq's .simulate() (no measurement, exact state) versus .run() (with measurement, shot-based) map directly onto Qiskit's Statevector versus AerSimulator, same two-step teaching approach, different method names.

📝 Qubits and Superposition Quiz

Passing score: 70%
  1. 1.What does simulator.simulate(circuit) return when the circuit has no measurement?

  2. 2.result.measurements is a dictionary keyed by the string 'key' assigned in cirq.measure(...).

  3. 3.result.____ ____() prints a quantum state using physicists' bra-ket notation like 0.71|0> + 0.71|1>.