mindquantum.core.gates.KrausChannel

View Source On Gitee
class mindquantum.core.gates.KrausChannel(name: str, kraus_op, **kwargs)[source]

A kraus channel.

Kraus channel accepts two or more 2x2 matrices as Kraus operator to construct custom (single-qubit) noise in quantum circuit.

Kraus channel applies noise as:

\[\epsilon(\rho) = \sum_{k=0}^{m-1} E_k \rho E_k^\dagger\]

where \(\rho\) is quantum state as density matrix type; {\(E_k\)} is Kraus operator, and it should satisfy the completeness condition: \(\sum_k E_k^\dagger E_k = I\).

Parameters
  • name (str) – the name of this custom noise channel.

  • kraus_op (list, np.ndarray) – Kraus operator, with two or more 2x2 matrices packaged as a list.

Examples

>>> from mindquantum.core.gates import KrausChannel
>>> from mindquantum.core.circuit import Circuit
>>> from cmath import sqrt
>>> gamma = 0.5
>>> kmat0 = [[1, 0], [0, sqrt(1 - gamma)]]
>>> kmat1 = [[0, sqrt(gamma)], [0, 0]]
>>> amplitude_damping = KrausChannel('damping', [kmat0, kmat1])
>>> circ = Circuit()
>>> circ += amplitude_damping.on(0)
>>> print(circ)
      ╔═════════╗
q0: ──╢ damping ╟───
      ╚═════════╝
define_projectq_gate()[source]

Define the corresponded projectq gate.

get_cpp_obj()[source]

Get underlying C++ object.

matrix()[source]

Kraus operator of the quantum channel.

Returns

list, contains all Kraus operators of this quantum channel.