Skip to main content
IBM Quantum Platform

양자 정보

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)

GitHub

잡음이 있는 양자 채널의 평균 게이트 충실도를 반환합니다.

평균 게이트 충실도 FaveF_{\text{ave}} 는 다음과 같이 주어집니다

Fave(E,U)=dψψUE(ψ ⁣ψ)Uψ=dFpro(E,U)+1d+1\begin{aligned} F_{\text{ave}}(\mathcal{E}, U) &= \int d\psi \langle\psi|U^\dagger \mathcal{E}(|\psi\rangle\!\langle\psi|)U|\psi\rangle \\ &= \frac{d F_{\text{pro}}(\mathcal{E}, U) + 1}{d + 1} \end{aligned}

여기서 Fpro(E,U)F_{\text{pro}}(\mathcal{E}, U)process_fidelity() 의 입력 양자 채널 E\mathcal{E}목표 단일체 UU, dd채널의 차원입니다.

매개변수

  • channel (QuantumChannel or Operator) – 잡음이 많은 양자 채널.
  • target (Operator or None) – 표적 단일 연산자. None인 경우 대상은 항등 연산자이며[, 기본값은 None입니다].
  • require_cp (bool) – 입력 및 대상 채널이 완전히 양수인지 확인하고 Choi-matrix의 음수 고유값을 포함하는 비 CP 로그 경고가 있는지 확인합니다 [. 기본값: True].
  • require_tp (bool) – 입력 및 대상 채널이 추적을 보존하는지, 부분 최 행렬의 음의 고유값을 포함하는 비TP 로그 경고가 있는지 확인합니다 Trout[E]ITr_{\text{out}}[\mathcal{E}] - I [기본값입니다: True].

리턴

평균 게이트 충실도 FaveF_{\text{ave}}.

리턴 유형

부동

레이즈

QiskitError - 채널과 타겟의 크기가 같지 않거나 입력 및 출력 크기가 다른 경우.

process_fidelity

qiskit.quantum_info.process_fidelity(channel, target=None, require_cp=True, require_tp=True)

GitHub

노이즈가 있는 양자 채널의 프로세스 충실도를 반환합니다.

두 양자 채널 E,F\mathcal{E}, \mathcal{F} 사이의 프로세스 충실도 Fpro(E,F)F_{\text{pro}}(\mathcal{E}, \mathcal{F}) 는 다음과 같이 주어집니다

Fpro(E,F)=F(ρE,ρF)F_{\text{pro}}(\mathcal{E}, \mathcal{F}) = F(\rho_{\mathcal{E}}, \rho_{\mathcal{F}})

여기서 FFstate_fidelity(), ρE=ΛE/d\rho_{\mathcal{E}} = \Lambda_{\mathcal{E}} / d 는 채널 E\mathcal{E} 에 대한 정규화된 Choi 행렬이며, ddE\mathcal{E} 의 입력 차원이다.

대상 채널이 단일 채널인 경우 이는 다음과 같습니다

Fpro(E,U)=Tr[SUSE]d2F_{\text{pro}}(\mathcal{E}, U) = \frac{Tr[S_U^\dagger S_{\mathcal{E}}]}{d^2}

여기서 SE,SUS_{\mathcal{E}}, S_{U} 는 각각 입력 양자 채널 E\mathcal{E}목표 유니터리 UU 에 대한 행렬이며 SuperOp , dd 는 채널의 입력 차원이다.

매개변수

  • channel (Operator or QuantumChannel) – 입력 양자 채널.
  • target (Operator or QuantumChannel or None) – 대상 양자 채널. None인 경우 대상은 항등 연산자이며[, 기본값은 None입니다].
  • require_cp (bool) – 입력 및 대상 채널이 완전히 양수인지 확인하고 Choi-matrix의 음수 고유값을 포함하는 비 CP 로그 경고가 있는지 확인합니다 [. 기본값: True].
  • require_tp (bool) – 입력 및 대상 채널이 추적을 보존하는지, 부분 최 행렬의 음의 고유값을 포함하는 비TP 로그 경고가 있는지 확인합니다 Trout[E]ITr_{\text{out}}[\mathcal{E}] - I [기본값입니다: True].

리턴

프로세스 충실도 FproF_{\text{pro}}.

리턴 유형

부동

레이즈

QiskitError - 채널과 타겟의 크기가 같지 않은 경우.

gate_error

qiskit.quantum_info.gate_error(channel, target=None, require_cp=True, require_tp=False)

GitHub

잡음이 있는 양자 채널의 게이트 오류를 반환합니다.

