Skip to main content
IBM Quantum Platform

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).

하트리-포크 행렬식은 각 스핀 부문의 가장 낮은 인덱스를 가진 궤도를 채웁니다. 참조가 스핀이 없는지 스핀이 있는지는 로부터 추론된다( nelecnorb 모드의 스핀이 없는 해석을 선택하고 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) 약정에 따라 해석됩니다:

  • 스핀이 없는 (nelecint): 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 경우.

리턴 유형

ndarray

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.