Skip to main content
IBM Quantum Platform

QubitSparsePauli

class qiskit.quantum_info.QubitSparsePauli(data, /, num_qubits=None)

GitHub

베이스: object

위상이 없는 폴리 연산자는 큐비트-스파스 형식으로 저장됩니다.


표현

폴리 연산자는 Ai(n){I,X,Y,Z}A^{(n)}_i \in \{I, X, Y, Z\} 에 대한 P=nAi(n)P = \bigotimes_n A^{(n)}_i 형식의 단일 큐비트 폴리 연산자의 텐서 곱입니다. 의 내부 표현은 QubitSparsePauli 의 내부 표현은 비아이디 단일 큐비트 폴리 연산자만 저장합니다.

내부적으로 각 단일 큐비트 폴리 연산자는 명시적으로 숫자 값으로 저장됩니다:

레이블
연산자
숫자 값
Pauli 속성
"I"II (신원)저장되지 않습니다.저장되지 않습니다.
"X"XX (폴리 엑스)0b10 (2)X
"Y"YY (Pauli Y)0b11 (3)Y
"Z"ZZ (폴리 Z)0b01 (1)Z
속성
길이
설명
paulisss각각의 비식별성 단일 큐비트 폴리 연산자. 이는 목록에서 비아이덴티티 Ai(n)A^{(n)}_i 에 해당하며, 항목은 먼저 ii 이 증가하는 순서로 저장되고 각 용어 내에서 nn 이 증가하는 순서로 저장됩니다.
indicesss의 각 연산자에 해당하는 큐비트( nn )는 paulis. QubitSparsePauli 를 사용하려면 이 목록이 용어별로 정렬되어야 하며 알고리즘은 이 불변성이 유지되는지 확인할 수 있습니다.

매개변수 ss 는 비식별 단일 큐비트 용어의 총 개수입니다.

배열의 스칼라 항목은 paulis 배열의 스칼라 항목은 숫자 바이트로 저장됩니다. 숫자 값은 심플렉틱 파울리 표현과 관련이 있습니다 SparsePauliOp 가 사용하는 심플렉티브 폴리 표현과 관련이 있으며, 열거형에 의한 네임드 액세스로 액세스할 수 있습니다:

Pauli

class Pauli

GitHub

IntEnum QubitSparsePauliList 에 사용된 단일 큐비트 파울리 연산자의 Alphabet 에 열거된 각 단일 큐비트 알파벳 항목을 나타내는 데 사용되는 숫자 값에 대한 명명된 액세스를 제공합니다.

이 클래스는 QubitSparsePauli. 로 액세스 QubitSparsePauli.Pauli. 타이핑이 너무 많아서 오로지 QubitSparsePauliList 객체와 Pauli 로 단축하는 것이 좋습니다:

>>> ops = QubitSparsePauli.Pauli
>>> assert ops.X is QubitSparsePauli.Pauli.X

속성 액세스를 통해 열거형의 모든 값에 액세스하거나 문자열로 사전과 같은 인덱싱을 통해 액세스할 수 있습니다:

>>> assert QubitSparsePauli.Pauli.X is QubitSparsePauli.Pauli["X"]

각 단일 큐비트 폴리를 나타내는 비트는 폴리 연산자의 (위상이 없는) 심플렉티브 표현입니다.

X

기본값: 2

폴리 XX 운영자. 단일 문자 레이블 사용 "X".

Y

기본값: 3

폴리 YY 운영자. 단일 문자 레이블 사용 "Y".

Z

기본값: 1

폴리 ZZ 운영자. 단일 문자 레이블 사용 "Z".

배열과 유사한 각 속성은 Python 시퀀스처럼 작동합니다. 표준 시맨틱을 사용하여 인덱싱 및 슬라이싱할 수 있습니다 list-시맨틱을 사용하여 인덱싱하고 슬라이스할 수 있습니다. 어트리뷰트를 슬라이싱하면 관련 데이터의 복사본이 포함된 Numpy ndarray 를 반환하며, 이를 통해 필드의 자연스러운 dtype 와 함께 관련 데이터의 복사본이 포함되어 결과에 대해 비트 단위 연산과 같은 수학을 쉽게 수행할 수 있습니다 paulis.


생성

QubitSparsePauli 는 여러 생성자를 정의합니다. 기본 생성자는 입력 유형에 따라 보다 구체적인 생성자 중 하나에 위임을 시도합니다. 언제든지 특정 생성자를 사용하여 구성을 더 잘 제어할 수 있습니다.

방법
요약
from_label()밀도가 높은 문자열 레이블을 QubitSparsePauli.
from_sparse_label()를 구축합니다 QubitSparsePauli 를 스파스 문자열 레이블의 튜플과 해당 레이블이 적용되는 큐비트로부터 생성합니다.
from_pauli()하나의 PauliQubitSparsePauli.
from_raw_parts()원시 데이터 배열에서 연산자를 빌드합니다.

__new__

__new__(data, /, num_qubits=None)

의 기본 생성자 QubitSparsePauli.

이는 data 인수의 유형에 따라 명시적 변환 생성자 메서드 중 하나에 위임합니다. num_qubits 이 제공되고 data 유형이 암시하는 생성자가 숫자를 허용하지 않는 경우, 주어진 정수는 입력과 일치해야 합니다.

매개변수

  • 데이터 - 입력의 데이터 유형입니다. 이것은 다른 QubitSparsePauli일 수도 있고, 입력이 복사되는 경우 입력이 복사되는 형식이거나 from_label() 또는 from_sparse_label().
  • num_qubits (int|None) – 연산자의 선택적 큐비트 수입니다. 대부분의 데이터 입력은 추론이 가능하므로 전달할 필요가 없습니다. 희소 레이블 형식에만 필요합니다. 불필요하게 주어진 경우 입력된 데이터와 일치해야 합니다.