게이트 오류 EE 는 평균 게이트 부정확성에 의해 주어집니다

E(E,U)=1Fave(E,U)E(\mathcal{E}, U) = 1 - F_{\text{ave}}(\mathcal{E}, U)

여기서 Fave(E,U)F_{\text{ave}}(\mathcal{E}, U)average_gate_fidelity() 입력 양자 채널 E\mathcal{E}목표 단일값 UU 입니다.

매개변수

  • channel (QuantumChannel) – 노이즈가 많은 양자 채널.
  • target (Operator or None) – 표적 단일 연산자. None인 경우 대상은 항등 연산자이며[, 기본값은 None입니다].
  • require_cp (bool) – 입력 및 대상 채널이 완전히 양수인지 확인하고 Choi-matrix의 음수 고유값을 포함하는 비 CP 로그 경고가 있는지 확인합니다 [. 기본값: True].
  • require_tp (bool) – 입력 및 대상 채널이 추적을 보존하는지, 부분 최 행렬의 음의 고유값을 포함하는 비TP 로그 경고가 있는지 확인합니다 Trout[E]ITr_{\text{out}}[\mathcal{E}] - I [기본값입니다: True].

리턴

평균 게이트 오류 EE.

리턴 유형

부동

레이즈

QiskitError - 채널과 타겟의 크기가 같지 않거나 입력 및 출력 크기가 다른 경우.

diamond_norm

qiskit.quantum_info.diamond_norm(choi, solver='SCS', **kwargs)

GitHub

입력된 양자 채널 객체의 다이아몬드 노름을 반환합니다.

이 함수는 참조 [1의] 반확정 프로그램을 사용하여 입력된 양자 채널 객체의 완전 경계 트레이스 노름(흔히 다이아몬드 노름이라고도 함)을 계산합니다.

매개변수

  • choi (Choi or QuantumChannel) – 양자 채널 객체 또는 최 행렬 배열.
  • solver (str) – 사용할 솔버입니다.
  • kwargs - CVXPY 솔버에 전달할 선택적 인수입니다.

리턴

완전 경계 추적 규범 E\|\mathcal{E}\|_{\diamond}.

리턴 유형

부동

레이즈

QiskitError - CVXPY 패키지를 찾을 수 없는 경우.

추가 정보:

이 함수에 대한 입력은 일반적으로 CPTP 양자 채널이 아니라 두 양자 채널 사이의 차이 ΔE\|\Delta\mathcal{E}\|_\diamond 여기서 ΔE=E1E2\Delta\mathcal{E} = \mathcal{E}_1 - \mathcal{E}_2.

참조:

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)

GitHub

두 양자 상태 사이의 상태 충실도를 반환합니다.

밀도 행렬 입력 상태 ρ1,ρ2\rho_1, \rho_2 에 대한 상태 충실도 FF 는 다음과 같이 주어집니다

F(ρ1,ρ2)=Tr[ρ1ρ2ρ1]2.F(\rho_1, \rho_2) = Tr[\sqrt{\sqrt{\rho_1}\rho_2\sqrt{\rho_1}}]^2.

상태 중 하나가 순수 상태인 경우 F(ρ1,ρ2)=ψ1ρ2ψ1F(\rho_1, \rho_2) = \langle\psi_1|\rho_2|\psi_1\rangle 로 단순화되며, 여기서 ρ1=ψ1 ⁣ψ1\rho_1 = |\psi_1\rangle\!\langle\psi_1|.

매개변수

리턴

상태 충실도 F(ρ1,ρ2)F(\rho_1, \rho_2).

리턴 유형

부동

레이즈

QiskitError - 를 반환하고 입력값이 유효하지 않은 양자 상태인 경우 validate=True .

purity

qiskit.quantum_info.purity(state, validate=True)

GitHub

양자 상태의 순도를 계산합니다.

밀도 행렬 ρ\rho 의 순도는 다음과 같습니다

Purity(ρ)=Tr[ρ2]\text{Purity}(\rho) = Tr[\rho^2]

매개변수

  • state (Statevector orDensityMatrix) – 양자 상태.
  • validate (bool) – 입력 상태가 유효한지 확인 [기본값입니다: True]

리턴

순도 Tr[ρ2]Tr[\rho^2].

리턴 유형

부동

레이즈

QiskitError - 입력이 유효한 양자 상태가 아닌 경우.

concurrence

qiskit.quantum_info.concurrence(state)

GitHub

양자 상태의 합치를 계산합니다.

이분 그래프 Statevectorψ|\psi\rangle 의 공집합은 다음과 같이 주어진다

