양자 정보
qiskit.quantum_info
연산자
Operator(데이터[, 입력_차원, 출력_차원] ) | 행렬 연산자 클래스 |
Pauli( [데이터] ) | N-쿼비트 폴리 연산자. |
Clifford(데이터[, 유효성 검사, 복사] ) | 클리포드 그룹의 N-큐비트 단일 연산자입니다. |
ScalarOp( [차원, 계수] ) | 스칼라 ID 연산자 클래스. |
SparseObservable(데이터, /[, 큐비트 수] ) | 데이터를 큐비트-스페어 형식으로 저장하는 폴리 기반에 대한 옵저버블입니다. |
SparsePauliOp(데이터[, 계수,...] ) | 폴리 기반 표현의 스파스 N-큐비트 연산자. |
PauliLindbladMap(데이터, /[, 큐비트 수] ) | 쿼비트 스파스 형식으로 저장된 폴리 린드블래드 맵입니다. |
QubitSparsePauli(데이터, /[, 큐비트 수] ) | 위상이 없는 폴리 연산자는 큐비트-스파스 형식으로 저장됩니다. |
QubitSparsePauliList(데이터, /[, 큐비트 수] ) | 위상이 없는 폴리 연산자 목록이 큐비트-스페어 형식으로 저장됩니다. |
PhasedQubitSparsePauli(데이터, /[, 큐비트 수] ) | 큐비트-스파스 형식으로 저장된 폴리 연산자입니다. |
PhasedQubitSparsePauliList(데이터, /[, 큐비트 수] ) | 위상이 큐비트-스페어 형식으로 저장된 폴리 연산자 목록입니다. |
CNOTDihedral( [데이터, 큐비트 수, 검증] ) | CNOT-이원체 그룹의 N-큐비트 연산자입니다. |
PauliList(데이터) | N-쿼비트 폴리 연산자 목록. |
pauli_basis(qubit 수[, 가중치] ) | N-큐비트 폴리 기준으로 주문한 PauliList 을 반환합니다. |
get_clifford_gate_names() | 클리포드 게이트 이름 목록을 반환합니다. |
상태
Statevector(데이터[, 차원] ) | 상태 벡터 클래스 |
DensityMatrix(데이터[, 차원] ) | DensityMatrix 클래스 |
StabilizerState(데이터[, 유효성 검사] ) | StabilizerState 클래스. |
채널
Choi(데이터[, 입력_차원, 출력_차원] ) | 양자 채널의 초이 매트릭스 표현입니다. |
SuperOp(데이터[, 입력_차원, 출력_차원] ) | 양자 채널의 슈퍼 연산자 표현. |
Kraus(데이터[, 입력_차원, 출력_차원] ) | 양자 채널의 크라우스 표현. |
Stinespring(데이터[, 입력_차원, 출력_차원] ) | 양자 채널의 스타인스프링 표현. |
Chi(데이터[, 입력_차원, 출력_차원] ) | 양자 채널의 파울리 기저 카이 행렬 표현. |
PTM(데이터[, 입력_차원, 출력_차원] ) | 양자 채널의 폴리 전송 매트릭스(PTM) 표현. |
측도
average_gate_fidelity
qiskit.quantum_info.average_gate_fidelity(channel, target=None, require_cp=True, require_tp=False)
잡음이 있는 양자 채널의 평균 게이트 충실도를 반환합니다.
평균 게이트 충실도 는 다음과 같이 주어집니다
여기서 은 process_fidelity() 의 입력 양자 채널 과 목표 단일체 , 는 채널의 차원입니다.
매개변수
- channel (QuantumChannel or Operator) – 잡음이 많은 양자 채널.
- target (Operator or None) – 표적 단일 연산자. None인 경우 대상은 항등 연산자이며[, 기본값은 None입니다].
- require_cp (bool) – 입력 및 대상 채널이 완전히 양수인지 확인하고 Choi-matrix의 음수 고유값을 포함하는 비 CP 로그 경고가 있는지 확인합니다 [. 기본값: True].
- require_tp (bool) – 입력 및 대상 채널이 추적을 보존하는지, 부분 최 행렬의 음의 고유값을 포함하는 비TP 로그 경고가 있는지 확인합니다 [기본값입니다: True].
리턴
평균 게이트 충실도 .
리턴 유형
레이즈
QiskitError - 채널과 타겟의 크기가 같지 않거나 입력 및 출력 크기가 다른 경우.
process_fidelity
qiskit.quantum_info.process_fidelity(channel, target=None, require_cp=True, require_tp=True)
노이즈가 있는 양자 채널의 프로세스 충실도를 반환합니다.
두 양자 채널 사이의 프로세스 충실도 는 다음과 같이 주어집니다
여기서 는 state_fidelity(), 는 채널 에 대한 정규화된 Choi 행렬이며, 는 의 입력 차원이다.
대상 채널이 단일 채널인 경우 이는 다음과 같습니다
여기서 는 각각 입력 양자 채널 과 목표 유니터리 에 대한 행렬이며 SuperOp , 는 채널의 입력 차원이다.
매개변수
- channel (Operator or QuantumChannel) – 입력 양자 채널.
- target (Operator or QuantumChannel or None) – 대상 양자 채널. None인 경우 대상은 항등 연산자이며[, 기본값은 None입니다].
- require_cp (bool) – 입력 및 대상 채널이 완전히 양수인지 확인하고 Choi-matrix의 음수 고유값을 포함하는 비 CP 로그 경고가 있는지 확인합니다 [. 기본값: True].
- require_tp (bool) – 입력 및 대상 채널이 추적을 보존하는지, 부분 최 행렬의 음의 고유값을 포함하는 비TP 로그 경고가 있는지 확인합니다 [기본값입니다: True].
리턴
프로세스 충실도 .
리턴 유형
레이즈
QiskitError - 채널과 타겟의 크기가 같지 않은 경우.
gate_error
qiskit.quantum_info.gate_error(channel, target=None, require_cp=True, require_tp=False)
잡음이 있는 양자 채널의 게이트 오류를 반환합니다.
게이트 오류 는 평균 게이트 부정확성에 의해 주어집니다
여기서 는 average_gate_fidelity() 입력 양자 채널 의 목표 단일값 입니다.
매개변수
- channel (QuantumChannel) – 노이즈가 많은 양자 채널.
- target (Operator or None) – 표적 단일 연산자. None인 경우 대상은 항등 연산자이며[, 기본값은 None입니다].
- require_cp (bool) – 입력 및 대상 채널이 완전히 양수인지 확인하고 Choi-matrix의 음수 고유값을 포함하는 비 CP 로그 경고가 있는지 확인합니다 [. 기본값: True].
- require_tp (bool) – 입력 및 대상 채널이 추적을 보존하는지, 부분 최 행렬의 음의 고유값을 포함하는 비TP 로그 경고가 있는지 확인합니다 [기본값입니다: True].
리턴
평균 게이트 오류 .
리턴 유형
레이즈
QiskitError - 채널과 타겟의 크기가 같지 않거나 입력 및 출력 크기가 다른 경우.
diamond_norm
qiskit.quantum_info.diamond_norm(choi, solver='SCS', **kwargs)
입력된 양자 채널 객체의 다이아몬드 노름을 반환합니다.
이 함수는 참조 [1의] 반확정 프로그램을 사용하여 입력된 양자 채널 객체의 완전 경계 트레이스 노름(흔히 다이아몬드 노름이라고도 함)을 계산합니다.
매개변수
- choi (Choi or QuantumChannel) – 양자 채널 객체 또는 최 행렬 배열.
- solver (str) – 사용할 솔버입니다.
- kwargs - CVXPY 솔버에 전달할 선택적 인수입니다.
리턴
완전 경계 추적 규범 .
리턴 유형
레이즈
QiskitError - CVXPY 패키지를 찾을 수 없는 경우.
추가 정보:
이 함수에 대한 입력은 일반적으로 CPTP 양자 채널이 아니라 두 양자 채널 사이의 차이 여기서 .
참조:
J. Watrous. "완전히 제한된 규범을 위한 더 간단한 준정확 프로그램", arXiv:1207.5726 [quant-ph] (2012).
이 기능을 사용하려면 옵션으로 제공되는 CVXPY 패키지를 설치해야 합니다. 추가 kwarg는 cvxpy.solve 함수에 전달됩니다. 사용 가능한 SDP 솔버에 대한 자세한 내용은 CVXPY 설명서를 참조하세요.
state_fidelity
qiskit.quantum_info.state_fidelity(state1, state2, validate=True)
두 양자 상태 사이의 상태 충실도를 반환합니다.
밀도 행렬 입력 상태 에 대한 상태 충실도 는 다음과 같이 주어집니다
상태 중 하나가 순수 상태인 경우 로 단순화되며, 여기서 .
매개변수
- state1 (Statevector orDensityMatrix) – 첫 번째 양자 상태.
- state2 (Statevector orDensityMatrix) – 두 번째 양자 상태.
- validate (bool) – 입력이 유효한 양자 상태인지 확인 [기본값입니다: True]
리턴
상태 충실도 .
리턴 유형
레이즈
QiskitError - 를 반환하고 입력값이 유효하지 않은 양자 상태인 경우 validate=True .
purity
qiskit.quantum_info.purity(state, validate=True)
양자 상태의 순도를 계산합니다.
밀도 행렬 의 순도는 다음과 같습니다
매개변수
- state (Statevector orDensityMatrix) – 양자 상태.
- validate (bool) – 입력 상태가 유효한지 확인 [기본값입니다: True]
리턴
순도 .
리턴 유형
레이즈
QiskitError - 입력이 유효한 양자 상태가 아닌 경우.
concurrence
qiskit.quantum_info.concurrence(state)
양자 상태의 합치를 계산합니다.
이분 그래프 Statevector 의 공집합은 다음과 같이 주어진다
여기서 는 입력 상태의 partial_trace() 를 취함으로써 얻어진 축소 상태이다.
밀도 행렬의 경우 일치성은 2쿼비트 상태에 대해서만 정의되며, 다음과 같이 주어집니다:
여기서 은 행렬 의 정렬된 고유값입니다.
매개변수
state (Statevector orDensityMatrix) – 2-큐비트 양자 상태.
리턴
동의.
리턴 유형
레이즈
- QiskitError - 입력 상태가 유효하지 않은 경우 QuantumState.
- QiskitError - 입력이 이분형이 아닌 경우 QuantumState.
- QiskitError - 밀도 행렬 입력이 2쿼비트 상태가 아닌 경우.
entropy
qiskit.quantum_info.entropy(state, base=2)
양자 상태의 폰 노이만 엔트로피를 계산합니다.
엔트로피 는 다음과 같이 주어집니다
매개변수
- state (Statevector orDensityMatrix) – 양자 상태.
- base (int) – 로그의 밑수 [기본값: 2].
리턴
폰-노이만 엔트로피 S(rho).
리턴 유형
레이즈
QiskitError - 입력 상태가 유효하지 않은 경우 QuantumState.
entanglement_of_formation
qiskit.quantum_info.entanglement_of_formation(state)
양자 상태의 형성 얽힘을 계산합니다.
입력 양자 상태는 이항 상태 벡터이거나 2쿼비트 밀도 행렬이어야 합니다.
매개변수
state (Statevector orDensityMatrix) – 2-큐비트 양자 상태.
리턴
포메이션의 얽힘.
리턴 유형
레이즈
- QiskitError - 입력 상태가 유효하지 않은 경우 QuantumState.
- QiskitError - 입력이 이분형이 아닌 경우 QuantumState.
- QiskitError - 밀도 행렬 입력이 2쿼비트 상태가 아닌 경우.
mutual_information
qiskit.quantum_info.mutual_information(state, base=2)
이분 상태의 상호 정보를 계산합니다.
상호 정보는 에서 제공합니다:
여기서 는 이항 상태의 환원 밀도 행렬 입니다.
매개변수
- state (Statevector orDensityMatrix) – 이분된 상태.
- base (int) – 로그의 밑수 [기본값: 2].
리턴
상호 정보 .
리턴 유형
레이즈
- QiskitError - 입력 상태가 유효하지 않은 경우 QuantumState.
- QiskitError - 입력이 이분형이 아닌 경우 QuantumState.
유틸리티 기능
Quaternion(데이터) | 쿼터니언을 나타내는 클래스입니다. |
partial_trace
qiskit.quantum_info.partial_trace(state, qargs)
양자 상태의 일부를 추적하여 감소된 밀도 행렬을 반환합니다.
이 함수를 통해 모든 하위 시스템을 추적하면 입력 상태의 를 trace() 반환합니다.
매개변수
- state (Statevector orDensityMatrix) – 입력 상태.
- qargs (list) – 추적할 하위 시스템.
리턴
감소된 밀도 매트릭스입니다.
리턴 유형
레이즈
QiskitError - 입력 상태가 유효하지 않은 경우.
schmidt_decomposition
qiskit.quantum_info.schmidt_decomposition(state, qargs)
순수 양자 상태의 슈미트 분해를 반환합니다.
임의의 이분법 상태의 경우:
의 슈미트 분해는 k에 대한 단일 인덱스 합으로 주어집니다:
여기서 와 은 각각의 공간 과 에 있는 벡터의 직교 정규 집합이고, 슈미트 계수 는 양의 실수 값입니다.
매개변수
- state (Statevector orDensityMatrix) – 입력 상태.
- qargs (list) – 하위 시스템에 해당하는 입력 상태 위치 목록 .
리턴
튜플 목록 (s, u, v), 여기서 s (float)은 슈미트 계수 , u (Statevector), v (Statevector)는 각각 슈미트 벡터 , 입니다.
리턴 유형
레이즈
- QiskitError - 입력 qargs가 입력 상태의 위치 목록이 아닌 경우.
- QiskitError - 입력 qargs가 입력 상태의 적절한 하위 집합이 아닌 경우.
키스킷에서 큐비트는 리틀 엔디안 표기법을 사용해 정렬되며, 가장 중요도가 낮은 큐비트는 더 작은 인덱스를 갖습니다. 예를 들어 4큐비트 시스템은 로 표시됩니다. 이 규칙을 사용하여 qargs=[0] 을 설정하면 으로 상태가 분할됩니다. 또한 큐비트는 전달되는 순서와 관계없이 이 표기법으로 구성됩니다. 예를 들어 qargs=[1,2] 또는 qargs=[2,1] 을 전달하면 상태가 로 분할됩니다.
shannon_entropy
qiskit.quantum_info.shannon_entropy(pvec, base=2)
확률 벡터의 섀넌 엔트로피를 계산합니다.
확률 벡터 의 섀넌 엔트로피는 다음과 같이 정의됩니다
여기서 은 로그 베이스이고 (기본값은 2) 입니다.
매개변수
- pvec (array_like) – 확률 벡터입니다.
- base (int) – 로그의 밑수 [기본값: 2].
리턴
섀넌 엔트로피 H(pvec)입니다.
리턴 유형
commutator
qiskit.quantum_info.commutator(a, b)
A와 b의 정류자를 계산합니다.
매개변수
- a (OperatorTypeT) – 연산자 a.
- b (OperatorTypeT) – 연산자 b.
리턴
정류자
리턴 유형
OperatorTypeT
anti_commutator
qiskit.quantum_info.anti_commutator(a, b)
A와 b의 반교호자를 계산합니다.
매개변수
- a (OperatorTypeT) – 연산자 a.
- b (OperatorTypeT) – 연산자 b.
리턴
안티 커뮤테이터
리턴 유형
OperatorTypeT
double_commutator
qiskit.quantum_info.double_commutator(a, b, c, *, commutator=True)
A, b, c의 대칭 이중 정류자를 계산합니다.
[1의] 방정식( 13.6.18 )도 참조하세요.
정류자가 True이면 다음을 반환합니다
정류자가 False이면 다음을 반환합니다
매개변수
- a (OperatorTypeT) – 연산자 a.
- b (OperatorTypeT) – 연산자 b.
- c (OperatorTypeT) – 연산자 c.
- commutator (bool) –
True이면 이중 정류자를 계산하고False이면 이중 반 정류자를 계산합니다.
리턴
이중 정류자
리턴 유형
OperatorTypeT
참조
[1] : R. McWeeny.
분자 양자역학의 방법. 2판, Academic Press, 1992. ISBN 0-12-486552-6.
무작위
random_statevector
qiskit.quantum_info.random_statevector(dims, seed=None)
무작위 상태 벡터를 생성합니다.
상태 벡터는 균등 분포에서 샘플링됩니다. 이것은 단일 행렬에 대한 하르 측정값에 의해 유도된 측정값입니다.
매개변수
- dims (int ortuple) – 상태의 차원을 나타냅니다.
- seed (int or np.random.Generator) – 선택 사항입니다. RNG에 고정 시드 또는 생성기를 설정합니다.
리턴
랜덤 상태벡터입니다.
리턴 유형
참조:
K. Zyczkowski와 H. 서머스 (2001), "혼합 양자 상태 공간에서의 유도 측정", J. 실제 A: 수학. 34 7111.
random_density_matrix
qiskit.quantum_info.random_density_matrix(dims, rank=None, method='Hilbert-Schmidt', seed=None)
무작위 밀도 행렬을 생성합니다.
매개변수
- dims (int ortuple) – 의 크기를 DensityMatrix.
- rank (int or None) – 밀도 행렬의 차원. 기본값은 전순위입니다.
- method (string) – 선택 사항입니다. 사용 방법 '힐버트-슈미트': (기본값) 힐버트-슈미트 메트릭의 샘플입니다. 'Bures': Bures 메트릭의 샘플입니다.
- seed (int or np.random.Generator) – 선택 사항입니다. RNG에 고정 시드 또는 생성기를 설정합니다.
리턴
무작위 밀도 행렬입니다.
리턴 유형
레이즈
QiskitError - 메서드가 유효하지 않은 경우
random_unitary
qiskit.quantum_info.random_unitary(dims, seed=None)
임의의 단일 연산자를 반환합니다.
연산자는 단일 Haar 측정값에서 샘플링됩니다.
매개변수
- dims (int ortuple) – 연산자의 입력 치수를 지정합니다.
- seed (int or np.random.Generator) – 선택 사항입니다. RNG에 고정 시드 또는 생성기를 설정합니다.
리턴
단일 운영자.
리턴 유형
random_hermitian
qiskit.quantum_info.random_hermitian(dims, traceless=False, seed=None)
임의의 은둔자 연산자를 반환합니다.
연산자는 가우시안 유니타리 앙상블에서 샘플링됩니다.
매개변수
- dims (int ortuple) – 연산자의 입력 차원입니다.
- traceless (bool) – 선택 사항입니다. True인 경우 대각선 항목을 빼서 흔적이 없는 은둔 연산자를 반환합니다(기본값: False).
- seed (int or np.random.Generator) – 선택 사항입니다. RNG에 고정 시드 또는 생성기를 설정합니다.
리턴
헤르미트 연산자입니다.
리턴 유형
random_pauli
qiskit.quantum_info.random_pauli(num_qubits, group_phase=False, seed=None)
무작위 값을 반환합니다 Pauli.
매개변수
- num_qubits (int) – 큐비트의 개수.
- group_phase (bool) – 선택 사항입니다. 만약 무작위 위상을
True생성한다면. 그렇지 않으면 파울리 계수가 +1이 되도록 위상이 설정됩니다(기본값:False). - seed (int |Generator | None) – 선택 사항입니다. RNG에 대한 고정 시드 또는 생성기를 설정합니다.
리턴
무작위로 선택된 파울리.
리턴 유형
random_clifford
qiskit.quantum_info.random_clifford(num_qubits, seed=None)
임의의 클리포드 연산자를 반환합니다.
클리포드는 참고 [1의] 방법을 사용하여 샘플링합니다.
매개변수
- num_qubits (int) – 클리포드 연산에 필요한 큐비트 수.
- seed (int |Generator | None) – 선택 사항입니다. RNG에 대한 고정 시드 또는 생성기를 설정합니다.
리턴
임의의 클리포드 연산자.
리턴 유형
참조 자료:
[1] S. 브라비이와 D. 마스롭 (2020). 하다마르 성분이 없는 회로는 클리포드 군의 구조를 드러낸다. arXiv:2003.09412
random_quantum_channel
qiskit.quantum_info.random_quantum_channel(input_dims=None, output_dims=None, rank=None, seed=None)
임의의 CPTP 양자 채널을 반환합니다.
이는 단일 하르 측정값에서 무작위 아이소메트리를 샘플링하여 양자 채널에 대한 스타인스프링 연산자를 구성합니다.
매개변수
- input_dims (int ortuple) – 채널의 입력 차원입니다.
- output_dims (int ortuple) – 채널의 출력 차원.
- rank (int) – 선택 사항입니다. 양자 채널 초이 행렬의 순위입니다.
- seed (int or np.random.Generator) – 선택 사항입니다. RNG에 고정 시드 또는 생성기를 설정합니다.
리턴
양자 채널 사업자입니다.
리턴 유형
레이즈
QiskitError - 순위 또는 차원이 유효하지 않은 경우.
random_cnotdihedral
qiskit.quantum_info.random_cnotdihedral(num_qubits, seed=None)
임의의 CNOTDihedral 요소를 반환합니다.
매개변수
- num_qubits (int) – cNOTDihedral 객체에 대한 큐비트 수입니다.
- seed (int or RandomState) – 선택 사항입니다. RNG에 고정 시드 또는 생성기를 설정합니다.
리턴
임의의 CNOTDihedral 요소입니다.
리턴 유형
random_pauli_list
qiskit.quantum_info.random_pauli_list(num_qubits, size=1, seed=None, phase=True)
무작위 값을 반환합니다 PauliList.
매개변수
- num_qubits (int) – 큐비트의 개수.
- size (int) – 선택 사항입니다. 폴리 목록의 길이(기본값: 1).
- seed (int |Generator | None) – 선택 사항입니다. RNG에 대한 고정 시드 또는 생성기를 설정합니다.
- phase (bool) – 선택 사항입니다. 파울리
True위상이 무작위로 설정되는 경우, 그렇지 않은 경우 위상은 0으로 고정됩니다 (기본값:True).
리턴
무작위 PauliList.
리턴 유형
분석
hellinger_distance
qiskit.quantum_info.hellinger_distance(dist_p, dist_q)
두 개수 분포 사이의 헬러 거리를 계산합니다.
매개변수
리턴
간격
리턴 유형
참조
hellinger_fidelity
qiskit.quantum_info.hellinger_fidelity(dist_p, dist_q)
두 개수 분포 사이의 헬러 충실도를 계산합니다.
충실도는 로 정의되며, 여기서 H는 헬러 거리입니다. 이 값은 [0, 1] 범위로 제한됩니다.
이는 표준 클래식 충실도( )와 동일하며, 대각선 밀도 행렬에 대한 양자 상태 충실도와도 동일합니다.
매개변수
리턴
충실도
리턴 유형
예제
from qiskit import QuantumCircuit
from qiskit.quantum_info.analysis import hellinger_fidelity
from qiskit.providers.basic_provider import BasicSimulator
qc = QuantumCircuit(5, 5)
qc.h(2)
qc.cx(2, 1)
qc.cx(2, 3)
qc.cx(3, 4)
qc.cx(1, 0)
qc.measure(range(5), range(5))
sim = BasicSimulator()
res1 = sim.run(qc).result()
res2 = sim.run(qc).result()
hellinger_fidelity(res1.get_counts(), res2.get_counts())참조
Z2Symmetries(대칭, sq_paulis, sq_list) | $Z_2$ 대칭 변환기는 문제 해밀턴에서 대칭을 식별하고 이를 사용하여 이 문제에 대해 연산자를 폴리스로 더 효율적으로 테이퍼링하여 표현합니다. |