Skip to main content
IBM Quantum Platform

Funções de filtragem

qf_ferm_op_filter_diagonal_terms

void qf_ferm_op_filter_diagonal_terms(QfFermionOperator *op)

Filtra os termos de um operador que são diagonais na base de números de ocupação.

Isso remove todos os termos da expressão fornecida QfFermionOperator que sejam um produto de operadores numéricos ( aiaia^\dagger_i a_i ). Isso inclui o termo constante (um produto de zero operadores numéricos), operadores numéricos isolados, bem como produtos de ordem superior, como ninj=aiajajain_i n_j = a^\dagger_i a^\dagger_j a_j a_i.

Sugestão

Uma das principais razões para filtrar esses termos surge durante a evolução temporal dos operadores, na qual esses termos diagonais não afetam a evolução temporal, a não ser pela introdução de uma fase global. Consequentemente, as sequências de bits amostradas a partir de um estado que sofreu evolução temporal permanecem inalteradas. Recomenda-se, portanto, removê-los, por exemplo, ao preparar um hamiltoniano de estrutura eletrônica para a evolução temporal do tipo “ qDRIFT ” () utilizada por SqDRIFT,, pois isso evita uma sobrecarga de amostragem que, de outra forma, seria desnecessária.

Cuidado

O operador fornecido deve ser ordenado normalmente! Essa é uma suposição subjacente à implementação que não está sendo verificada! Veja qf_ferm_op_normal_ordered() como obter um operador dessa forma.

1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2QfFermionOperator *op = qf_ferm_op_from_fcidump(fcidump);
3
4QfFermionOperator *normal = qf_ferm_op_normal_ordered(op, NULL);
5
6qf_ferm_op_filter_diagonal_terms(normal);
Nota

O operador é modificado no próprio local. Se ele rastrear índices de grupo (ver qf_ferm_op_get_groups()), os termos remanescentes mantêm seu agrupamento relativo, mas os índices de grupo são reatribuídos a um intervalo contíguo a partir de 0. Portanto, você não deve contar com a preservação do índice de grupo específico de qualquer termo ao longo de uma chamada a esta função.

Parâmetros

  • op – Um ponteiro para o operador fermiónico ordenado normalmente cujos termos devem ser filtrados (modificados no próprio local).
Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.