C(ψ)=2(1Tr[ρ02])C(|\psi\rangle) = \sqrt{2(1 - Tr[\rho_0^2])}

여기서 ρ0=Tr1[ψ ⁣ψ]\rho_0 = Tr_1[|\psi\rangle\!\langle\psi|] 는 입력 상태의 partial_trace() 를 취함으로써 얻어진 축소 상태이다.

밀도 행렬의 경우 일치성은 2쿼비트 상태에 대해서만 정의되며, 다음과 같이 주어집니다:

C(ρ)=max(0,λ1λ2λ3λ4)C(\rho) = \max(0, \lambda_1 - \lambda_2 - \lambda_3 - \lambda_4)

여기서 λ1λ2λ3λ4\lambda _1 \ge \lambda _2 \ge \lambda _3 \ge \lambda _4 은 행렬 R=ρ(YY)ρ(YY)ρR=\sqrt{\sqrt{\rho }(Y\otimes Y)\overline{\rho}(Y\otimes Y)\sqrt{\rho}} 의 정렬된 고유값입니다.

매개변수

state (Statevector orDensityMatrix) – 2-큐비트 양자 상태.

리턴

동의.

리턴 유형

부동

레이즈

  • QiskitError - 입력 상태가 유효하지 않은 경우 QuantumState.
  • QiskitError - 입력이 이분형이 아닌 경우 QuantumState.
  • QiskitError - 밀도 행렬 입력이 2쿼비트 상태가 아닌 경우.

entropy

qiskit.quantum_info.entropy(state, base=2)

GitHub

양자 상태의 폰 노이만 엔트로피를 계산합니다.

엔트로피 SS 는 다음과 같이 주어집니다

S(ρ)=Tr[ρlog(ρ)]S(\rho) = - Tr[\rho \log(\rho)]

매개변수

리턴

폰-노이만 엔트로피 S(rho).

리턴 유형

부동

레이즈

QiskitError - 입력 상태가 유효하지 않은 경우 QuantumState.

entanglement_of_formation

qiskit.quantum_info.entanglement_of_formation(state)

GitHub

양자 상태의 형성 얽힘을 계산합니다.

입력 양자 상태는 이항 상태 벡터이거나 2쿼비트 밀도 행렬이어야 합니다.

매개변수

state (Statevector orDensityMatrix) – 2-큐비트 양자 상태.

리턴

포메이션의 얽힘.

리턴 유형

부동

레이즈

  • QiskitError - 입력 상태가 유효하지 않은 경우 QuantumState.
  • QiskitError - 입력이 이분형이 아닌 경우 QuantumState.
  • QiskitError - 밀도 행렬 입력이 2쿼비트 상태가 아닌 경우.

mutual_information

qiskit.quantum_info.mutual_information(state, base=2)

GitHub

이분 상태의 상호 정보를 계산합니다.

상호 정보는 II 에서 제공합니다:

I(ρAB)=S(ρA)+S(ρB)S(ρAB)I(\rho_{AB}) = S(\rho_A) + S(\rho_B) - S(\rho_{AB})

여기서 ρA=TrB[ρAB],ρB=TrA[ρAB]\rho_A=Tr_B[\rho_{AB}], \rho_B=Tr_A[\rho_{AB}] 는 이항 상태의 환원 밀도 행렬 ρAB\rho_{AB} 입니다.

매개변수

리턴

상호 정보 I(ρAB)I(\rho_{AB}).

리턴 유형

부동

레이즈

  • QiskitError - 입력 상태가 유효하지 않은 경우 QuantumState.
  • QiskitError - 입력이 이분형이 아닌 경우 QuantumState.

유틸리티 기능

Quaternion(데이터)쿼터니언을 나타내는 클래스입니다.

partial_trace

qiskit.quantum_info.partial_trace(state, qargs)

GitHub

양자 상태의 일부를 추적하여 감소된 밀도 행렬을 반환합니다.

이 함수를 통해 모든 하위 시스템을 추적하면 입력 상태의 를 trace() 반환합니다.

매개변수

리턴

감소된 밀도 매트릭스입니다.

리턴 유형

DensityMatrix

레이즈

QiskitError - 입력 상태가 유효하지 않은 경우.

schmidt_decomposition

qiskit.quantum_info.schmidt_decomposition(state, qargs)

GitHub

순수 양자 상태의 슈미트 분해를 반환합니다.

임의의 이분법 상태의 경우:

ψAB=i,jcijxiAyjB,|\psi\rangle_{AB} = \sum_{i,j} c_{ij} |x_i\rangle_A \otimes |y_j\rangle_B,

