Skip to main content
IBM Quantum Platform

Z2Symmetries

class qiskit.quantum_info.Z2Symmetries(symmetries, sq_paulis, sq_list, tapering_values=None, *, tol=1e-14)

GitHub

베이스: object

$Z_2$ 대칭 변환기는 문제 해밀턴에서 대칭을 식별하고 이를 사용하여 이 문제에 대해 연산자를 폴리스로 더 효율적으로 테이퍼링하여 표현합니다. 식별된 각 대칭에 대해 두 개의 대칭 섹터(대칭의 두 가지 가능한 고유값-테이퍼링 값)를 테스트해야 하는 비용으로 폴리 표현에서 하나의 큐비트를 제거할 수 있습니다. 주 연산자의 접지 상태 찾기와 같은 특정 문제에서는 솔루션의 대칭 섹터를 선험적으로 식별하여 계산 오버헤드를 효과적으로 줄일 수 있습니다.

Z2Symmetries 객체가 생성되면 다음 속성을 읽고 업데이트할 수 있습니다.

tapering_values

섹터를 결정하는 가치.

유형

list[ int ] 또는 None

tol

계수의 실제 및 복잡한 부분을 무시하기 위한 허용 오차 임계값입니다.

유형

부동

참조

[1] : Bravyi, S., 외, "페르미온 해밀턴 시뮬레이션을 위한 큐비트 축소"

arXiv:1701.08213

매개변수

  • symmetries (Iterable[Pauli]) – $Z_2$ 대칭 목록을 나타내는 객체입니다. 이들은 대칭 그룹 $langle tau_1, tau_2dots rangle>$의 생성자에 해당합니다.
  • sq_paulis (Iterable[Pauli]) – 대칭 $tau_i$와 반교대하고 다른 모든 대칭 $tau_ {jneq i} $와 교대하는 단일 큐비트 폴리 $sigma^x_ {q(i)} $의 목록을 나타내는 객체입니다. 이러한 연산자는 단일 클리포드 연산자를 구성하는 데 사용됩니다.
  • sq_list (Iterable[int]) – 클리포드 연산자를 구축하는 데 사용된 단일 큐비트 폴리 연산자의 인덱스 $q(i)$ 목록입니다.
  • tapering_values (Iterable[int] | None) – 각 대칭의 대칭 섹터를 결정하는 고유값 목록입니다.
  • tol (float) – 계수의 실제 및 복잡한 부분을 무시하기 위한 허용 오차 임계값입니다.

레이즈

QiskitError – 유효하지 않은 파울리스. 대칭성 목록, 단일 큐비트 파울리 지지값 및 테이퍼링 값의 길이는 모두 동일해야 합니다. 이 길이는 적용된 대칭의 수를 나타내며, 제거된 큐비트의 수와 직접적으로 일치합니다.


속성

cliffords

대칭과 단일 큐비트 X를 기반으로 구축된 클리포드 연산자를 가져옵니다.

리턴

해밀턴을 대각선으로 만드는 데 사용되는 단위 목록입니다.

settings

연산자 설정을 반환합니다.

sq_list

정사각형 목록을 반환합니다.

sq_paulis

정사각형 폴리를 반환합니다.

symmetries

대칭을 반환합니다.


메소드

convert_clifford

convert_clifford(operator)

GitHub

이 방법은 테이퍼링의 첫 번째 부분을 작동합니다. 연산자를 현재 대칭에 정의된 클리포드 단위로 구성하여 변환합니다.

매개변수

operator (SparsePauliOp) – 테이퍼링할 연산자입니다.

리턴

SparsePauliOp 변환된 연산자에 해당하는 값입니다.

리턴 유형

SparsePauliOp

find_z2_symmetries

classmethod find_z2_symmetries(operator)

GitHub

의 Z2 폴리형 대칭을 찾습니다 SparsePauliOp.

리턴

Z2Symmetries 인스턴스입니다.

매개변수

operator (SparsePauliOp)

리턴 유형

Z2Symmetries

is_empty

is_empty()

GitHub

z2_symmetries 이 비어 있는지 확인합니다.

리턴

비어 있는지 여부.

리턴 유형

부울

taper

taper(operator)

GitHub

테이퍼링_값으로 정의된 z2_symmetries 정보와 섹터를 기반으로 연산자를 테이퍼링합니다. 대칭 객체가 비어 있으면 연산자를 반환합니다.

테이퍼링은 2단계 알고리즘으로, 먼저 연산자를 동일한 고유값을 가진 SparsePauliOp 로 변환하고, 동일한 고유값을 갖지만 일부 큐비트는 폴리 연산자 I 또는 X로만 작동합니다. 이러한 중복 큐비트의 수 M은 식별된 대칭의 수 M과 같습니다.

감소의 두 번째 단계는 이러한 큐비트를 해당 폴리 X의 가능한 고유값으로 대체하여 2^M 새로운 연산자에 M보다 적은 큐비트를 부여하는 것입니다. 이전에 솔루션에 대해 고유값 섹터가 식별된 경우, 이는 큐비트가 M개 적은 새로운 연산자 1개로 줄어듭니다.

매개변수

operator (SparsePauliOp) – 테이퍼링할 연산자입니다.

리턴

[SparsePauliOp]; 그렇지 않으면, SparsePauliOp.

리턴 유형

테이퍼링_값이 None인 경우

taper_clifford

taper_clifford(operator)

GitHub

테이퍼링의 두 번째 부분을 작동합니다. 이 함수는 입력 연산자가 이미 다음을 사용하여 변환되었다고 가정합니다 convert_clifford(). 대칭으로 인한 중복 큐비트는 삭제되고 두 개의 가능한 고유값으로 대체됩니다.

매개변수

operator (SparsePauliOp) – 호출로 인해 부분적으로 테이퍼링된 연산자는 convert_clifford().

리턴

[SparsePauliOp]; 그렇지 않으면, SparsePauliOp.

리턴 유형

테이퍼링_값이 None인 경우

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