클리퍼드
class qiskit.quantum_info.Clifford(data, validate=True, copy=True)
Bases: BaseOperator, AdjointMixin, Operation
클리포드 그룹의 N-큐비트 단일 연산자입니다.
N-큐비트 클리포드 연산자는 접합을 통해 폴리스를 폴리스로 이동시킵니다(글로벌 단계까지). 보다 정확하게는, 클리포드 그룹 은 다음과 같이 정의됩니다
여기서 은 단일 큐비트 폴리 연산자에 의해 생성되는 큐비트의 폴리 그룹이고, 은 큐비트에 대한 연산을 나타내는 단일 그룹의 단일 연산자입니다. 은 스칼라 단일 행렬의 하위 그룹 에 의한 몫 그룹입니다.
표현
N-쿼비트 클리포드 연산자는 참조 [1의] 규칙을 사용하여 길이 2N × ( 2N+1 ) 부울 테이블로 저장됩니다.
- 행 0에서 N-1 는 불안정성 그룹 생성기입니다
- 행 N에서 2N-1 행은 안정제 그룹 생성기입니다.
Clifford에 대한 내부 부울 테이블은 tableau 속성을 사용하여 액세스할 수 있습니다. 디스테이블라이저 또는 스태빌라이저 행은 각각 다음을 사용하여 길이 N의 스태빌라이저 테이블로 액세스할 수 있습니다 destab 및 stab 어트리뷰트를 사용하여 액세스할 수 있습니다.
클리포드 연산자를 사람이 더 쉽게 읽을 수 있는 표현은 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 객체로 다시 변환할 수 있습니다. 이 분해가 게이트 수 측면에서 반드시 최적인 것은 아니라는 점에 유의하십시오.
클리포드 연산자를 다음과 같이 변환할 수도 있습니다 Operator 객체로 변환할 수도 있습니다 to_operator() 메서드를 사용하여 객체로 변환할 수도 있습니다. 이는 회로로 분해한 다음 단일 연산자로 회로를 시뮬레이션하는 방식으로 수행됩니다.
참조
- 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
compose
compose(other, qargs=None, front=False)
연산자 구성을 다른 클리포드로 반환합니다.
매개변수
- other (Clifford) – 클리포드 오브젝트입니다.
- qargs (list or None) – 다른 작업을 적용할 하위 시스템 위치 목록 모든 하위 시스템에 None이 적용되는 경우 (기본값: None).
- front (bool) – True이면 왼쪽 곱셈 대신 오른쪽 연산자 곱셈을 사용하여 구성합니다. [기본값: False].
리턴
침착한 클리포드.
리턴 유형
레이즈
QiskitError – 다른 항이 연산자로 변환될 수 없거나, 지정된 하위 시스템에 대해 차원이 호환되지 않는 경우.
conjugate
copy
dot
dot(other, qargs=None)
오른쪽 곱하기 연산자 self * other를 반환합니다.
매개변수
- other (Operator) – 연산자 객체입니다.
- qargs (list or None) – 다른 작업을 적용할 하위 시스템 위치 목록 모든 하위 시스템에 None이 적용되는 경우 (기본값: None).
리턴
오른쪽 행렬 곱하기 연산자.
리턴 유형
점의 곱은 @ 이진 연산자를 사용하여 구할 수 있습니다. 따라서 a.dot(b) 은 a @ b 과 동일합니다.
expand
expand(other)
역순 텐서 곱을 다른 클리포드와 함께 반환합니다.
매개변수
other (Clifford) – 클리포드 오브젝트입니다.
리턴
텐서 곱 , 여기서
는 현재 클리포드이고 는 다른 클리포드입니다.
리턴 유형
from_circuit
static from_circuit(circuit)
QuantumCircuit 또는 인스트럭션에서 초기화합니다.
매개변수
circuit (QuantumCircuit orInstruction) – 초기화 명령.
리턴
인스트럭션에 대한 클리포드 객체입니다.
리턴 유형
레이즈
QiskitError – 입력 명령어가 비클리포드 명령어이거나 고전적 레지스터 명령어를 포함하는 경우.
from_dict
from_label
static from_label(label)
단일 큐비트 클리포드 게이트의 텐서 곱을 반환합니다.
매개변수
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)
선형 함수에서 클리포드 만들기.
선형 함수가 nxn 이진 반전 행렬 A로 표현되는 경우, 해당 클리포드 행렬은 [[A^t, 0], [0, A^ {-1}] ]를 갖습니다.
매개변수
linear_function (LinearFunction) – 변환할 선형 함수입니다.
리턴
이 선형 함수에 대한 클리포드 오브젝트입니다.
리턴 유형
from_matrix
classmethod from_matrix(matrix)
단일 행렬에서 클리포드를 생성합니다.
이 함수는 기하급수적으로 긴 시간이 소요된다는 점에 유의하세요 w.r.t. 큐비트 수입니다.
매개변수
matrix (np.array) – 변환할 클리포드를 나타내는 유니타리 행렬입니다.
리턴
단일 행렬에 대한 클리포드 객체입니다.
리턴 유형
레이즈
QiskitError – 입력이 클리포드 행렬이 아닌 경우.
from_operator
classmethod from_operator(operator)
연산자로 클리포드를 생성합니다.
이 함수는 기하급수적으로 긴 시간이 소요된다는 점에 유의하세요 w.r.t. 큐비트 수입니다.
매개변수
operator (Operator) – 변환할 클리포드를 나타내는 연산자입니다.
리턴
연산자에 대한 클리포드 객체입니다.
리턴 유형
레이즈
QiskitError – 입력이 클리포드 연산자가 아닌 경우.
from_permutation
classmethod from_permutation(permutation_gate)
PermutationGate 에서 클리포드 만들기.
매개변수
permutation_gate (PermutationGate) – 변환할 순열입니다.
리턴
이 순열에 대한 클리포드 오브젝트입니다.
리턴 유형
input_dims
is_unitary
output_dims
power
power(n)
연산자를 n번 자기 자신과 합성한 결과를 반환합니다.
매개변수
n (int) – 셀프 작성 횟수 ( n>0 ).
리턴
n-회 구성 연산자입니다.
리턴 유형
레이즈
QiskitError – 연산자의 입력 및 출력 차원이 같지 않거나, 지수가 양의 정수가 아닌 경우.
reshape
reshape(input_dims=None, output_dims=None, num_qubits=None)
입력 및 출력 하위 시스템 치수가 재구성된 얕은 복사본을 반환합니다.
매개변수
- 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)
텐서 곱을 다른 클리포드로 반환합니다.
매개변수
other (Clifford) – 클리포드 오브젝트입니다.
리턴
텐서 곱 , 여기서
는 현재 클리포드이고 는 다른 클리포드입니다.
리턴 유형
텐서 곱은 ^ 이진 연산자를 사용하여 구할 수 있습니다. 따라서 a.tensor(b) 은 a ^ b 과 동일합니다.
to_circuit
to_circuit()
클리포드를 구현한 QuantumCircuit 을 반환합니다.
N <= 3 qubits this is based on optimal CX cost decomposition from reference [1]. For N > 3 큐비트의 경우 참조 [2의] 일반적인 비최적 컴파일 루틴을 사용하여 수행됩니다.
리턴
클리포드의 회로 구현입니다.
리턴 유형
참조
- S. 브라비, D. 마슬로프, 하다마드가 없는 회로가 클리포드 그룹의 구조를 드러내다, arXiv:2003.09412 [quant-ph]
- S. 아론슨, D. 고트스만, 안정기 회로의 향상된 시뮬레이션, Phys. Rev. A 70, 052328 (2004). arXiv:quant-ph/0406196
to_dict
to_instruction
to_labels
to_labels(array=False, mode='B')
클리포드를 목록 폴리 (드)안정화 문자열 레이블로 변환합니다.
대용량 클리포드 변환의 경우 array=True kwarg를 사용하면 전체 Numpy 레이블 배열에 대한 메모리를 미리 할당하므로 더 효율적입니다.
레이블 | 단계 | 심플렉틱 | 매트릭스 | Pauli |
|---|---|---|---|---|
"+I" | 0 | |||
"-I" | 1 | |||
"X" | 0 | |||
"-X" | 1 | |||
"Y" | 0 | |||
"-Y" | 1 | |||
"Z" | 0 | |||
"-Z" | 1 |
매개변수
- array (bool) – true이면 Numpy 배열을 반환하고, 그렇지 않으면 목록을 반환합니다(기본값: False).
- mode (Literal["S", "D", "B"]) – "B"인 경우 안정제와 안정제를 모두 반환하고, "S"인 경우 안정제만 반환하고, "D"인 경우 안정제만 반환합니다.
리턴
레이블 형식의 StabilizerTable 행입니다.
리턴 유형
레이즈
QiskitError – 안정화 함수와 불안정화 함수가 모두 False인 경우.