Skip to main content
IBM Quantum Platform

canonical_order

canonical_order(op)

Retorna uma cópia de um operador com seus termos ordenados em ordem canônica.

Os termos são ordenados em uma ordem canônica que depende apenas da estrutura de cada termo (a sequência de operadores que ele representa) e não de seu coeficiente. A ordem é, portanto, determinística para um determinado conjunto de termos, independentemente de como o operador tenha sido montado. Os próprios termos permanecem inalterados — isso apenas os reordena, não simplifica nem coloca o operador na ordem normal.

Isso funciona para qualquer um dos tipos de operadores embutidos que implementam o protocolo OperatorTrait ; o operador retornado é do mesmo tipo que a entrada.

Nota

Quaisquer índices de grupo (ver, por exemplo, groups) são preservados: cada termo mantém seu índice de grupo à medida que se move, uma vez que o índice de grupo é uma marcação específica para cada termo, independente da ordem dos termos. Os termos do mesmo grupo simplesmente deixam de ser contíguos a partir de então. Se a entrada não tiver grupos, o resultado também não terá.

>>> 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 – o operador cujos termos devem ser reordenados.

Retorna

Um novo operador do mesmo tipo, com seus termos na ordem canônica.

Aumentos

TypeError – se não op for um tipo de operador compatível (consulte OperatorTrait).

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.