의 슈미트 분해는 k에 대한 단일 인덱스 합으로 주어집니다:

ψAB=kλkukAvkB|\psi\rangle_{AB} = \sum_{k} \lambda_{k} |u_k\rangle_A \otimes |v_k\rangle_B

여기서 ukA|u_k\rangle_AvkB|v_k\rangle_B 은 각각의 공간 AABB 에 있는 벡터의 직교 정규 집합이고, 슈미트 계수 λk\lambda_k 는 양의 실수 값입니다.

매개변수

리턴

튜플 목록 (s, u, v), 여기서 s (float)은 슈미트 계수 λk\lambda_k, u (Statevector), v (Statevector)는 각각 슈미트 벡터 ukA|u_k\rangle_A, ukB|u_k\rangle_B 입니다.

리턴 유형

목록

레이즈

  • QiskitError - 입력 qargs가 입력 상태의 위치 목록이 아닌 경우.
  • QiskitError - 입력 qargs가 입력 상태의 적절한 하위 집합이 아닌 경우.
참고

키스킷에서 큐비트는 리틀 엔디안 표기법을 사용해 정렬되며, 가장 중요도가 낮은 큐비트는 더 작은 인덱스를 갖습니다. 예를 들어 4큐비트 시스템은 q3q2q1q0|q_3q_2q_1q_0\rangle 로 표시됩니다. 이 규칙을 사용하여 qargs=[0] 을 설정하면 q3q2q1Aq0B|q_3q_2q_1\rangle_A\otimes|q_0\rangle_B 으로 상태가 분할됩니다. 또한 큐비트는 전달되는 순서와 관계없이 이 표기법으로 구성됩니다. 예를 들어 qargs=[1,2] 또는 qargs=[2,1] 을 전달하면 상태가 q3q0Aq2q1B|q_3q_0\rangle_A\otimes|q_2q_1\rangle_B 로 분할됩니다.

shannon_entropy

qiskit.quantum_info.shannon_entropy(pvec, base=2)

GitHub

확률 벡터의 섀넌 엔트로피를 계산합니다.

확률 벡터 p=[p0,...,pn1]\vec{p} = [p_0, ..., p_{n-1}] 의 섀넌 엔트로피는 다음과 같이 정의됩니다

H(p)=i=0n1pilogb(pi)H(\vec{p}) = \sum_{i=0}^{n-1} p_i \log_b(p_i)

여기서 bb 은 로그 베이스이고 (기본값은 2) 0logb(0)00 \log_b(0) \equiv 0 입니다.

매개변수

  • pvec (array_like) – 확률 벡터입니다.
  • base (int) – 로그의 밑수 [기본값: 2].

리턴

섀넌 엔트로피 H(pvec)입니다.

리턴 유형

부동

commutator

qiskit.quantum_info.commutator(a, b)

GitHub

A와 b의 정류자를 계산합니다.

abba.ab - ba.

매개변수

  • a (OperatorTypeT) – 연산자 a.
  • b (OperatorTypeT) – 연산자 b.

리턴

정류자

리턴 유형

OperatorTypeT

anti_commutator

qiskit.quantum_info.anti_commutator(a, b)

GitHub

A와 b의 반교호자를 계산합니다.

ab+ba.ab + ba.

매개변수

  • a (OperatorTypeT) – 연산자 a.
  • b (OperatorTypeT) – 연산자 b.

리턴

안티 커뮤테이터

리턴 유형

OperatorTypeT

double_commutator

qiskit.quantum_info.double_commutator(a, b, c, *, commutator=True)

GitHub

A, b, c의 대칭 이중 정류자를 계산합니다.

[1의] 방정식( 13.6.18 )도 참조하세요.

정류자가 True이면 다음을 반환합니다

[[A,B],C]/2+[A,[B,C]]/2=(2ABC+2CBABACCABACBBCA)/2.[[A, B], C]/2 + [A, [B, C]]/2 = (2ABC + 2CBA - BAC - CAB - ACB - BCA)/2.

정류자가 False이면 다음을 반환합니다

{[A,B],C}/2+{A,[B,C]}/2=(2ABC2CBABAC+CABACB+BCA)/2.\lbrace[A, B], C\rbrace/2 + \lbrace A, [B, C]\rbrace/2 = (2ABC - 2CBA - BAC + CAB - ACB + BCA)/2.

매개변수

  • 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)

GitHub

무작위 상태 벡터를 생성합니다.

