qml.math.vn_entanglement_entropy

vn_entanglement_entropy(state, indices0, indices1, base=None, check_state=False, c_dtype='complex128')[source]

Compute the Von Neumann entanglement entropy between two subsystems in a given state.

\[S(\rho_A) = -\text{Tr}[\rho_A \log \rho_A] = -\text{Tr}[\rho_B \log \rho_B] = S(\rho_B)\]

where \(S\) is the von Neumann entropy, and \(\rho_A = \text{Tr}_B [\rho_{AB}]\) and \(\rho_B = \text{Tr}_A [\rho_{AB}]\) are the reduced density matrices for each partition.

The Von Neumann entanglement entropy is a measure of the degree of quantum entanglement between two subsystems constituting a pure bipartite quantum state. The entropy of entanglement is the Von Neumann entropy of the reduced density matrix for any of the subsystems. If it is non-zero, it indicates the two subsystems are entangled.

Each state must be given as a density matrix. To find the mutual information given a pure state, call dm_from_state_vector() first.

Parameters
  • state (tensor_like) – (2**N, 2**N) or (batch_dim, 2**N, 2**N) density matrix.

  • indices0 (list[int]) – Indices of the qubits in the first subsystem.

  • indices1 (list[int]) – Indices of the qubits in the second subsystem.

  • base (float) – Base for the logarithm. If None, the natural logarithm is used.

  • check_state (bool) – If True, the function will check the state validity (shape and norm).

  • c_dtype (str) – Complex floating point precision type.

Returns

The von Neumann entanglement entropy of the bipartite state.

Return type

float

Examples

The entanglement entropy between subsystems for a state vector can be returned as follows:

>>> x = np.array([0, -1, 1, 0]) / np.sqrt(2)
>>> x = qml.math.dm_from_state_vector(x)
>>> qml.math.vn_entanglement_entropy(x, indices0=[0], indices1=[1])
0.6931471805599453

It is also possible to change the logarithm base:

>>> qml.math.vn_entanglement_entropy(x, indices0=[0], indices1=[1], base=2)
1

Similarly, the quantum state can be provided as a density matrix:

>>> y = np.array([[1, 1, -1, -1], [1, 1, -1, -1], [-1, -1, 1, 1], [-1, -1, 1, 1]]) * 0.25
>>> qml.math.vn_entanglement_entropy(y, indices0=[0], indices1=[1])
0

Contents

Using PennyLane

Release news

Development

API

Internals