Skip to main content
IBM Quantum Platform

클리퍼드

class qiskit.quantum_info.Clifford(data, validate=True, copy=True)

GitHub

Bases: BaseOperator, AdjointMixin, Operation

클리포드 그룹의 N-큐비트 단일 연산자입니다.

N-큐비트 클리포드 연산자는 접합을 통해 폴리스를 폴리스로 이동시킵니다(글로벌 단계까지). 보다 정확하게는, 클리포드 그룹 CN\mathcal{C}_N 은 다음과 같이 정의됩니다

CN={UU(2N)UPNU=PN}/U(1)\mathcal{C}_N = \{ U \in U(2^N) | U \mathcal{P}_N U^{\dagger} = \mathcal{P}_N \} / U(1)

여기서 PN\mathcal{P}_N 은 단일 큐비트 폴리 연산자에 의해 생성되는 NN 큐비트의 폴리 그룹이고, UUNN 큐비트에 대한 연산을 나타내는 U(2N)U(2^N) 단일 그룹의 단일 연산자입니다. CN\mathcal{C}_N 은 스칼라 단일 행렬의 하위 그룹 U(1)U(1) 에 의한 몫 그룹입니다.

표현

N-쿼비트 클리포드 연산자는 참조 [1의] 규칙을 사용하여 길이 2N × ( 2N+1 ) 부울 테이블로 저장됩니다.

  • 행 0에서 N-1불안정성 그룹 생성기입니다
  • N에서 2N-1 행은 안정제 그룹 생성기입니다.

Clifford에 대한 내부 부울 테이블은 tableau 속성을 사용하여 액세스할 수 있습니다. 디스테이블라이저 또는 스태빌라이저 행은 각각 다음을 사용하여 길이 N의 스태빌라이저 테이블로 액세스할 수 있습니다 destabstab 어트리뷰트를 사용하여 액세스할 수 있습니다.

클리포드 연산자를 사람이 더 쉽게 읽을 수 있는 표현은 to_dict() 메서드를 호출하면 됩니다. 이 표현은 다음 예제에서와 같이 클리포드 객체가 인쇄되는 경우에도 사용됩니다

from qiskit import QuantumCircuit
from qiskit.quantum_info import Clifford

# Bell state generation circuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
cliff = Clifford(qc)

# Print the Clifford
print(cliff)

# Print the Clifford destabilizer rows
print(cliff.to_labels(mode="D"))

# Print the Clifford stabilizer rows
print(cliff.to_labels(mode="S"))
Clifford: Stabilizer = ['+XX', '+ZZ'], Destabilizer = ['+IZ', '+XI']
['+IZ', '+XI']
['+XX', '+ZZ']

회로 변환

QuantumCircuit클리포드 연산자는 다음 클리포드 게이트만 포함된 회로에서 초기화할 수 있습니다: IGate, XGate, YGate, ZGate HGate, SGate, SdgGate, SXGate, SXdgGate, CXGate, CZGate, CYGate, DCXGate, SwapGate, iSwapGate, ECRGate, LinearFunction,, PermutationGate. 이 연산자들은 각각 또는 to_instruction() 메서드를 to_circuit() 사용하여 또는 Gate 객체로 다시 변환할 수 있습니다. 이 분해가 게이트 수 측면에서 반드시 최적인 것은 아니라는 점에 유의하십시오.

참고

클리포드 회로를 위한 최소 생성 게이트 세트는 다음과 같습니다. HGate 그리고 SGate 게이트와 *또는 *CXGate 또는 CZGate 2큐비트 게이트.

클리포드 연산자를 다음과 같이 변환할 수도 있습니다 Operator 객체로 변환할 수도 있습니다 to_operator() 메서드를 사용하여 객체로 변환할 수도 있습니다. 이는 회로로 분해한 다음 단일 연산자로 회로를 시뮬레이션하는 방식으로 수행됩니다.

참조

  1. S. 아론슨, D. 고트스만, 안정기 회로의 향상된 시뮬레이션, Phys. Rev. A 70, 052328 (2004). arXiv:quant-ph/0406196

연산자 객체를 초기화합니다.


속성

destab

심플렉틱 표현을 위한 디스테이블라이저 배열입니다.

destab_phase

부울 표현으로 디스테이블라이저의 반환 위상.

destab_x

심플렉틱 표현을 위한 디스테이블라이저 X 배열입니다.

destab_z

심플렉틱 표현을 위한 디스테이블라이저 Z 배열입니다.

dim

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

name

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

num_clbits

클래식 비트 수입니다.

num_qubits

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

