Skip to main content
IBM Quantum Platform

Pauli

class qiskit.quantum_info.Pauli(data=None)

GitHub

베이스: BasePauli

N-쿼비트 폴리 연산자.

이 클래스는 전체 nn -qubit Pauli 그룹에서 PP 연산자를 나타냅니다

P=(i)qPn1...P0P = (-i)^{q} P_{n-1} \otimes ... \otimes P_{0}

여기서 qZ4q\in \mathbb{Z}_4Pi{I,X,Y,Z}P_i \in \{I, X, Y, Z\} 은 단일 큐비트 폴리 행렬입니다:

I=(1001),X=(0110),Y=(0ii0),Z=(1001).I = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}, X = \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix}, Y = \begin{pmatrix} 0 & -i \\ i & 0 \end{pmatrix}, Z = \begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix}.

초기화

폴리 오브젝트는 여러 가지 방법으로 초기화할 수 있습니다:

Pauli(obj)

여기서 obj 는 폴리 문자열, Pauli 또는 ScalarOp 연산자 또는 폴리 게이트 또는 폴리 게이트만 포함된 QuantumCircuit 입니다.

Pauli((z, x, phase))

여기서 zx 은 부울 numpy.ndarrays 이고 phase 은 정수 [0, 1, 2, 3] 입니다.

Pauli((z, x))

사소한 단계가 있는 Pauli((z, x, 0)) 에 해당합니다.

스트링 표시

nn -쿼비트 폴리는 ['I', 'X', 'Y', 'Z']nn 문자로 구성된 문자열과 선택적으로 ['', '-i', '-', 'i'] 의 위상 계수로 표현할 수 있습니다. 예: 'XYZ' 또는 '-iZIZ'.

문자열 표현에서 qubit-0 은 가장 오른쪽에 있는 폴리 문자에 해당하고, qubit- (n1)(n-1) 은 가장 왼쪽에 있는 폴리 문자에 해당합니다. 예를 들어 'XYZ'XYZX\otimes Y \otimes Z'Z' 은 qubit-0, 'Y' 은 qubit-1, 'X' 은 qubit-2 으로 나타냅니다.

문자열 표현은 클래스 초기화(Pauli('-iXYZ'))를 사용하여 Pauli 로 변환할 수 있습니다. Pauli 객체는 다시 문자열 표현으로 변환할 수 있습니다 to_label() 메서드 또는 str(pauli) 를 사용하여 다시 문자열 표현으로 변환할 수 있습니다.

참고

str 을 사용하여 Pauli 을 문자열로 변환하면 많은 수의 큐비트에 대해 반환된 문자열이 잘려나가고 to_label() 은 잘리지 않은 전체 문자열을 반환합니다. 기본 잘라내기 길이는 50자입니다. 기본값은 __truncate__ 속성을 정수 값으로 설정하여 변경할 수 있습니다. 0 로 설정하면 잘림이 수행되지 않습니다.

배열 표현

nn -쿼비트 폴리의 내부 데이터 구조는 두 개의 길이 nn 부울 벡터 zZ2Nz \in \mathbb{Z}_2^N, xZ2Nx \in \mathbb{Z}_2^N, 그리고 폴리 연산자를 정의하는 정수 qZ4q \in \mathbb{Z}_4 입니다

P=(i)q+zxZzXx.P = (-i)^{q + z\cdot x} Z^z \cdot X^x.

kk -번째 큐비트는 zzxx 배열의 kk -번째 항목에 해당합니다

P=Pn1...P0Pk=(i)z[k]x[k]Zz[k]Xx[k]\begin{aligned} P &= P_{n-1} \otimes ... \otimes P_{0} \\ P_k &= (-i)^{z[k] * x[k]} Z^{z[k]}\cdot X^{x[k]} \end{aligned}

여기서 z[k] = P.z[k], x[k] = P.x[k] .

zzxx 배열은 다음을 사용하여 액세스하고 업데이트할 수 있습니다 zx 속성을 사용하여 액세스하고 업데이트할 수 있습니다. 위상 정수는 qq 을 사용하여 액세스하고 업데이트할 수 있습니다 phase 속성을 사용하여 액세스하고 업데이트할 수 있습니다.

매트릭스 연산자 표현

