Skip to main content
IBM Quantum Platform

백엔드

qiskit_addon_mpf.backends

알고리즘을 위한 선택적 백엔드 DynamicMPF 알고리즘에 대한 선택적 백엔드.


사용 가능성

특정 백엔드를 사용할 수 있는지 여부는 기본 텐서 네트워크 라이브러리의 가용성에 따라 달라집니다. 이는 런타임에 다음 표시기를 사용하여 쉽게 확인할 수 있습니다:

HAS_QUIMB

선택적 quimb 종속성이 설치되어 있는지 여부를 나타냅니다.

HAS_TENPY

선택적 tenpy 종속성이 설치되어 있는지 여부를 나타냅니다.


백엔드

사용 가능 여부(위 참조)에 따라 다음과 같은 백엔드를 사용할 수 있습니다:

quimb_tebdA quimb-기반 TEBD 백엔드.
quimb_layers를 사용한 계층별 시간 진화 백엔드 quimb.
quimb_circuit를 사용하는 회로 기반 시간 진화 백엔드 quimb.
tenpy_tebdA tenpy-기반 TEBD 백엔드.
tenpy_layers를 사용한 계층별 시간 진화 백엔드 tenpy.

인터페이스

이러한 선택적 백엔드 중 하나에서 구현하는 인터페이스는 다음 클래스로 구성됩니다:

진화자

class Evolver

GitHub

베이스: ABC

에서 사용되는 시간 진화 알고리즘의 인터페이스는 DynamicMPF.

이 시간 진화 인터페이스는 DynamicMPF.lhsDynamicMPF.rhs 객체를 시간 진화시켜야 하며 State 객체를 시간 진화시켜야 합니다. 알고리즘의 정확한 메커니즘에 대한 자세한 설명은 DynamicMPF, Statesetup_dynamic_lse().

conjugate

abstract property

유형: bool

이 타임 에볼버 인스턴스가 오른쪽에서 작동하는지 여부를 반환합니다.

evolved_time

abstract property

유형: float

현재 진화 시간을 반환합니다.

step

abstract step()

GitHub

이 시간 진화 알고리즘의 단일 시간 단계를 수행합니다.

이것은 내부적으로 참조된 State 객체(이 인터페이스에서 이름이 지정되지 않은)에 대해 작동합니다. 이 시간 진화 알고리즘 인스턴스가 왼쪽에서 진화할지 오른쪽에서 진화할지는 State 를 왼쪽에서 진화시킬지 오른쪽에서 진화시킬지 여부는 conjugate.

리턴 유형

없음

상태

class State

GitHub

베이스: ABC

의 인터페이스는 DynamicMPF.evolution_state.

이 시간 진화 상태는 LHS와 RHS 간에 공유됩니다 Evolver 인스턴스 간에 공유됩니다 DynamicMPF 인스턴스 간에 공유됩니다. 이 인터페이스를 구현하는 구체적인 백엔드가 텐서 네트워크를 기반으로 하는 대부분의 경우, 이 상태는 행렬 제품 연산자(MPO)가 됩니다. 이는 대부분의 시간 진화 알고리즘이 일반적으로 아래 그림과 같이 1차원 MPS(S#)에 시간 진화 블록(U#)을 연속적으로 적용하여 행렬 곱 상태(MPS)를 진화시키기 때문입니다. 여기서 텐서 네트워크는 시간이 지남에 따라 오른쪽으로 커집니다.

MPS Evolution

S0┄┄┲━━━━┱┄┄┄┄┄┄┄┄┲━━━━┱┄
│   ┃ U1 ┃        ┃ U5 ┃
S1┄┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄
│          ┃ U3 ┃
S2┄┄┲━━━━┱┄┺━━━━┹┄┲━━━━┱┄ ...
│   ┃ U2 ┃        ┃ U6 ┃
S3┄┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄
│          ┃ U4 ┃
S4┄┄┄┄┄┄┄┄┄┺━━━━┹┄┄┄┄┄┄┄┄

하지만 저희의 경우 두 개의 시간 진화 엔진이 하나의 상태를 공유하기를 원합니다. 이를 위해 하나는 오른쪽에서 상태를 진화시키고(이전과 마찬가지로 U#), 두 번째는 왼쪽에서 상태를 진화시키도록 할 수 있습니다(V#). 이렇게 하려면 스테이트도 해당 방향으로 결합이 진행되어야 하므로 이전의 1차원 MPS가 아닌 2차원 MPO(M#)가 됩니다.

MPO Evolution

    ┄┲━━━━┱┄┄┄┄┄┄┄┄┲━━━━┱┄┄M0┄┄┲━━━━┱┄┄┄┄┄┄┄┄┲━━━━┱┄
     ┃ V5 ┃        ┃ V1 ┃  │   ┃ U1 ┃        ┃ U5 ┃
    ┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄┄M1┄┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄
            ┃ V3 ┃         │          ┃ U3 ┃
... ┄┲━━━━┱┄┺━━━━┹┄┲━━━━┱┄┄M2┄┄┲━━━━┱┄┺━━━━┹┄┲━━━━┱┄ ...
     ┃ V6 ┃        ┃ V2 ┃  │   ┃ U2 ┃        ┃ U6 ┃
    ┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄┄M3┄┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄
            ┃ V4 ┃         │          ┃ U4 ┃
    ┄┄┄┄┄┄┄┄┺━━━━┹┄┄┄┄┄┄┄┄┄M4┄┄┄┄┄┄┄┄┄┺━━━━┹┄┄┄┄┄┄┄┄

overlap

abstract overlap(initial_state)

GitHub

이 상태와 제공된 초기 상태의 중첩을 계산합니다.

경고

이 메서드의 구체적인 구현은 TypeError 를 발생시켜야 합니다. 제공된 initial_state 객체가 구현 백엔드에서 지원되지 않는 경우.

매개변수

initial_state (Any) – 중첩을 계산할 초기 상태입니다.

레이즈

TypeError - 제공된 초기 상태가 호환되지 않는 유형인 경우.

리턴

이 상태와 제공된 상태가 겹칩니다.

리턴 유형

복합체

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