Skip to main content
IBM Quantum Platform

canonical_order

canonical_order(op)

Devuelve una copia de un operador con sus términos ordenados según un orden canónico.

Los términos se ordenan según un orden canónico que depende únicamente de la estructura de cada término (la cadena de operadores que representa) y no de su coeficiente. Por lo tanto, el orden es determinista para un conjunto dado de términos, independientemente de cómo se haya construido el operador. Los términos en sí no se modifican: esto solo cambia su orden, no simplifica ni normaliza el operador.

Esto funciona con cualquiera de los tipos de operador integrados que implementen el protocolo OperatorTrait ; el operador devuelto es del mismo tipo que el de entrada.

Nota

Cualquier índice de grupo (véase, por ejemplo, groups) se conservan: cada término lleva consigo su índice de grupo a medida que se desplaza, ya que el índice de grupo es una etiqueta propia de cada término, independiente del orden de los mismos. A partir de ese momento, los términos del mismo grupo ya no son contiguos. Si la entrada no tiene grupos, tampoco los tiene el resultado.

>>> from qiskit_fermions.operators import FermionOperator
>>> from qiskit_fermions.operators.terms.ordering import canonical_order
>>> op = FermionOperator.from_dict(
...     {
...         ((True, 1), (False, 0)): 1.0,  # a†_1 a_0
...         ((True, 0), (False, 1)): 2.0,  # a†_0 a_1
...     }
... )
>>> ordered = canonical_order(op)
>>> list(ordered.iter_terms())
[([(True, 0), (False, 1)], (2+0j)), ([(True, 1), (False, 0)], (1+0j))]

Parámetros

op : el operador cuyos términos se van a reordenar.

Devuelve

Un nuevo operador del mismo tipo con sus términos en orden canónico.

Subidas

TypeError – si no op es un tipo de operador admitido (véase OperatorTrait).

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.