FermionicCircuit
class FermionicCircuit(num_modes)
베이스: object
페르미온 회로를 표현하기 위한 QuantumCircuit 래퍼입니다.
이 클래스는 기본이 되는.의 전체 API에 비해 축소된 API를 유지합니다 QuantumCircuit. 이는 (다른 방법들 중에서도) 페르미온 회로에 큐비트 기반 게이트를 적용하는 기능을 노출하지 않기 위한 것으로, 일반적인 경우 이는 명확히 정의된 연산이 아니기 때문이다.
회로 인스턴스를 초기화하려면 아래에 나열된 인수를 사용할 수 있습니다.
매개변수
num_modes (int) – 이 회로가 작용하는 페르미온 모드의 개수.
속성
metadata
다시 노출합니다 metadata.
modes
이 회로가 작용하는 bits 페르미온 모드.
register
내부 회로의 FermionicRegister.
메소드
append
append(gate, fargs, cargs=None, *, copy=True)
이 회로에 FermionicGate 를 추가합니다.
매개변수
-
gate (FermionicGate) – 적용할 페르미온 게이트.
-
fargs (Qubit |QuantumRegister |int |slice |Sequence[Qubit |int]) – 이 게이트가 작용하는 페르미온 모드.
-
cargs (None) –
이 게이트가 작용하는 고전적 비트들.
경고현재 이러한 종류의 게이트는 지원되지 않습니다.
인상
ValueError – 제공된 가 의 인스턴스가 아닌 gate 경우 FermionicGate.
리턴 유형
없음
count_ops
decompose
decompose(gates_to_decompose=None, reps=1)
다시 노출합니다 decompose().
매개변수
- gates_to_decompose (str |type[Instruction] | Sequence[str |type[Instruction]] | None)
- reps (int)
리턴 유형
draw
프로토콜 방법
_apply_unitary_
_apply_unitary_(vec, norb, nelec, copy)
이 회로를 ffsim 상태 벡터에 적용하여 ffsim의 프로토콜을 구현합니다.
이는 회로를 위상 순서대로 순회하며, ffsim의 ffsim.SupportsApplyUnitary 프로토콜을 통해 각 명령어의 유니터리 효과를 상태 벡터에 적용합니다(로컬에서는 로 반영됨 SupportsApplyUnitary). 레지스터의 일부에 작용하는 각 명령어는 적용되기 전에 해당 페르미온 모드의 레이블이 절대(전역) 인덱스로 재지정됩니다.
자세한 내용은 _apply_unitary_placed_() 를 참조하십시오. 이 방법은 회로의 모드가 벡터의 모드와 동일하다고 가정합니다( 0..num_modes 즉, 정체 모드 배치).
매개변수
- vec (ndarray) – 이 회로를 적용할 상태 벡터. 빈 회로는 이를 변경하지 않은 채 반환합니다.
- norb (int) – 공간 궤도의 개수.
- nelec (int |tuple[int, int]) – 스핀이 없는 시스템의 경우 페르미온 개수를 나타내는 단일 정수이거나, 스핀 알파 및 스핀 베타 페르미온의 개수를 저장하는 정수 쌍입니다.
- copy (bool) – 벡터에 연산을 적용하기 전에 복사할지 여부.
리턴
변환된 벡터.
인상
- TypeError – 회로 명령어가 ffsim의
ffsim.SupportsApplyUnitary프로토콜을 구현하지 않는 경우. - ValueError – 특정
norb및 에 대해 회로 명령어가 자체 단일 연산자를 적용하지 않는 경우nelec; 또는 일반_apply_unitary_프로토콜만을 구현하는 명령어가 비정체 모드 부분집합에 배치된 경우.
리턴 유형
_apply_unitary_placed_
_apply_unitary_placed_(vec, norb, nelec, copy, freg_indices)
이 회로의 모드를 벡터의 전역 모드에 할당한 후, 이 회로를 적용합니다.
이는 회로를 위상 순서대로 순회하며, ffsim의 ffsim.SupportsApplyUnitary 프로토콜을 통해 각 명령어의 유니터리 효과를 상태 벡터에 적용합니다. 각 명령어의 고유 모드는 먼저 이 회로의 배치에 따라 매핑됩니다. 즉, 회로 국소 모드는 전역 모드로 m 매핑되므로 freg_indices[m], 회로 국소 모드에 작용하는 하위 명령어는 전역 모드에 적용됩니다 [m0, m1, ...]``[freg_indices[m0], freg_indices[m1], ...] . 정체 배치의 경우, 이는 freg_indices == 0..num_modes 정확히 다음과 같습니다 _apply_unitary_(). 부분 집합 배치를 사용하면 이 회로가 더 큰 레지스터의 부분 집합(예: UCJ)에 배치된 게이트의 정의 역할을 하게 됩니다. 이 배치 인식 확장 기능은 SupportsApplyUnitaryPlaced – ffsim에 상응하는 기능이 없는 패키지별 프로토콜로 문서화되어 있습니다.
명령어는 배치 인식 확장 _apply_unitary_placed_ (SupportsApplyUnitaryPlaced)을 구현하는 경우에만 절대 모드에 배치됩니다. 모드 인자가 없어 벡터의 0..k 모든 모드에 작용하는 ffsim의 기본 ( _apply_unitary_SupportsApplyUnitary )만 구현하는 명령어는, 그 배치가 항등 배치가 아닐 경우 적용될 수 없습니다 [0, 1, ..., k-1]. 다른 어떤 부분 집합에서도 배치를 표현할 수 없으므로, 잘못된 모드에 명령어가 무음으로 적용되는 대신 거부됩니다.
매개변수
- vec (ndarray) – 이 회로를 적용할 상태 벡터. 빈 회로는 이를 변경하지 않은 채 반환합니다.
- norb (int) – 전역 상태 벡터의 공간 궤도 수.
- nelec (int |tuple[int, int]) – 스핀이 없는 시스템의 경우 페르미온 개수를 나타내는 단일 정수이거나, 스핀 알파 및 스핀 베타 페르미온의 개수를 저장하는 정수 쌍입니다.
- copy (bool) – 벡터에 연산을 적용하기 전에 복사할지 여부.
- freg_indices (list[int]) – 이 회로의 모드들이 매핑되는 절대(전역) 모드 지수.
리턴
변환된 벡터.
인상
- TypeError – 회로 명령어가 ffsim의
ffsim.SupportsApplyUnitary프로토콜을 구현하지 않는 경우. - ValueError – 특정
norb및 에 대해 회로 명령어가 자체 단일 연산자를 적용하지 않는 경우nelec; 또는 일반_apply_unitary_프로토콜만을 구현하는 명령어가 비정체 모드 부분집합에 배치된 경우.
리턴 유형