Skip to main content
IBM Quantum Platform

UCJ

class UCJ(ucj_op)

베이스: FermionicGate

(국소) 단일성 클러스터 Jastrow ((L)UCJ) 가정을 구현합니다.

단일 클러스터 야스트로 연산자는 다음과 같은 형태를 가진다

(∏k=1LUk eiJk Uk†)Ufinal\left(\prod_{k=1}^{L} \mathcal{U}_k\, e^{i \mathcal{J}_k}\, \mathcal{U}_k^\dagger\right) \mathcal{U}_\text{final}

여기서 각 Uk\mathcal{U}_k 는 OrbitalRotation, 각 Jk\mathcal{J}_k 는 대각 쿨롱 연산자이다

J=12∑ij,στJijστ niσ njτ,\mathcal{J} = \frac12 \sum_{ij,\sigma\tau} \mathbf{J}^{\sigma\tau}_{ij}\, n_{i\sigma}\, n_{j\tau},

그리고 Ufinal\mathcal{U}_\text{final} 는 선택적인 최종 궤도 회전입니다. LL 의 항의 개수는 가설 반복 횟수와 같습니다.

이 연산자 자체는 ffsim 으로 구현되었으며, 이 게이트는 이를.로 변환합니다 FermionicCircuit. 이러한 업무 분담은 의도된 것입니다. ffsim은 안자츠(ansatz) 수학적 처리( t2t_2 진폭의 이중 인자 분해, 압축 변형, 변분 최적화기가 구동하는 매개변수 벡터 패킹)를 담당하는 반면, 이 게이트는 결과를 페르미온 모드로 표현하여 트랜스파일러가 어떤 페르미온-큐비트 인코딩 방식을 통해서든 이를 하위로 변환할 수 있도록 합니다. 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]) – 이 게이트의 국소 모드가 매핑되는 절대(전역) 모드 인덱스.

리턴

변환된 벡터.

리턴 유형

ndarray

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