UCJ
class UCJ(ucj_op)
베이스: FermionicGate
(국소) 단일성 클러스터 Jastrow ((L)UCJ) 가정을 구현합니다.
단일 클러스터 야스트로 연산자는 다음과 같은 형태를 가진다
여기서 각 는 OrbitalRotation, 각 는 대각 쿨롱 연산자이다
그리고 는 선택적인 최종 궤도 회전입니다. 의 항의 개수는 가설 반복 횟수와 같습니다.
이 연산자 자체는 ffsim 으로 구현되었으며, 이 게이트는 이를.로 변환합니다 FermionicCircuit. 이러한 업무 분담은 의도된 것입니다. ffsim은 안자츠(ansatz) 수학적 처리( 진폭의 이중 인자 분해, 압축 변형, 변분 최적화기가 구동하는 매개변수 벡터 패킹)를 담당하는 반면, 이 게이트는 결과를 페르미온 모드로 표현하여 트랜스파일러가 어떤 페르미온-큐비트 인코딩 방식을 통해서든 이를 하위로 변환할 수 있도록 합니다. ffsim 연산자를 변경 없이 그대로 전달해야 두 가지가 일관성을 유지할 수 있습니다. ffsim 관계 가이드를 참조하십시오.
ffsim의 세 가지 UCJ 연산자 중 어느 것이든 허용되며, 해당 연산자의 유형에 따라 이 게이트가 적용되는 스핀 변형과 모드 수가 결정됩니다:
UCJOpSpinBalanced블록 스핀2 * norb모드에 작용하며, 두 스핀 부문이 하나의 궤도 회전을 공유하고, 대각선[alpha-alpha, alpha-beta]쿨롱 행렬을 사용합니다(베타-베타는 알파-알파를 재사용하고, 베타-알파는 알파-베타를 재사용합니다).UCJOpSpinUnbalanced블록 스핀2 * norb모드에 작용하며, 각 모드는 독립적인[alpha, beta]회전과[alpha-alpha, alpha-beta, beta-beta]행렬을 가진다.UCJOpSpinless스핀이 없는norb모드에 작용한다.
ffsim은 스핀이 존재하는 영역에서도 유효하며 UCJOpSpinless , 이 경우 그 텐서는 크로스-스핀 항 없이 두 스핀 영역 모두에 작용한다. 게이트는 구축 시 너비를 고정해야 하므로, 이 게이트는 항상 해당 유형을 단일 norb모드 레지스터로 인식합니다. 알파-베타 블록이 UCJOpSpinBalanced 0인 연산자로 두 레지스터 읽기 연산을 구현하십시오. 이는 동일한 연산자입니다.
ffsim은 Windows를 지원하지 않으므로( PySCF 에 대한 무조건적인 의존성 때문), 이 게이트에는 extra ffsim (pip install "qiskit-fermions[ffsim]")가 필요하지만 Windows에서는 사용할 수 없습니다. Windows에서 WSL을 사용하세요.
이것은 초기 개발용 시제품입니다. 이 패키지의 출시 전 개발 단계에서 예고 없이 인터페이스가 변경될 수 있으니 주의하시기 바랍니다.
>>> import ffsim
>>> from qiskit_fermions.circuit.library import UCJ
>>> ucj_op = ffsim.random.random_ucj_op_spin_balanced(3, n_reps=1, seed=1234)
>>> gate = UCJ(ucj_op)
>>> gate.norb, gate.num_modes, gate.n_reps
(3, 6, 1)
이 게이트의 인스턴스를 초기화하려면 아래에 나열된 인수를 사용하면 됩니다.
매개변수
ucj_op (Any) – 회로를 구성할 ffsim UCJ 연산자로, UCJOpSpinBalanced, 또는 UCJOpSpinUnbalanced 중 하나를 선택합니다 UCJOpSpinless. 이 게이트의 유형에 따라 스핀 변형과 이 게이트가 작용하는 모드의 수가 결정됩니다(클래스 문서 문자열 참조).
인상
- MissingOptionalLibraryError – 가 설치되어
ffsim있지 않은 경우. - TypeError – 만약
ucj_op가 ffsim의 세 가지 UCJ 연산자 유형 중 하나가 아닌 경우.
속성
n_reps
안자츠 반복 횟수.
norb
공간 궤도의 개수.
ucj_op
이 게이트가 회로를 구성하는 데 사용하는 ffsim UCJ 연산자.
프로토콜 방법
_apply_unitary_placed_
_apply_unitary_placed_(vec, norb, nelec, copy, freg_indices)
벡터의 전역 모드에 해당 모드를 매핑한 후, 해당 가정을 적용합니다.
이는 게이트의 정의(반복당 궤도 회전 및 대각선 쿨롱 진화)를 구축하고 이를 에 적용하며 vec, 이때 정의 회로는 전역 모드들에 배치됩니다( freg_indices 정의 회로의 각 명령어는 해당 절대 모드들에 재라벨링됩니다). 정확한 게이트 순서에 대해서는 _define() [여기]를 참조하십시오.
매개변수
- vec (ndarray) – 작용을 가할 상태 벡터.
- norb (int) – 전역 상태 벡터의 공간 궤도 수.
- nelec (int |tuple[int, int]) – 스핀이 없는 시스템의 경우 단일 정수이거나, 스핀 알파 및 스핀 베타 페르미온의 개수를 저장하는 정수 쌍입니다.
- copy (bool) – 벡터에 연산을 적용하기 전에 복사할지 여부.
- freg_indices (list[int]) – 이 게이트의 국소 모드가 매핑되는 절대(전역) 모드 인덱스.
리턴
변환된 벡터.
리턴 유형