Skip to main content
IBM Quantum Platform

Funciones de filtrado

qf_ferm_op_filter_diagonal_terms

void qf_ferm_op_filter_diagonal_terms(QfFermionOperator *op)

Filtra los términos de un operador que son diagonales en la base de números de ocupación.

Esto elimina todos los términos de la expresión proporcionada que QfFermionOperator sean un producto de operadores numéricos ( aiaia^\dagger_i a_i ). Esto incluye el término constante (un producto de cero operadores numéricos), los operadores numéricos simples, así como los productos de orden superior, como ninj=aiajajain_i n_j = a^\dagger_i a^\dagger_j a_j a_i.

Sugerencia

Una de las principales razones para filtrar dichos términos surge durante la evolución temporal de los operadores, en la que dichos términos diagonales no afectan a la evolución temporal, salvo por la introducción de una fase global. Por consiguiente, las cadenas de bits muestreadas a partir de un estado que ha evolucionado con el tiempo no se ven afectadas. Por lo tanto, se recomienda eliminarlos, por ejemplo, al preparar un hamiltoniano de estructura electrónica para la evolución temporal « qDRIFT » utilizada por SqDRIFT,, ya que así se evita una sobrecarga de muestreo que, de otro modo, sería innecesaria.

Precaución

¡El operador proporcionado debe estar ordenado de forma normal! ¡Se trata de una suposición subyacente de la implementación que no se está verificando! Consulta qf_ferm_op_normal_ordered() aquí cómo obtener un operador de esa 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

El operador se modifica in situ. Si se tienen en cuenta los índices de grupo (véase qf_ferm_op_get_groups()), los términos que se conservan mantienen su agrupación relativa, pero los índices de grupo se reasignan a un intervalo contiguo que comienza en 0. Por lo tanto, no debes dar por sentado que el índice de grupo específico de ningún término se mantenga durante la llamada a esta función.

Parámetros

  • op – Un puntero al operador fermiónico ordenado normalmente cuyos términos se van a filtrar (modificar in situ).
¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.