phase

부울 표현으로 위상을 반환합니다.

qargs

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

stab

심플렉틱 표현을 위한 스태빌라이저 배열입니다.

stab_phase

부울 표현으로 스태빌라이저의 반환 위상입니다.

stab_x

심플렉틱 표현을 위한 스태빌라이저 X 배열입니다.

stab_z

심플렉틱 표현을 위한 스태빌라이저 배열입니다.

symplectic_matrix

부울 심플렉틱 행렬을 반환합니다.

x

심플렉틱 표현을 위한 X 배열입니다.

z

심플렉틱 표현을 위한 z 배열입니다.


메소드

adjoint

adjoint()

GitHub

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

compose

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

GitHub

연산자 구성을 다른 클리포드로 반환합니다.

매개변수

  • other (Clifford) – 클리포드 오브젝트입니다.
  • qargs (list or None) – 다른 작업을 적용할 하위 시스템 위치 목록 모든 하위 시스템에 None이 적용되는 경우 (기본값: None).
  • front (bool) – True이면 왼쪽 곱셈 대신 오른쪽 연산자 곱셈을 사용하여 구성합니다. [기본값: False].

리턴

침착한 클리포드.

리턴 유형

클리퍼드

레이즈

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

참고

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

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

conjugate

conjugate()

GitHub

클리포드의 활용형을 반환합니다.

copy

copy()

GitHub

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

dot

dot(other, qargs=None)

GitHub

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

매개변수

  • other (Operator) – 연산자 객체입니다.
  • qargs (list or None) – 다른 작업을 적용할 하위 시스템 위치 목록 모든 하위 시스템에 None이 적용되는 경우 (기본값: None).

리턴

오른쪽 행렬 곱하기 연산자.

리턴 유형

운영자

참고

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

expand

expand(other)

GitHub

역순 텐서 곱을 다른 클리포드와 함께 반환합니다.

매개변수

other (Clifford) – 클리포드 오브젝트입니다.

리턴

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

는 현재 클리포드이고 bb 는 다른 클리포드입니다.

리턴 유형

클리퍼드

from_circuit

static from_circuit(circuit)

GitHub

QuantumCircuit 또는 인스트럭션에서 초기화합니다.

매개변수

circuit (QuantumCircuit orInstruction) – 초기화 명령.

리턴

인스트럭션에 대한 클리포드 객체입니다.

리턴 유형

클리퍼드

레이즈

QiskitError – 입력 명령어가 비클리포드 명령어이거나 고전적 레지스터 명령어를 포함하는 경우.

from_dict

classmethod from_dict(obj)

GitHub

사전에서 클리포드 불러오기

from_label

static from_label(label)

GitHub

단일 큐비트 클리포드 게이트의 텐서 곱을 반환합니다.

매개변수

label (string) – 단일 큐비트 연산자 문자열입니다.

리턴

N-쿼비트 클리포드 연산자.

리턴 유형

클리퍼드

레이즈

QiskitError – 레이블에 유효하지 않은 문자가 포함된 경우.

추가 정보:

단일 큐비트 클리포드에 해당하는 레이블은 다음과 같습니다

    • 레이블
    • 안전 장치
    • 디스테이블라이저
    • "I"
    • +Z
    • +X
    • "X"
    • -Z
    • +X
    • "Y"
    • -Z
    • -X
    • "Z"
    • +Z
    • -X
    • "H"
    • +X
    • +Z
    • "S"
    • +Z
    • +Y

from_linear_function

classmethod from_linear_function(linear_function)

GitHub

선형 함수에서 클리포드 만들기.

선형 함수가 nxn 이진 반전 행렬 A로 표현되는 경우, 해당 클리포드 행렬은 [[A^t, 0], [0, A^ {-1}] ]를 갖습니다.

매개변수

linear_function (LinearFunction) – 변환할 선형 함수입니다.

리턴

이 선형 함수에 대한 클리포드 오브젝트입니다.

리턴 유형

클리퍼드

from_matrix

classmethod from_matrix(matrix)

GitHub

단일 행렬에서 클리포드를 생성합니다.

이 함수는 기하급수적으로 긴 시간이 소요된다는 점에 유의하세요 w.r.t. 큐비트 수입니다.

매개변수

matrix (np.array) – 변환할 클리포드를 나타내는 유니타리 행렬입니다.

리턴

단일 행렬에 대한 클리포드 객체입니다.

리턴 유형

클리퍼드

레이즈

QiskitError – 입력이 클리포드 행렬이 아닌 경우.

from_operator

classmethod from_operator(operator)

