states.ghz

GHZ state.

Module Contents

Functions

ghz(dim, num_qubits[, coeff])

Generate a (generalized) GHZ state [1].

states.ghz.ghz(dim, num_qubits, coeff=None)

Generate a (generalized) GHZ state [1].

Returns a num_qubits-partite GHZ state acting on dim local dimensions, described in [1]. For example, ghz(2, 3) returns the standard 3-qubit GHZ state on qubits. The output of this function is sparse.

For a system of num_qubits qubits (i.e., dim = 2), the GHZ state can be written as

\[|GHZ \rangle = \frac{1}{\sqrt{n}} \left(|0\rangle^{\otimes n} + |1 \rangle^{\otimes n} \right)).\]

Examples

When dim = 2, and num_qubits = 3 this produces the standard GHZ state

\[\frac{1}{\sqrt{2}} \left( |000 \rangle + |111 \rangle \right).\]

Using toqito, we can see that this yields the proper state.

>>> from toqito.states import ghz
>>> ghz(2, 3).toarray()
array([[0.70710678],
       [0.        ],
       [0.        ],
       [0.        ],
       [0.        ],
       [0.        ],
       [0.        ],
       [0.70710678]])

As this function covers the generalized GHZ state, we can consider higher dimensions. For instance here is the GHZ state in \(\mathbb{C}^{4^{\otimes 7}}\) as

\[\frac{1}{\sqrt{30}} \left(|0000000 \rangle + 2|1111111 \rangle + 3|2222222 \rangle + 4|3333333\rangle \right).\]

Using toqito, we can see this generates the appropriate generalized GHZ state.

>>> from toqito.states import ghz
>>> import numpy as np
>>> ghz(4, 7, np.array([1, 2, 3, 4]) / np.sqrt(30)).toarray()
array([[0.18257419],
       [0.        ],
       [0.        ],
       ...,
       [0.        ],
       [0.        ],
       [0.73029674]])

References

[1] (1,2,3)

Daniel M. Greenberger, Michael A. Horne, and Anton Zeilinger. Going beyond bell's theorem. 2007. arXiv:0712.0921.

Raises:

ValueError – Number of qubits is not a positive integer.

Parameters:
  • dim (int) – The local dimension.

  • num_qubits (int) – The number of parties (qubits/qudits)

  • coeff (list[int]) – (default [1, 1, …, 1])/sqrt(dim): a 1-by-dim vector of coefficients.

Returns:

Numpy vector array as GHZ state.

Return type:

scipy.sparse