폴리는 (2n,2n)(2^n, 2^n) Operator 로 변환하거나 to_operator() 메서드를 사용하여 밀도 또는 희소 복소 행렬로 변환할 수 있습니다 to_matrix() 메서드를 사용합니다.

데이터 액세스

개별 큐비트 폴리스는 폴리스의 하위 집합을 선택하기 위해 정수, 목록 또는 슬라이스를 허용하는 [] 연산자를 사용하여 액세스하고 업데이트할 수 있습니다. 폴리의 하위 집합을 선택하면 현재 폴리의 위상이 삭제된다는 점에 유의하세요.

예를 들면 다음과 같습니다

from qiskit.quantum_info import Pauli

P = Pauli('-iXYZ')

print('P[0] =', repr(P[0]))
print('P[1] =', repr(P[1]))
print('P[2] =', repr(P[2]))
print('P[:] =', repr(P[:]))
print('P[::-1] =', repr(P[::-1]))

폴리를 초기화합니다.

심플렉틱 배열 입력 데이터를 사용할 때는 z와 x 인수를 모두 제공해야 하지만 첫 번째(z) 인수는 문자열 레이블, 폴리 연산자 또는 ScalarOp 입력 데이터에 사용할 수 있습니다.

매개변수

data (str ortuple orPauli orScalarOp) – 폴리에 대한 입력 데이터입니다. 입력이 튜플인 경우 (z, x) 또는 (z, x, phase) 형식이어야 하며, 여기서 zx 은 부울 Numpy 배열, phase는 Z4\mathbb{Z}_4 의 정수여야 합니다. 입력이 문자열인 경우 phase와 Pauli 문자열의 연결(예: 'XYZ', '-iZIZ')이어야 합니다 여기서 위상 문자열은 ['+', '-', ''], ['1', ''], ['i', 'j', ''] 의 최대 세 문자를 순서대로 조합한 것입니다(예: ''), '-1j' 폴리 문자열은 'I', 'X', 'Y' 또는 'Z'(예: 'Z', 'XIYY') 중 하나 이상의 문자로 구성됩니다.

레이즈

QiskitError – 입력 배열의 형상이 유효하지 않은 경우.


속성

dim

튜플(입력_셰이프, 출력_셰이프)을 반환합니다.

name

작업 유형에 대한 고유 문자열 식별자입니다.

num_clbits

클래식 비트 수입니다.

num_qubits

N-큐비트 연산자인 경우 큐비트 수를 반환하고, 그렇지 않으면 None을 반환합니다.

phase

폴리에 대한 그룹 위상 지수를 반환합니다.

qargs

연산자에 대한 qarg를 반환합니다.

settings

설정을 반환합니다.

x

폴리에 대한 x 벡터입니다.

z

폴리에 대한 z 벡터입니다.


메소드

adjoint

adjoint()

GitHub

연산자의 부속자를 반환합니다.

anticommutes

anticommutes(other, qargs=None)

GitHub

다른 폴리가 자신과 함께 출퇴근하면 True를 반환합니다.

매개변수

  • other (Pauli) – 또 다른 폴리 연산자입니다.
  • qargs (list) – 도트 제품을 적용할 큐비트를 설정합니다(기본값: 없음).

리턴

폴리가 출퇴근하지 않는 경우 참이고, 출퇴근하는 경우 거짓입니다.

리턴 유형

부울

apply_layout

apply_layout(layout, num_qubits=None)

GitHub

여기에 트랜스파일러 레이아웃 적용 Pauli

매개변수

  • layout (TranspileLayout |list[int] | None) – A TranspileLayout정수 목록 또는 없음입니다. 레이아웃과 num_qubits가 모두 0이면 연산자의 복사본이 반환됩니다.
  • num_qubits (int | None) – 연산자를 확장할 큐비트 수입니다. 제공되지 않은 경우 layoutTranspileLayout 이면 기본적으로 트랜스파일러 출력 회로 큐비트 수가 사용됩니다. layout 이 정수의 목록인 경우 지정된 순열은 확장 없이 적용됩니다. 레이아웃이 없음인 경우 연산자는 지정된 큐비트 수만큼 확장됩니다.

리턴

새로운 Pauli 제공된 레이아웃이 적용된

리턴 유형

Pauli

commutes

commutes(other, qargs=None)

GitHub