GitHub

연산자로 클리포드를 생성합니다.

이 함수는 기하급수적으로 긴 시간이 소요된다는 점에 유의하세요 w.r.t. 큐비트 수입니다.

매개변수

operator (Operator) – 변환할 클리포드를 나타내는 연산자입니다.

리턴

연산자에 대한 클리포드 객체입니다.

리턴 유형

클리퍼드

레이즈

QiskitError – 입력이 클리포드 연산자가 아닌 경우.

from_permutation

classmethod from_permutation(permutation_gate)

GitHub

PermutationGate 에서 클리포드 만들기.

매개변수

permutation_gate (PermutationGate) – 변환할 순열입니다.

리턴

이 순열에 대한 클리포드 오브젝트입니다.

리턴 유형

클리퍼드

input_dims

input_dims(qargs=None)

GitHub

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

is_unitary

is_unitary()

GitHub

클리포드 테이블이 유효하면 True를 반환합니다.

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 – 모든 하위 시스템의 입력 차원 또는 출력 차원의 합이 일정하지 않은 경우.

tensor

tensor(other)

GitHub

텐서 곱을 다른 클리포드로 반환합니다.

매개변수

other (Clifford) – 클리포드 오브젝트입니다.

리턴

텐서 곱 aba \otimes b, 여기서 aa

는 현재 클리포드이고 bb 는 다른 클리포드입니다.

리턴 유형

클리퍼드

참고

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

to_circuit

to_circuit()

GitHub

클리포드를 구현한 QuantumCircuit 을 반환합니다.

N <= 3 qubits this is based on optimal CX cost decomposition from reference [1]. For N > 3 큐비트의 경우 참조 [2의] 일반적인 비최적 컴파일 루틴을 사용하여 수행됩니다.

리턴

클리포드의 회로 구현입니다.

리턴 유형

QuantumCircuit

참조

  1. S. 브라비, D. 마슬로프, 하다마드가 없는 회로가 클리포드 그룹의 구조를 드러내다, arXiv:2003.09412 [quant-ph]
  2. S. 아론슨, D. 고트스만, 안정기 회로의 향상된 시뮬레이션, Phys. Rev. A 70, 052328 (2004). arXiv:quant-ph/0406196

to_dict

to_dict()

GitHub

클리포드 객체의 사전 표현을 반환합니다.

to_instruction

to_instruction()

GitHub

클리포드를 구현하는 게이트 인스트럭션을 반환합니다.

to_labels

to_labels(array=False, mode='B')

GitHub

클리포드를 목록 폴리 (드)안정화 문자열 레이블로 변환합니다.

대용량 클리포드 변환의 경우 array=True kwarg를 사용하면 전체 Numpy 레이블 배열에 대한 메모리를 미리 할당하므로 더 효율적입니다.

레이블
단계
심플렉틱
매트릭스
Pauli
"+I"0[0,0][0, 0][1001]\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}II
"-I"1[0,0][0, 0][1001]\begin{bmatrix} -1 & 0 \\ 0 & -1 \end{bmatrix}I-I
"X"0[1,0][1, 0][0110]\begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix}XX
"-X"1[1,0][1, 0][0110]\begin{bmatrix} 0 & -1 \\ -1 & 0 \end{bmatrix}X-X
"Y"0[1,1][1, 1][0110]\begin{bmatrix} 0 & 1 \\ -1 & 0 \end{bmatrix}iYiY
"-Y"1[1,1][1, 1][0110]\begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix}iY-iY
"Z"0[0,1][0, 1][1001]\begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}ZZ
"-Z"1[0,1][0, 1][1001]\begin{bmatrix} -1 & 0 \\ 0 & 1 \end{bmatrix}Z-Z

매개변수

  • array (bool) – true이면 Numpy 배열을 반환하고, 그렇지 않으면 목록을 반환합니다(기본값: False).
  • mode (Literal["S", "D", "B"]) – "B"인 경우 안정제와 안정제를 모두 반환하고, "S"인 경우 안정제만 반환하고, "D"인 경우 안정제만 반환합니다.

리턴

레이블 형식의 StabilizerTable 행입니다.

리턴 유형

목록 또는 배열

레이즈

QiskitError – 안정화 함수와 불안정화 함수가 모두 False인 경우.

to_matrix

to_matrix()

GitHub

연산자를 넘피 행렬로 변환합니다.

to_operator

to_operator()

GitHub

연산자 객체로 변환합니다.

리턴 유형

운영자

transpose

transpose()

GitHub

클리포드의 조옮김을 반환합니다.

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