Skip to main content
IBM Quantum Platform
Informações sobre tradução

Traduções adicionais para esta página em outros idiomas estarão disponíveis em breve.

order_terms

order_terms(op, key, *, reverse=False)

Returns a copy of an operator with its terms reordered by a user-provided key.

Unlike canonical_order(), which imposes a single fixed, coefficient-independent order, this function lets you sort the terms by any criterion you like: the key function is applied to each term exactly as sorted() would, and the terms are rebuilt into a new operator of the same type in the resulting order. This is useful whenever the order of the terms matters for a downstream computation (e.g. randomized product-formula sampling), since it gives you a deterministic, reproducible order independent of how the operator happened to be assembled.

The terms themselves are left untouched – this only reorders them, it does not simplify or normal-order the operator. This works for any of the built-in operator types implementing the OperatorTrait protocol; the returned operator is of the same type as the input.

Note

The key receives each term as the same tuple that the operator’s iter_terms() yields – or, when the operator tracks groups (see groups), the longer tuple from iter_terms_with_groups(), whose trailing element is the term’s group index. The exact layout of the term itself depends on the operator type. Group indices are preserved – each term carries its group index along as it moves – and if the input tracks no groups, neither does the result.

>>> from qiskit_fermions.operators import FermionOperator
>>> from qiskit_fermions.operators.terms.ordering import order_terms
>>> op = FermionOperator.from_dict(
...     {
...         ((True, 1), (False, 0)): 1.0,  # a†_1 a_0, |coeff| = 1
...         ((True, 0), (False, 1)): 3.0,  # a†_0 a_1, |coeff| = 3
...     }
... )
>>> ordered = order_terms(op, key=lambda term: abs(term[1]), reverse=True)
>>> list(ordered.iter_terms())
[([(True, 0), (False, 1)], (3+0j)), ([(True, 1), (False, 0)], (1+0j))]

Parameters

  • op (OperatorTrait) – the operator whose terms to reorder.
  • key (Callable[[tuple], Any]) – a function of a single term, used exactly as the key argument of sorted(). It receives each term as the tuple described in the note above.
  • reverse (bool) – if True, the terms are sorted in descending order of key.

Returns

A new operator of the same type with its terms in the requested order.

Return type

OperatorTrait

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