Skip to main content
IBM Quantum Platform

필터링 함수

qf_ferm_op_filter_diagonal_terms

void qf_ferm_op_filter_diagonal_terms(QfFermionOperator *op)

직업-번호 기저에서 대각선에 위치한 연산자의 항들을 걸러냅니다.

이는 주어진 식에서 수 연산자의 곱( aiaia^\dagger_i a_i ) QfFermionOperator 인 모든 항을 제거합니다. 여기에는 상수 항(수 연산자 0개의 곱), 단일 수 연산자뿐만 아니라 ninj=aiajajain_i n_j = a^\dagger_i a^\dagger_j a_j a_i 과 같은 고차 곱도 포함됩니다.

힌트

이러한 항을 걸러내야 하는 주된 이유는 연산자의 시간 진화 과정에서 발생하는데, 이러한 대각 항들은 전역 위상을 도입하는 것 외에는 시간 진화에 영향을 미치지 않기 때문이다. 따라서, 시간의 흐름에 따라 변화한 상태에서 추출된 비트열은 영향을 받지 않습니다. 따라서, 예를 들어 SqDRIFT, 에서 사용하는 qDRIFT 의 시간 진화 계산을 위한 전자 구조 해밀토니안을 준비할 때와 같이, 이를 제거하는 것이 권장됩니다. 이는 그렇지 않을 경우 불필요한 샘플링 오버헤드를 피할 수 있기 때문입니다.

주의

제공된 연산자는 정상 순서여야 합니다! 이는 구현의 기본 가정 중 하나이지만, 아직 검증되지 않았습니다! 해당 형태의 연산자를 구하는 방법은 를 qf_ferm_op_normal_ordered() 참조하십시오.

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);
참고

연산자는 원본을 수정하는 방식으로 처리됩니다. 그룹 인덱스를 추적하는 경우(참조 qf_ferm_op_get_groups()), 남아 있는 항은 상대적인 그룹 구성을 유지하지만, 그룹 인덱스는 0부터 시작하는 연속된 범위로 재할당됩니다. 따라서 이 함수를 호출하는 동안 어떤 용어의 특정 그룹 인덱스가 유지된다고 가정해서는 됩니다.

매개변수

  • op – 필터링(제자리 수정) 대상이 되는 항들을 포함하는 정규 순서 페르미온 연산자에 대한 포인터.
이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.