Generation of a GHZ state#
Description#
The circuit in Figure 9 illustrates an algorithm for the generation of a GHZ state (169) from primitive \(\ket{0}\) states.


The complete unitary transformation described by this circuit is the product
(326)#\[\Unitary = \Control^1 \NOT^2 \cdot \Control^0 \NOT^1 \cdot \Hadamard^0.\]
Implementation#
from qhronology.quantum.states import VectorState
from qhronology.quantum.gates import Hadamard, Not
from qhronology.quantum.circuits import QuantumCircuit
# Input
zero_state = VectorState(spec=[(1, [0])], label="0")
# Gates
HII = Hadamard(targets=[0], num_systems=3)
CNI = Not(targets=[1], controls=[0], num_systems=3)
ICN = Not(targets=[2], controls=[1], num_systems=3)
# Circuit
generator = QuantumCircuit(
inputs=[zero_state, zero_state, zero_state], gates=[HII, CNI, ICN]
)
generator.diagram()
# Output
ghz_state = generator.state(label="GHZ")
# Results
ghz_state.print()
Output#
Diagram#
>>> generator.diagram()
State#
>>> ghz_state.print()
|GHZ⟩ = sqrt(2)/2|0,0,0⟩ + sqrt(2)/2|1,1,1⟩