폴리가 다른 사람과 함께 출퇴근하면 True를 반환합니다.

매개변수

  • other (Pauli orPauliList) – 또 다른 폴리 연산자입니다.
  • qargs (list) – 도트 제품을 적용할 큐비트를 설정합니다(기본값: 없음).

리턴

폴리가 출퇴근하면 참이고, 출퇴근을 반대하면 거짓입니다.

리턴 유형

부울

compose

compose(other, qargs=None, front=False, inplace=False)

GitHub

다른 폴리를 사용하여 연산자 구성을 반환합니다.

매개변수

  • other (Pauli) – 폴리 객체입니다.
  • qargs (list or None) – 내적 연산을 적용할 큐비트(기본값: None).
  • front (bool) – True이면 왼쪽 곱셈 대신 오른쪽 연산자 곱셈을 사용하여 구성합니다. [기본값: False].
  • inplace (bool) – True인 경우 제자리에서 업데이트합니다(기본값: False).

리턴

작곡가 폴리.

리턴 유형

Pauli

레이즈

QiskitError – 다른 항이 연산자로 변환될 수 없거나, 지정된 하위 시스템에 대해 차원이 호환되지 않는 경우.

참고

컴포지션(&)은 기본적으로 행렬 연산자에 대해 왼쪽 행렬 곱셈으로 정의되지만 dot() 는 오른쪽 행렬 곱셈으로 정의됩니다. 즉, AB 이 같은 유형일 때 A & B == A.compose(B)B.dot(A) 과 동일합니다.

front=True kwarg를 설정하면 오른쪽 행렬 곱셈으로 변경되며, 이 방법은 dot() 메서드 A.dot(B) == A.compose(B, front=True) 와 동일합니다.

conjugate

conjugate()

GitHub

Z 기저에 대한 폴리의 복소 접합을 반환합니다.

copy

copy()

GitHub

현재 운영자의 딥 카피를 만듭니다.

delete

delete(qubits)

GitHub

큐비트가 삭제된 폴리를 반환합니다.

매개변수

qubits (int orlist) – 큐비트를 삭제할 수 있습니다.

리턴

지정된 큐비트가 제거된 결과 폴리를 반환합니다.

리턴 유형

Pauli

레이즈

QiskitError – ind가 배열 크기나 큐비트 수의 범위를 벗어난 경우.

dot

dot(other, qargs=None, inplace=False)

GitHub

오른쪽 곱하기 연산자 self * other를 반환합니다.

매개변수

  • other (Pauli) – 연산자 객체입니다.
  • qargs (list or None) – 내적 연산을 적용할 큐비트(기본값: None).
  • inplace (bool) – True인 경우 제자리에서 업데이트합니다(기본값: False).

리턴

운영자 본인 * 기타.

리턴 유형

Pauli

equiv

equiv(other)

GitHub

폴리가 그룹 단계까지 동등하면 True를 반환합니다.

매개변수

other (Pauli) – 연산자 객체입니다.

리턴

폴리가 조별 예선까지 동등하다면 사실입니다.

리턴 유형

부울

evolve

evolve(other, qargs=None, frame='h')

GitHub

클리포드에 의한 파울리의 하이젠베르크(기본값) 또는 슈뢰딩거 그림 진화를 수행하여 진화한 파울리를 반환합니다.

슈뢰딩거 그림 진화는 매개변수 frame='s' 를 전달하여 선택할 수 있습니다. 이 옵션을 사용하면 더 빠르게 계산할 수 있습니다.

하이젠베르크 그림은 폴리를 P=C.P.CP^\prime = C^\dagger.P.C 로 진화시킵니다.

슈뢰딩거 그림은 폴리를 P=C.P.CP^\prime = C.P.C^\dagger 로 진화시킵니다.

매개변수

  • other (Pauli orClifford orQuantumCircuit) – 진화를 위한 클리포드 연산자.
  • qargs (list) – 클리포드를 적용할 큐비트 목록입니다.
  • frame (string) – 'h' 하이젠베르크(기본값) 또는 슈뢰딩거 프레임워크의 경우 's' .

리턴

폴리 C.P.CC^\dagger.P.C (하이젠베르크 그림) 또는 폴리 C.P.CC.P.C^\dagger (슈뢰딩거 그림).

리턴 유형

