InitializeModes
class InitializeModes(occupation)
베이스: FermionicGate
페르미온 모드의 점유 상태를 준비하거나(또는 시뮬레이션 환경에서는 이를 검증합니다).
이 게이트는 자신이 배치된 모드에 대해 의도된 동작을 선언합니다. 그 동작은 회로가 어떻게 사용되는지에 따라 달라집니다:
- 트랜스파일링됨 (큐비트 게이트로 합성됨): 해당 상태를 생성합니다. 합성 플러그인은 초기화 게이트에서 기대할 수 있듯이, 지정된 모드의 점유 상태를 설정하는 게이트를 출력합니다.
- Simulated (
_apply_unitary_()): 생성자보다는 검증자 역할을 합니다. 주어진 상태 벡터에 대해, 해당 벡터의 진폭이 그 벡터가occupation정의하는 부분공간 내에 국한되어 있는지 확인하고, 벡터를 변경하지 않은 채로 반환함으로써 — 값을 변경하지 않고 — 입력된 상태가 의도된 기준 상태임을 보증하여, 이후의 변환이 해당 상태에 적용되도록 합니다.
두 모드 모두에서 게이트는 점유 명칭에 해당하는 궤도만 제한하며(스핀 섹터별로 해당 섹터의 축을 따라만 제한함), 따라서 여러 개의 InitializeModes 게이트를 병렬로 배치하여 상태의 서로 겹치지 않는 조각들을 독립적으로 생성할 수 있습니다. 예를 들어, 스핀 섹터당 하나의 게이트를 배치하거나 궤도 그룹당 하나의 게이트를 배치하는 방식이 있습니다. 스핀풀 게이트는 단일 섹터(또는 그 일부)를 포함하거나 두 섹터를 모두 완전히 지정할 수 있지만, 두 섹터를 부분적으로 걸쳐 있는 경우는 허용되지 않습니다(참조 _apply_unitary_placed_()).
를 사용하여 하트리-팍 기준의 점유 상태를 구성하십시오 from_hartree_fock() .
이것은 초기 개발용 시제품입니다. 이 패키지의 출시 전 개발 단계에서는 사전 공지 없이 인터페이스가 변경될 수 있으니 주의하시기 바랍니다.
이 게이트의 인스턴스를 초기화하려면 아래에 나열된 인수를 사용하면 됩니다.
매개변수
occupation (Sequence[bool]) – 이 게이트에 의해 초기화되는 FermionicRegister 각 모드의 점유 상태를 나타내는 부울 값의 시퀀스.
속성
occupation
이 게이트에 의해 초기화되는 FermionicRegister 각 모드의 점유 상태를 나타내는 부울 값 시퀀스.
메소드
from_hartree_fock
classmethod from_hartree_fock(norb, nelec)
.에 대한 하트리-포크 기준 점유 상태를 위한 게이트를 구축합니다 (norb, nelec).
하트리-포크 행렬식은 각 스핀 부문의 가장 낮은 인덱스를 가진 궤도를 채웁니다. 참조가 스핀이 없는지 스핀이 있는지는 로부터 추론된다( nelec 는 norb 모드의 스핀이 없는 해석을 선택하고 int , (n_alpha, n_beta) 쌍은 모드의 2 * norb 스핀이 있는 블록 스핀 해석을 선택한다). 반환된 게이트를 해당 레지스터에 배치하여 하트리-팍 기준 상태를 검증하십시오.
매개변수
- norb (int) – 공간 궤도의 개수.
- nelec (int |tuple[int, int]) – 스핀이 없는 시스템의 경우 단일 정수이거나, 스핀 알파 및 스핀 베타 페르미온의 개수를 저장하는 정수 쌍입니다.
리턴
하트리-팍 행렬식이 주파수인 게이트 InitializeModes .
인상
ValueError – 전자 수가 해당 섹터에 있는 가용 norb 궤도의 수를 초과하는 경우.
리턴 유형
프로토콜 방법
_apply_unitary_placed_
_apply_unitary_placed_(vec, norb, nelec, copy, freg_indices)
이 함수는 이 게이트의 점유 부분공간으로만 제한되며 vec , 입력값을 변경하지 않고 그대로 반환한다고 주장한다.
변환 게이트와 달리, 이 게이트는 상태를 변경하지 않습니다. 이 게이트는 vec의 진폭이 가 정의하는 occupation 부분공간 내에 완전히 속하는지 확인하고, 그렇다면 를 변경하지 vec 않은 채 그대로 반환합니다. 이 부분공간은, 명명된 궤도에서 이 게이트와 점유 방식이 일치하는 행렬식의 집합이며, 명명되지 않은 모든 궤도는 비워둔 상태이다. 따라서 부분 점유(섹터의 일부)는 행렬식의 전체 계열을 수용하며, 이 검사는 다른 평행 InitializeModes 게이트들과 결합된다.
게이트의 로컬 모드( occupation 로컬 모드당 하나의 플래그)는 다음을 통해 전역 레지스터에 할당됩니다 freg_indices: 로컬 모드는 전역 모드를 제한합니다 i``freg_indices[i] . 그런 다음 전역 모드는 다음의 (norb, nelec) 약정에 따라 해석됩니다:
- 스핀이 없는 (
nelec는int):norb모드는 직접적으로 궤도이며, 검사는C(norb, nelec)-차원 공간에서 이루어집니다. - Spinful (
nelec는 한 쌍임): 블록-스핀 규칙에 따라 모드 는 알파 궤도이고0..norb, 모드 는 베타 궤도이다norb..2*norb. 단일 섹터에 접촉하는 게이트는 해당 섹터의 상태(dim_a, dim_b)축(알파 게이트의 경우 전체 행의 집합, 베타 게이트의 경우 전체 열의 집합)을 제한하고 다른 축은 자유롭게 두므로, 다른 섹터에 있는 병렬 게이트와 조합됩니다. 게이트가 두 섹터를 모두 포함할 수도 있지만, 이는 게이트가 완전한 행렬식(두 섹터의 모든 궤도가 명시되고, 남아 있는 궤도가 하나도 없는 경우)을 고정할 때에만 해당됩니다. 두 섹터의 일부 궤도만 제한하고 나머지는 자유롭게 두는 부분적 중첩은, 축별 부분공간의 곱이 아니며 조합이 불가능하므로 허용되지 않습니다(대신 섹터당 하나의 게이트를 사용하십시오).
이 검사는 평등성이 아니라 제한성에 관한 것입니다: 입사 진폭은 해당 부분공간 내에서 어떤 위상이나 크기라도 가질 수 있으므로(전역 위상이나 정규화는 물리적으로 무관합니다), 이는 기준점을 특정 결정자 벡터에 고정하지 않고도 그 타당성을 입증합니다.
매개변수
- vec (ndarray) – 검증할 상태 벡터. 그 길이는 섹터
(norb, nelec)크기와 일치해야 합니다. - norb (int) – 전역 상태 벡터의 공간 궤도 수.
- nelec (int |tuple[int, int]) – 스핀이 없는 시스템의 경우 단일 정수이거나, 스핀 알파 및 스핀 베타 페르미온의 개수를 저장하는 정수 쌍입니다. 정수는 스핀이 없는 모드 해석(
norb모드들이 궤도인 경우)을 선택하며, 한 쌍은 모드에2 * norb대한 스핀이 있는 블록-스핀(orb, spin)해석을 선택한다. - copy (bool) – 프로토콜 준수로 허용되지만 아무런 효과도 없습니다. 이 게이트는 상태를 변경하지 않으므로, 는 어쨌든 있는 그대로 반환됩니다
vec. - freg_indices (list[int]) – 이 게이트의 국소 모드가 매핑되는 절대(전역) 모드 인덱스.
리턴
입력은 vec, 점유 부분공간에 국한되어 있음이 확인되면 변경되지 않은 채로 유지됩니다.
인상
ValueError – 점유 모드가 가 암시하는 범위 밖으로 벗어나는 경우 norb; 스핀을 가진 게이트가 두 스핀 섹터를 부분적으로 가로지르는 경우(전체 행렬식을 고정하지 않는 경우); vec의 길이가 섹터 (norb, nelec) 차원과 일치하지 않는 경우; 또는 의 진폭이 점유가 정의하는 부분공간 밖으로 벗어나는 vec 경우.
리턴 유형