상태 벡터는 균등 분포에서 샘플링됩니다. 이것은 단일 행렬에 대한 하르 측정값에 의해 유도된 측정값입니다.

매개변수

  • 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)

GitHub

무작위 밀도 행렬을 생성합니다.

매개변수

  • dims (int ortuple) – 의 크기를 DensityMatrix.
  • rank (int or None) – 밀도 행렬의 차원. 기본값은 전순위입니다.
  • method (string) – 선택 사항입니다. 사용 방법 '힐버트-슈미트': (기본값) 힐버트-슈미트 메트릭의 샘플입니다. 'Bures': Bures 메트릭의 샘플입니다.
  • seed (int or np.random.Generator) – 선택 사항입니다. RNG에 고정 시드 또는 생성기를 설정합니다.

리턴

무작위 밀도 행렬입니다.

리턴 유형

DensityMatrix

레이즈

QiskitError - 메서드가 유효하지 않은 경우

random_unitary

qiskit.quantum_info.random_unitary(dims, seed=None)

GitHub

임의의 단일 연산자를 반환합니다.

연산자는 단일 Haar 측정값에서 샘플링됩니다.

매개변수

  • dims (int ortuple) – 연산자의 입력 치수를 지정합니다.
  • seed (int or np.random.Generator) – 선택 사항입니다. RNG에 고정 시드 또는 생성기를 설정합니다.

리턴

단일 운영자.

리턴 유형

운영자

random_hermitian

qiskit.quantum_info.random_hermitian(dims, traceless=False, seed=None)

GitHub

임의의 은둔자 연산자를 반환합니다.

연산자는 가우시안 유니타리 앙상블에서 샘플링됩니다.

매개변수

  • 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)

GitHub

무작위 값을 반환합니다 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)

GitHub

임의의 클리포드 연산자를 반환합니다.

클리포드는 참고 [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)

GitHub

임의의 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)

GitHub

임의의 CNOTDihedral 요소를 반환합니다.

매개변수

  • num_qubits (int) – cNOTDihedral 객체에 대한 큐비트 수입니다.
  • seed (int or RandomState) – 선택 사항입니다. RNG에 고정 시드 또는 생성기를 설정합니다.

리턴

임의의 CNOTDihedral 요소입니다.

리턴 유형

CNOTDihedral

random_pauli_list

qiskit.quantum_info.random_pauli_list(num_qubits, size=1, seed=None, phase=True)

GitHub

무작위 값을 반환합니다 PauliList.

매개변수

  • num_qubits (int) – 큐비트의 개수.
  • size (int) – 선택 사항입니다. 폴리 목록의 길이(기본값: 1).
  • seed (int |Generator | None) – 선택 사항입니다. RNG에 대한 고정 시드 또는 생성기를 설정합니다.
  • phase (bool) – 선택 사항입니다. 파울리 True 위상이 무작위로 설정되는 경우, 그렇지 않은 경우 위상은 0으로 고정됩니다 (기본값: True).

리턴

무작위 PauliList.

리턴 유형

PauliList


분석

hellinger_distance

qiskit.quantum_info.hellinger_distance(dist_p, dist_q)

GitHub

두 개수 분포 사이의 헬러 거리를 계산합니다.

매개변수

  • dist_p (dict) – 첫 번째 카운트 딕셔너리.
  • dist_q (dict) – 두 번째 카운트 딕셔너리.

리턴

간격

리턴 유형

부동

참조

헬러 거리 @ 위키백과

hellinger_fidelity

qiskit.quantum_info.hellinger_fidelity(dist_p, dist_q)

GitHub

두 개수 분포 사이의 헬러 충실도를 계산합니다.

충실도는 (1H2)2\left(1-H^{2}\right)^{2} 로 정의되며, 여기서 H는 헬러 거리입니다. 이 값은 [0, 1] 범위로 제한됩니다.

이는 표준 클래식 충실도( F(Q,P)=(ipiqi)2F(Q,P)=\left(\sum_{i}\sqrt{p_{i}q_{i}}\right)^{2} )와 동일하며, 대각선 밀도 행렬에 대한 양자 상태 충실도와도 동일합니다.

매개변수

  • dist_p (dict) – 첫 번째 카운트 딕셔너리.
  • dist_q (dict) – 두 번째 카운트 딕셔너리.

리턴

충실도

리턴 유형

부동

예제

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$ 대칭 변환기는 문제 해밀턴에서 대칭을 식별하고 이를 사용하여 이 문제에 대해 연산자를 폴리스로 더 효율적으로 테이퍼링하여 표현합니다.
이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.