Pauli

레이즈

QiskitError – 큐비트와 qarg의 클리포드 수가 일치하지 않는 경우.

expand

expand(other)

GitHub

다른 폴리를 사용하여 역순 텐서 곱을 반환합니다.

매개변수

other (Pauli) – 폴리 객체입니다.

리턴

텐서 곱 bab \otimes a, 여기서 aa

는 현재 폴리이고 bb 는 다른 폴리입니다.

리턴 유형

Pauli

input_dims

input_dims(qargs=None)

GitHub

지정된 하위 시스템에 대한 입력 차원의 튜플을 반환합니다.

insert

insert(qubits, value)

GitHub

특정 큐비트 값에 폴리를 삽입합니다.

매개변수

  • qubits (int orlist) – 큐비트 인덱스에 삽입할 수 있습니다.
  • value (Pauli) – 값을 삽입합니다.

리턴

를 입력하면 항목이 삽입된 결과 폴리를 확인할 수 있습니다.

리턴 유형

Pauli

레이즈

QiskitError – 삽입 큐비트가 유효하지 않은 경우.

inverse

inverse()

GitHub

폴리의 역을 반환합니다.

output_dims

output_dims(qargs=None)

GitHub

지정된 하위 시스템에 대한 출력 차원의 튜플을 반환합니다.

power

power(n)

GitHub

연산자를 n번 자기 자신과 합성한 결과를 반환합니다.

매개변수

n (int) – 셀프 작성 횟수 ( n>0 ).

리턴

n-회 구성 연산자입니다.

리턴 유형

클리퍼드

레이즈

QiskitError – 연산자의 입력 및 출력 차원이 같지 않거나, 지수가 양의 정수가 아닌 경우.

reshape

reshape(input_dims=None, output_dims=None, num_qubits=None)

GitHub

입력 및 출력 하위 시스템 치수가 재구성된 얕은 복사본을 반환합니다.

매개변수

  • input_dims (None or tuple) – 새로운 하위 시스템 입력 차원. None인 경우 원래 입력이 희미하게 유지됩니다. [기본값: None].
  • output_dims (None or tuple) – 새로운 하위 시스템 출력 차원. None인 경우 원래 출력이 흐려집니다. [기본값: None].
  • num_qubits (None or int) – n-큐비트 연산자로 재형성 [기본값입니다: 없음].

리턴

는 입력 및 출력 치수가 재형성된 자기를 반환합니다.

리턴 유형

BaseOperator

레이즈

QiskitError – 모든 하위 시스템의 입력 차원 또는 출력 차원의 합이 일정하지 않은 경우.

set_truncation

classmethod set_truncation(val)

GitHub

잘림 현상 발생 전까지 표시할 파울리 문자 수를 설정합니다.

매개변수

val (int) – 문자 수입니다.

참고

잘라내기 값을 0으로 설정하면 잘라내기가 비활성화됩니다.

tensor

tensor(other)

GitHub

텐서 곱을 다른 폴리와 함께 반환합니다.

매개변수

other (Pauli) – 폴리 객체입니다.

리턴

**텐서 제품 aba \otimes b, 여기서 aa **

는 현재 폴리이고 bb 는 다른 폴리입니다.

리턴 유형

Pauli

참고

텐서 곱은 ^ 이진 연산자를 사용하여 구할 수 있습니다. 따라서 a.tensor(b)a ^ b 과 동일합니다.

to_instruction

to_instruction()

GitHub

폴리 회로 명령어로 변환합니다.

to_label

to_label()

GitHub

폴리를 문자열 레이블로 변환합니다.

참고

to_label과 의 차이점은, 후자의 경우 큐비트 수가 __str__() 많을 때 출력이 잘린다는 점입니다.

리턴

폴리 문자열 레이블을 사용합니다.

리턴 유형

str

to_matrix

to_matrix(sparse=False)

GitHub

Numpy 배열 또는 희소 CSR 행렬로 변환합니다.

매개변수

sparse (bool) – true이면 희소 CSR 행렬을 반환하고, 그렇지 않으면 고밀도 Numpy 배열을 반환합니다(기본값: False).

리턴

폴리 매트릭스.

리턴 유형

배열

transpose

transpose()

GitHub

목록에 있는 각 폴리의 조옮김을 반환합니다.

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