속성

indices

각 비식별 단일 큐비트 용어의 인덱스에 대한 읽기 전용 보기입니다.

인덱스는 항상 정렬된 순서로 표시됩니다.

num_qubits

용어가 정의된 큐비트 수입니다.

paulis

개별 단일 큐비트 용어에 대한 읽기 전용 보기.

배열에서 유효한 값은 해당 값에 해당하는 Pauli.


메소드

commutes

commutes(other)

self`가 다른 큐비트의 스파스 파울리 연산과 교환 관계에 있는지 확인하십시오.

매개변수

other (QubitSparsePauli) – 쿼비트 희소 폴리를 사용하여 정류 여부를 확인합니다.

compose

compose(other)

다른 페이즈와 페이즈 없는 구성 QubitSparsePauli.

매개변수

other (QubitSparsePauli) – 쿼비트 스파스 폴리를 사용하여 작곡할 수 있습니다.

copy

copy()

이 학기 사본을 받아보세요.

from_label

static from_label(label, /)

고밀도 문자열 레이블로 구성합니다.

레이블은 알파벳 시퀀스여야 합니다 'IXYZ'. 레이블은 비트 문자열과 유사하게 해석됩니다. 즉, 가장 오른쪽에 있는 문자는 큐비트 0과 연관됩니다. 이것은 PauliSparsePauliOp.

매개변수

label (str) – 밀도가 높은 레이블입니다.

예제

>>> QubitSparsePauli.from_label("IIIIXZI")
<QubitSparsePauli on 7 qubits: X_2 Z_1>
>>> label = "IYXZI"
>>> pauli = Pauli(label)
>>> assert QubitSparsePauli.from_label(label) == QubitSparsePauli.from_pauli(pauli)

from_pauli

static from_pauli(pauli, /)

를 구성합니다 QubitSparsePauli 인스턴스를 Pauli 인스턴스를 생성합니다.

폴리의 위상이 삭제된다는 점에 유의하세요.

매개변수

pauli (Pauli) – 단일 폴리를 변환할 수 있습니다.

예제

>>> label = "IYXZI"
>>> pauli = Pauli(label)
>>> QubitSparsePauli.from_pauli(pauli)
<QubitSparsePauli on 5 qubits: Y_3 X_2 Z_1>
>>> assert QubitSparsePauli.from_label(label) == QubitSparsePauli.from_pauli(pauli)

from_raw_parts

static from_raw_parts(num_qubits, paulis, indices)

를 구성합니다 QubitSparsePauli클래스 수준 문서에 설명된 필수 데이터 표현과 일치하는 원시 Numpy 배열로 구성합니다.

각 배열의 데이터는 새롭고 확장 가능한 Rust 공간 할당으로 복사됩니다.

매개변수

  • 숫자_쿼비트 - 연산자가 작동하는 쿼비트 수입니다.
  • 폴리스 - 단일 큐비트 용어 목록입니다. 이것은 dtype이 있는 Numpy 배열이어야 합니다 uint8 (와 호환되는 Pauli).
  • 인덱스 - 각 단일 큐비트 용어가 해당하는 큐비트의 정렬된 목록입니다. 이것은 dtype이 포함된 Numpy 배열이어야 합니다 uint32.

예제

100개의 큐비트 중 50개의 큐비트에 작용하는 ZZ 연산자를 구축합니다.

>>> num_qubits = 100
>>> terms = np.array([QubitSparsePauli.Pauli.Z], dtype=np.uint8)
>>> indices = np.array([50], dtype=np.uint32)
>>> QubitSparsePauli.from_raw_parts(num_qubits, terms, indices)
<QubitSparsePauli on 100 qubits: Z_50>

from_sparse_label

static from_sparse_label(sparse_label, num_qubits)

폴리 문자열의 튜플로 주어진 스파스 레이블과 해당 큐비트의 인덱스로부터 큐비트 스파스 폴리를 구축합니다.

이것은 SparsePauliOp.from_sparse_list().

매개변수

  • sparse_label (tuple[str, Sequence[int]]) – 레이블과 각 단일 큐비트 용어가 적용되는 큐비트입니다.
  • num_qubits (int) – 연산자가 작동하는 큐비트 수입니다.

예제

간단한 폴리를 구축합니다:

>>> QubitSparsePauli.from_sparse_label(
...     ("ZX", (1, 4)),
...     num_qubits=5,
... )
<QubitSparsePauli on 5 qubits: X_4 Z_1>

이 메서드는 다음과 같은 동작을 복제할 수 있습니다 from_label()의 동작을 복제할 수 있습니다(튜플의 큐비트 인자 필드가 감소하는 정수로 설정된 경우):

>>> label = "XYXZ"
>>> from_label = QubitSparsePauli.from_label(label)
>>> from_sparse_label = QubitSparsePauli.from_sparse_label(
...     (label, (3, 2, 1, 0)),
...     num_qubits=4
... )
>>> assert from_label == from_sparse_label

identity

static identity(num_qubits)

주어진 큐비트 수에 대한 ID 연산자를 구합니다.

예제

100개의 큐비트에서 신원을 확인합니다:

>>> QubitSparsePauli.identity(100)
<QubitSparsePauli on 100 qubits: >

to_pauli

to_pauli()

반환 Pauli 를 반환합니다.

to_qubit_sparse_pauli_list

to_qubit_sparse_pauli_list()

이 폴리를 단일 요소로 변환 QubitSparsePauliList.

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