QubitSparsePauli
class qiskit.quantum_info.QubitSparsePauli(data, /, num_qubits=None)
베이스: object
위상이 없는 폴리 연산자는 큐비트-스파스 형식으로 저장됩니다.
표현
폴리 연산자는 에 대한 형식의 단일 큐비트 폴리 연산자의 텐서 곱입니다. 의 내부 표현은 QubitSparsePauli 의 내부 표현은 비아이디 단일 큐비트 폴리 연산자만 저장합니다.
내부적으로 각 단일 큐비트 폴리 연산자는 명시적으로 숫자 값으로 저장됩니다:
레이블 | 연산자 | 숫자 값 | Pauli 속성 |
|---|---|---|---|
"I" | (신원) | 저장되지 않습니다. | 저장되지 않습니다. |
"X" | (폴리 엑스) | 0b10 (2) | X |
"Y" | (Pauli Y) | 0b11 (3) | Y |
"Z" | (폴리 Z) | 0b01 (1) | Z |
속성 | 길이 | 설명 |
|---|---|---|
paulis | 각각의 비식별성 단일 큐비트 폴리 연산자. 이는 목록에서 비아이덴티티 에 해당하며, 항목은 먼저 이 증가하는 순서로 저장되고 각 용어 내에서 이 증가하는 순서로 저장됩니다. | |
indices | 의 각 연산자에 해당하는 큐비트( )는 paulis. QubitSparsePauli 를 사용하려면 이 목록이 용어별로 정렬되어야 하며 알고리즘은 이 불변성이 유지되는지 확인할 수 있습니다. |
매개변수 는 비식별 단일 큐비트 용어의 총 개수입니다.
배열의 스칼라 항목은 paulis 배열의 스칼라 항목은 숫자 바이트로 저장됩니다. 숫자 값은 심플렉틱 파울리 표현과 관련이 있습니다 SparsePauliOp 가 사용하는 심플렉티브 폴리 표현과 관련이 있으며, 열거형에 의한 네임드 액세스로 액세스할 수 있습니다:
Pauli
class Pauli
안 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
폴리 운영자. 단일 문자 레이블 사용 "X".
Y
기본값: 3
폴리 운영자. 단일 문자 레이블 사용 "Y".
Z
기본값: 1
폴리 운영자. 단일 문자 레이블 사용 "Z".
배열과 유사한 각 속성은 Python 시퀀스처럼 작동합니다. 표준 시맨틱을 사용하여 인덱싱 및 슬라이싱할 수 있습니다 list-시맨틱을 사용하여 인덱싱하고 슬라이스할 수 있습니다. 어트리뷰트를 슬라이싱하면 관련 데이터의 복사본이 포함된 Numpy ndarray 를 반환하며, 이를 통해 필드의 자연스러운 dtype 와 함께 관련 데이터의 복사본이 포함되어 결과에 대해 비트 단위 연산과 같은 수학을 쉽게 수행할 수 있습니다 paulis.
생성
QubitSparsePauli 는 여러 생성자를 정의합니다. 기본 생성자는 입력 유형에 따라 보다 구체적인 생성자 중 하나에 위임을 시도합니다. 언제든지 특정 생성자를 사용하여 구성을 더 잘 제어할 수 있습니다.
방법 | 요약 |
|---|---|
from_label() | 밀도가 높은 문자열 레이블을 QubitSparsePauli. |
from_sparse_label() | 를 구축합니다 QubitSparsePauli 를 스파스 문자열 레이블의 튜플과 해당 레이블이 적용되는 큐비트로부터 생성합니다. |
from_pauli() | 하나의 Pauli 를 QubitSparsePauli. |
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과 연관됩니다. 이것은 Pauli 및 SparsePauliOp.
매개변수
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개의 큐비트에 작용하는 연산자를 구축합니다.
>>> 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_labelidentity
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.