Skip to main content
IBM Quantum Platform

Funzioni di ordinamento

qf_ferm_op_canonical_order

QfFermionOperator *qf_ferm_op_canonical_order(const QfFermionOperator *op)

Restituisce una copia di un operatore fermionico con i suoi termini disposti in ordine canonico.

I termini sono ordinati secondo un ordine canonico che dipende esclusivamente dalla struttura di ciascun termine (la stringa di operatori che esso rappresenta) e non dal suo coefficiente. L'ordine è quindi deterministico per un dato insieme di termini, indipendentemente da come sia stato assemblato l'operatore. I termini stessi rimangono invariati: questa operazione si limita a riorganizzarli, senza semplificare né riportare l'operatore all'ordine normale.

 1QfFermionOperator *op = qf_ferm_op_zero();
 2bool actions[2] = {true, false};
 3uint32_t modes_a[2] = {1, 0};
 4QkComplex64 coeff_a = {1.0, 0.0};
 5qf_ferm_op_add_term(op, 2, actions, modes_a, &coeff_a);
 6uint32_t modes_b[2] = {0, 1};
 7QkComplex64 coeff_b = {2.0, 0.0};
 8qf_ferm_op_add_term(op, 2, actions, modes_b, &coeff_b);
 9
10QfFermionOperator *ordered = qf_ferm_op_canonical_order(op);
Nota

Eventuali indici di gruppo (vedi qf_ferm_op_get_groups()) vengono conservati: ogni termine porta con sé il proprio indice di gruppo quando viene spostato, poiché un indice di gruppo è un’etichetta specifica per ogni termine, indipendente dall’ordine dei termini. Da quel momento in poi, i termini dello stesso gruppo semplicemente non sono più contigui. Se l'input non contiene gruppi, nemmeno il risultato ne contiene.

Parametri

  • op – Un puntatore all’operatore i cui termini devono essere riordinati.

Risultati

Un puntatore all'operatore creato.

qf_maj_op_canonical_order

QfMajoranaOperator *qf_maj_op_canonical_order(const QfMajoranaOperator *op)

Restituisce una copia di un operatore di Majorana con i suoi termini disposti in ordine canonico.

I termini sono ordinati secondo un ordine canonico che dipende esclusivamente dalla struttura di ciascun termine (la stringa di operatori che esso rappresenta) e non dal suo coefficiente. L'ordine è quindi deterministico per un dato insieme di termini, indipendentemente da come sia stato assemblato l'operatore. I termini stessi rimangono invariati: questa operazione si limita a riorganizzarli, senza semplificare l'operatore.

1QfMajoranaOperator *op = qf_maj_op_zero();
2uint32_t modes_a[2] = {1, 0};
3QkComplex64 coeff_a = {1.0, 0.0};
4qf_maj_op_add_term(op, 2, modes_a, &coeff_a);
5uint32_t modes_b[2] = {0, 1};
6QkComplex64 coeff_b = {2.0, 0.0};
7qf_maj_op_add_term(op, 2, modes_b, &coeff_b);
8
9QfMajoranaOperator *ordered = qf_maj_op_canonical_order(op);
Nota

Eventuali indici di gruppo (vedi qf_maj_op_get_groups()) vengono conservati: ogni termine porta con sé il proprio indice di gruppo quando viene spostato, poiché un indice di gruppo è un’etichetta specifica per ogni termine, indipendente dall’ordine dei termini. Da quel momento in poi, i termini dello stesso gruppo semplicemente non sono più contigui. Se l'input non contiene gruppi, nemmeno il risultato ne contiene.

Parametri

  • op – Un puntatore all’operatore i cui termini devono essere riordinati.

Risultati

Un puntatore all'operatore creato.

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.