mindquantum.core.operators.QubitExcitationOperator
- class mindquantum.core.operators.QubitExcitationOperator(term=None, coefficient=1.0)[source]
QubitExcitationOperator class.
The Qubit Excitation Operator is defined as:
and . Compared with Fermion excitation operators, Qubit excitation operators are some kind of "localized", i.e., the Fermion excitation operator involves qubit ranging from 0 to 7 under JW transformation, while Qubit excitation will only affect the 0th and 7th qubits. In addition, double excitations described using Qubit excitation operators use much less CNOTs than the corresponding Fermion excitation operators.- Parameters
term (Union[str, tuple]) – The input term of qubit excitation operator. Default:
None
.coefficient (Union[numbers.Number, str, ParameterResolver]) – The coefficient for the corresponding single operators Default:
1.0
.
Examples
>>> from mindquantum.algorithm.nisq import Transform >>> from mindquantum.core.operators import QubitExcitationOperator >>> op = QubitExcitationOperator(((4, 1), (1, 0), (0, 0)), 2.5) >>> op 5/2 [Q4^ Q1 Q0] >>> op.fermion_operator 5/2 [4^ 1 0] >>> op.to_qubit_operator() 5/16 [X0 X1 X4] + (-0.3125j) [X0 X1 Y4] + (5/16j) [X0 Y1 X4] + 5/16 [X0 Y1 Y4] + (5/16j) [Y0 X1 X4] + 5/16 [Y0 X1 Y4] + -0.3125 [Y0 Y1 X4] + (5/16j) [Y0 Y1 Y4] >>> Transform(op.fermion_operator).jordan_wigner() 5/16 [X0 X1 Z2 Z3 X4] + (-0.3125j) [X0 X1 Z2 Z3 Y4] + (5/16j) [X0 Y1 Z2 Z3 X4] + 5/16 [X0 Y1 Z2 Z3 Y4] + (5/16j) [Y0 X1 Z2 Z3 X4] + 5/16 [Y0 X1 Z2 Z3 Y4] + -0.3125 [Y0 Y1 Z2 Z3 X4] + (5/16j) [Y0 Y1 Z2 Z3 Y4]
- property imag
Convert the coefficient to its imag part.
- Returns
QubitExcitationOperator, the image part of this qubit excitation operator.
Examples
>>> from mindquantum.core.operators import QubitExcitationOperator >>> f = QubitExcitationOperator(((1, 0),), 1 + 2j) >>> f += QubitExcitationOperator(((1, 1),), 'a') >>> f.imag.compress() 2 [Q1]
- normal_ordered()[source]
Return the normal ordered form of the Qubit excitation operator.
Note
Unlike Fermion excitation operators, Qubit excitation operators will not multiply -1 when the order is swapped.
- Returns
QubitExcitationOperator, the normal ordered operator.
Examples
>>> from mindquantum.core.operators import QubitExcitationOperator >>> op = QubitExcitationOperator("7 1^") >>> op 1 [Q7 Q1^] >>> op.normal_ordered() 1 [Q1^ Q7]
- property real
Convert the coefficient to its real part.
- Returns
QubitExcitationOperator, the real part of this qubit excitation operator.
Examples
>>> from mindquantum.core.operators import QubitExcitationOperator >>> f = QubitExcitationOperator(((1, 0),), 1 + 2j) >>> f += QubitExcitationOperator(((1, 1),), 'a') >>> f.real.compress() 1 [Q1] + a [Q1^]
- to_qubit_operator()[source]
Convert the Qubit excitation operator to the equivalent Qubit operator.
- Returns
QubitOperator, The corresponding QubitOperator according to the definition of Qubit excitation operators.
Examples
>>> from mindquantum.core.operators import QubitExcitationOperator >>> op = QubitExcitationOperator("7^ 1") >>> op.to_qubit_operator() 1/4 [X1 X7] + (-1/4j) [X1 Y7] + (1/4j) [Y1 X7] + 1/4 [Y1 Y7]