Skip to main content
IBM Quantum Platform

Informação Quântica

qiskit.quantum_info


Operadores

Operator(dados[, input_dims, output_dims] )Classe de operador de matriz
Pauli([dados] )Operador Pauli de N-qubit.
Clifford(dados[, validação, cópia] )Um operador unitário N-qubit do grupo Clifford.
ScalarOp([dims, coeff] )Classe de operador de identidade escalar.
SparseObservable(dados, /[, número de qubits] )Um observável sobre bases Pauli que armazena seus dados em um formato qubit-esparso.
SparsePauliOp(dados[, coeficientes,...] )Operador N-qubit esparso em uma representação de base Pauli.
PauliLindbladMap(dados, /[, número de qubits] )Um mapa de Pauli Lindblad armazenado em um formato qubit-esparso.
QubitSparsePauli(dados, /[, número de qubits] )Um operador Pauli sem fase armazenado em um formato esparso de qubit.
QubitSparsePauliList(dados, /[, número de qubits] )Uma lista de operadores Pauli sem fase armazenada em um formato qubit-esparso.
PhasedQubitSparsePauli(dados, /[, número de qubits] )Um operador Pauli armazenado em um formato esparso de qubit.
PhasedQubitSparsePauliList(dados, /[, número de qubits] )Uma lista de operadores Pauli com fases armazenadas em um formato esparso de qubit.
CNOTDihedral([data, num_qubits, validate] )Um operador N-qubit do grupo CNOT-Dihedral.
PauliList(dados)Lista de operadores Pauli de N-qubit.
pauli_basis(num_qubits[, peso] )Retorna o PauliList ordenado para a base Pauli de n-qubit.
get_clifford_gate_names()Retorna a lista de nomes de portas Clifford.

Estados

Statevector(data[, dims] )Classe de vetor de estado
DensityMatrix(data[, dims] )DensityMatrix classe
StabilizerState(dados[, validação] )StabilizerState classe.

Canais

Choi(dados[, input_dims, output_dims] )Representação da matriz Choi de um canal quântico.
SuperOp(dados[, input_dims, output_dims] )Representação de superoperador de um canal quântico.
Kraus(dados[, input_dims, output_dims] )Representação de Kraus de um canal quântico.
Stinespring(dados[, input_dims, output_dims] )Representação em Stinespring de um canal quântico.
Chi(dados[, input_dims, output_dims] )Representação da matriz Chi com base em Pauli de um canal quântico.
PTM(dados[, input_dims, output_dims] )Representação da matriz de transferência de Pauli (PTM) de um canal quântico.

Medidas

average_gate_fidelity

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

GitHub

Retorna a fidelidade média da porta de um canal quântico com ruído.

A fidelidade média da porta FaveF_{\text{ave}} é dada por

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}

em que Fpro(E,U)F_{\text{pro}}(\mathcal{E}, U) é o process_fidelity() do canal quântico de entrada E\mathcal{E} com um alvo unitário UU, e dd é a dimensão do canal.

Parâmetros

  • channel (QuantumChannel or Operator) – canal quântico com ruído.
  • target (Operator or None) – operador unitário de destino. Se Nenhum, o alvo é o operador de identidade [Padrão: Nenhum].
  • require_cp (bool) – verifica se os canais de entrada e de destino são completamente positivos e se o aviso de registro não-CP contém autovalores negativos da matriz de Choi [Padrão: True].
  • require_tp (bool) – verifica se os canais de entrada e de destino preservam o traço e se o aviso de registro não TP contém valores próprios negativos da matriz Choi parcial Trout[E]ITr_{\text{out}}[\mathcal{E}] - I [Padrão: True].

Retorna

A fidelidade média da porta FaveF_{\text{ave}}.

Tipo de retorno

Valor flutuante

Aumentos

QiskitError - se o canal e o destino não tiverem as mesmas dimensões ou tiverem dimensões de entrada e saída diferentes.

process_fidelity

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

GitHub

Retorna a fidelidade do processo de um canal quântico com ruído.

A fidelidade do processo Fpro(E,F)F_{\text{pro}}(\mathcal{E}, \mathcal{F}) entre dois canais quânticos E,F\mathcal{E}, \mathcal{F} é dada por

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

em que FF é o state_fidelity(), ρE=ΛE/d\rho_{\mathcal{E}} = \Lambda_{\mathcal{E}} / d é a matriz normalizada Choi normalizada para o canal E\mathcal{E}, e dd é a dimensão de entrada de E\mathcal{E}.

Quando o canal de destino é unitário, isso é equivalente a

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

em que SE,SUS_{\mathcal{E}}, S_{U} são as SuperOp para o canal quântico de entrada E\mathcal{E} e o alvo unitário UU, respectivamente, e dd é a dimensão de entrada do canal.

Parâmetros

  • channel (Operator or QuantumChannel) – canal quântico de entrada.
  • target (Operator or QuantumChannel or None) – canal quântico alvo. Se Nenhum, o alvo é o operador de identidade [Padrão: Nenhum].
  • require_cp (bool) – verifica se os canais de entrada e de destino são completamente positivos e se o aviso de registro não-CP contém autovalores negativos da matriz de Choi [Padrão: True].
  • require_tp (bool) – verifica se os canais de entrada e de destino preservam o traço e se o aviso de registro não TP contém valores próprios negativos da matriz Choi parcial Trout[E]ITr_{\text{out}}[\mathcal{E}] - I [Padrão: True].

Retorna

A fidelidade do processo FproF_{\text{pro}}.

Tipo de retorno

Valor flutuante

Aumentos

QiskitError - se o canal e o alvo não tiverem as mesmas dimensões.

gate_error

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

GitHub

Retorna o erro de porta de um canal quântico com ruído.

O erro da porta EE é dado pela infidelidade média da porta

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

em que Fave(E,U)F_{\text{ave}}(\mathcal{E}, U) é o average_gate_fidelity() do canal quântico de entrada E\mathcal{E} com um alvo unitário UU.

Parâmetros

  • channel (QuantumChannel) – canal quântico com ruído.
  • target (Operator or None) – operador unitário de destino. Se Nenhum, o alvo é o operador de identidade [Padrão: Nenhum].
  • require_cp (bool) – verifica se os canais de entrada e de destino são completamente positivos e se o aviso de registro não-CP contém autovalores negativos da matriz de Choi [Padrão: True].
  • require_tp (bool) – verifica se os canais de entrada e de destino preservam o traço e se o aviso de registro não TP contém valores próprios negativos da matriz Choi parcial Trout[E]ITr_{\text{out}}[\mathcal{E}] - I [Padrão: True].

Retorna

O erro médio da porta EE.

Tipo de retorno

Valor flutuante

Aumentos

QiskitError - se o canal e o destino não tiverem as mesmas dimensões ou tiverem dimensões de entrada e saída diferentes.

diamond_norm

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

GitHub

Retorna a norma de diamante do objeto de canal quântico de entrada.

Essa função calcula a norma de rastreamento completamente limitada (geralmente chamada de norma de diamante) do objeto de canal quântico de entrada usando o programa semidefinido da referência [1].

Parâmetros

  • choi (Choi or QuantumChannel) – um objeto de canal quântico ou matriz de Choi.
  • solver (str) – O solucionador a ser usado.
  • kwargs - argumentos opcionais a serem passados para o solucionador CVXPY.

Retorna

A norma de traço completamente limitada E\|\mathcal{E}\|_{\diamond}.

Tipo de retorno

Valor flutuante

Aumentos

QiskitError - se o pacote CVXPY não puder ser encontrado.

Informações adicionais:

Normalmente, a entrada para essa função não é um canal quântico CPTP, mas sim a diferença entre dois canais quânticos ΔE\|\Delta\mathcal{E}\|_\diamond onde ΔE=E1E2\Delta\mathcal{E} = \mathcal{E}_1 - \mathcal{E}_2.

Referência:

J. Watrous. "Simpler semidefinite programs for completely bounded norms" (Programas semidefinidos mais simples para normas completamente limitadas), arXiv:1207.5726 [quant-ph] (2012).

Nota

Essa função requer a instalação do pacote opcional CVXPY. Quaisquer kwargs adicionais serão passados para a função cvxpy.solve . Consulte a documentação do CVXPY para obter informações sobre os solucionadores SDP disponíveis.

state_fidelity

qiskit.quantum_info.state_fidelity(state1, state2, validate=True)

GitHub

Retorna a fidelidade de estado entre dois estados quânticos.

A fidelidade do estado FF para os estados de entrada da matriz de densidade ρ1,ρ2\rho_1, \rho_2 é dada por

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

Se um dos estados for um estado puro, isso se simplifica para F(ρ1,ρ2)=ψ1ρ2ψ1F(\rho_1, \rho_2) = \langle\psi_1|\rho_2|\psi_1\rangle, onde ρ1=ψ1 ⁣ψ1\rho_1 = |\psi_1\rangle\!\langle\psi_1|.

Parâmetros

Retorna

A fidelidade do estado F(ρ1,ρ2)F(\rho_1, \rho_2).

Tipo de retorno

Valor flutuante

Aumentos

QiskitError - se validate=True e as entradas forem estados quânticos inválidos.

purity

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

GitHub

Calcule a pureza de um estado quântico.

A pureza de uma matriz de densidade ρ\rho é

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

Parâmetros

  • state (Statevector orDensityMatrix) – um estado quântico.
  • validate (bool) – verificar se o estado da entrada é válido [Padrão: True]

Retorna

a pureza Tr[ρ2]Tr[\rho^2].

Tipo de retorno

Valor flutuante

Aumentos

QiskitError - se a entrada não for um estado quântico válido.

concurrence

qiskit.quantum_info.concurrence(state)

GitHub

Calcule a concorrência de um estado quântico.

A concorrência de um bipartido Statevector ψ|\psi\rangle é dada por

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

onde ρ0=Tr1[ψ ⁣ψ]\rho_0 = Tr_1[|\psi\rangle\!\langle\psi|] é o estado reduzido obtido a partial_trace() partir do estado de entrada.

Para as matrizes de densidade, a concorrência é definida apenas para estados de 2 qubit e é dada por:

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

em que λ1λ2λ3λ4\lambda _1 \ge \lambda _2 \ge \lambda _3 \ge \lambda _4 são os valores próprios ordenados da matriz R=ρ(YY)ρ(YY)ρR=\sqrt{\sqrt{\rho }(Y\otimes Y)\overline{\rho}(Y\otimes Y)\sqrt{\rho}}.

Parâmetros

state (Statevector orDensityMatrix) – um estado quântico de 2 qubits.

Retorna

A concordância.

Tipo de retorno

Valor flutuante

Aumentos

  • QiskitError - se o estado de entrada não for um QuantumState válido.
  • QiskitError - se a entrada não for bipartida QuantumState.
  • QiskitError - se a entrada da matriz de densidade não for um estado de 2 qubit.

entropy

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

GitHub

Calcule a entropia de von-Neumann de um estado quântico.

A entropia SS é dada por

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

Parâmetros

Retorna

A entropia de von-Neumann S(rho).

Tipo de retorno

Valor flutuante

Aumentos

QiskitError - se o estado de entrada não for um QuantumState válido.

entanglement_of_formation

qiskit.quantum_info.entanglement_of_formation(state)

GitHub

Calcule o emaranhamento da formação do estado quântico.

O estado quântico de entrada deve ser um vetor de estado bipartido ou uma matriz de densidade de 2 qubits.

Parâmetros

state (Statevector orDensityMatrix) – um estado quântico de 2 qubits.

Retorna

O emaranhamento da formação.

Tipo de retorno

Valor flutuante

Aumentos

  • QiskitError - se o estado de entrada não for um QuantumState válido.
  • QiskitError - se a entrada não for bipartida QuantumState.
  • QiskitError - se a entrada da matriz de densidade não for um estado de 2 qubit.

mutual_information

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

GitHub

Calcule a informação mútua de um estado bipartido.

A informação mútua II é dada por:

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

em que ρA=TrB[ρAB],ρB=TrA[ρAB]\rho_A=Tr_B[\rho_{AB}], \rho_B=Tr_A[\rho_{AB}], são as matrizes de densidade reduzida do estado bipartido ρAB\rho_{AB}.

Parâmetros

Retorna

A informação mútua I(ρAB)I(\rho_{AB}).

Tipo de retorno

Valor flutuante

Aumentos

  • QiskitError - se o estado de entrada não for um QuantumState válido.
  • QiskitError - se a entrada não for bipartida QuantumState.

Funções de Utilitário

Quaternion(dados)Uma classe que representa um quaternion.

partial_trace

qiskit.quantum_info.partial_trace(state, qargs)

GitHub

Retorna a matriz de densidade reduzida ao rastrear parte do estado quântico.

Se todos os subsistemas forem rastreados, isso retornará o trace() do estado de entrada.

Parâmetros

Retorna

A matriz de densidade reduzida.

Tipo de retorno

DensityMatrix

Aumentos

QiskitError - se o estado da entrada for inválido.

schmidt_decomposition

qiskit.quantum_info.schmidt_decomposition(state, qargs)

GitHub

Retorna a Decomposição de Schmidt de um estado quântico puro.

Para um estado bipartido arbitrário:

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

sua Decomposição de Schmidt é dada pela soma de índice único sobre k:

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

em que ukA|u_k\rangle_A e vkB|v_k\rangle_B são um conjunto ortonormal de vetores em seus respectivos espaços AA e BB, e os coeficientes de Schmidt λk\lambda_k são valores reais positivos.

Parâmetros

  • state (Statevector orDensityMatrix) – o estado da entrada.
  • qargs (list) – a lista de posições do estado de entrada correspondente ao subsistema BB.

Retorna

lista de tuplas (s, u, v), em que s (float) são os coeficientes de Schmidt λk\lambda_k, e u (Statevector), v (Statevector) são os vetores de Schmidt ukA|u_k\rangle_A, ukB|u_k\rangle_B, respectivamente.

Tipo de retorno

Lista

Aumentos

  • QiskitError - se Input qargs não for uma lista de posições do estado Input.
  • QiskitError - se Input qargs não for um subconjunto adequado de Input state.
Nota

No Qiskit, os qubits são ordenados usando a notação little-endian, com os qubits menos significativos tendo índices menores. Por exemplo, um sistema de quatro qubits é representado como q3q2q1q0|q_3q_2q_1q_0\rangle. Usando essa convenção, a configuração qargs=[0] dividirá o estado como q3q2q1Aq0B|q_3q_2q_1\rangle_A\otimes|q_0\rangle_B. Além disso, os qubits serão organizados nessa notação, independentemente da ordem em que forem passados. Por exemplo, passar qargs=[1,2] ou qargs=[2,1] resultará no particionamento do estado como q3q0Aq2q1B|q_3q_0\rangle_A\otimes|q_2q_1\rangle_B.

shannon_entropy

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

GitHub

Calcule a entropia de Shannon de um vetor de probabilidade.

A entropia de Shannon de um vetor de probabilidade p=[p0,...,pn1]\vec{p} = [p_0, ..., p_{n-1}] é definida como

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

em que bb é a base de log e (padrão 2) e 0logb(0)00 \log_b(0) \equiv 0.

Parâmetros

  • pvec (array_like) – um vetor de probabilidade.
  • base (int) – a base do logaritmo [Padrão: 2].

Retorna

A entropia de Shannon H(pvec).

Tipo de retorno

Valor flutuante

commutator

qiskit.quantum_info.commutator(a, b)

GitHub

Calcule o comutador de a e b.

abba.ab - ba.

Parâmetros

  • a (OperatorTypeT) – Operador a.
  • b (OperatorTypeT) – Operador b.

Retorna

O comutador

Tipo de retorno

OperatorTypeT

anti_commutator

qiskit.quantum_info.anti_commutator(a, b)

GitHub

Calcule o anti-comutador de a e b.

ab+ba.ab + ba.

Parâmetros

  • a (OperatorTypeT) – Operador a.
  • b (OperatorTypeT) – Operador b.

Retorna

O anti-comutador

Tipo de retorno

OperatorTypeT

double_commutator

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

GitHub

Calcule o comutador duplo simétrico de a, b e c.

Consulte também a Equação ( 13.6.18 ) em [1].

Se o comutador for verdadeiro, ele retornará

[[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.

Se o comutador for False, ele retornará

{[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.

Parâmetros

  • a (OperatorTypeT) – Operador a.
  • b (OperatorTypeT) – Operador b.
  • c (OperatorTypeT) – Operador c.
  • commutator (bool) – Se True computar o comutador duplo, se False o anticomutador duplo.

Retorna

O comutador duplo

Tipo de retorno

OperatorTypeT

Referências

[1] : R. McWeeny.

Methods of Molecular Quantum Mechanics (Métodos de Mecânica Quântica Molecular). 2ª edição, Academic Press, 1992. ISBN 0-12-486552-6.


Aleatório

random_statevector

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

GitHub

Gerar um vetor de estado aleatório.

O vetor de estado é amostrado a partir da distribuição uniforme. Essa é a medida induzida pela medida de Haar em matrizes unitárias.

Parâmetros

  • dims (int ortuple) – as dimensões do estado.
  • seed (int or np.random.Generator) – Opcional. Defina uma semente ou gerador fixo para o RNG.

Retorna

o vetor de estado aleatório.

Tipo de retorno

Statevector

Referência:

K. Zyczkowski e H. Sommers (2001), "Induced measures in the space of mixed quantum states", J. Física. R: Matemática. Gen. 34 7111.

random_density_matrix

qiskit.quantum_info.random_density_matrix(dims, rank=None, method='Hilbert-Schmidt', seed=None)

GitHub

Gerar uma matriz de densidade aleatória.

Parâmetros

  • dims (int ortuple) – as dimensões do site DensityMatrix.
  • rank (int or None) – a ordem da matriz de densidade. O valor padrão é de classificação completa.
  • method (string) – Opcional. O método a ser usado. 'Hilbert-Schmidt': (Padrão) amostra da métrica de Hilbert-Schmidt. 'Bures': amostra da métrica Bures.
  • seed (int or np.random.Generator) – Opcional. Defina uma semente ou gerador fixo para o RNG.

Retorna

a matriz de densidade aleatória.

Tipo de retorno

DensityMatrix

Aumentos

QiskitError - se o método não for válido.

random_unitary

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

GitHub

Retorna um operador unitário aleatório.

O operador é amostrado a partir da medida unitária de Haar.

Parâmetros

  • dims (int ortuple) – as dimensões de entrada do Operador.
  • seed (int or np.random.Generator) – Opcional. Defina uma semente ou gerador fixo para o RNG.

Retorna

um operador unitário.

Tipo de retorno

Operador

random_hermitian

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

GitHub

Retorna um operador hermitiano aleatório.

O operador é amostrado a partir do Gaussian Unitary Ensemble.

Parâmetros

  • dims (int ortuple) – a dimensão de entrada do Operador.
  • traceless (bool) – Opcional. Se verdadeiro, subtraia as entradas diagonais para retornar um operador hermitiano sem traços (Padrão: Falso).
  • seed (int or np.random.Generator) – Opcional. Defina uma semente ou gerador fixo para o RNG.

Retorna

um operador hermitiano.

Tipo de retorno

Operador

random_pauli

qiskit.quantum_info.random_pauli(num_qubits, group_phase=False, seed=None)

GitHub

Retorna um Pauli aleatório.

Parâmetros

  • num_qubits (int) – o número de qubits.
  • group_phase (bool) – Opcional. Se verdadeiro, gerar fase aleatória. Caso contrário, a fase será definida de modo que o coeficiente de Pauli seja +1 (padrão: False).
  • seed (int or np.random.Generator) – Opcional. Defina uma semente ou gerador fixo para o RNG.

Retorna

um Pauli aleatório

Tipo de retorno

Pauli

random_clifford

qiskit.quantum_info.random_clifford(num_qubits, seed=None)

GitHub

Retorna um operador de Clifford aleatório.

O Clifford é amostrado usando o método da Referência [1].

Parâmetros

  • num_qubits (int) – o número de qubits para o Clifford
  • seed (int or np.random.Generator) – Opcional. Defina uma semente ou gerador fixo para o RNG.

Retorna

um operador de Clifford aleatório.

Tipo de retorno

Clifford

Referência:

  1. S. Bravyi e D. Maslov, Hadamard-free circuits expose the structure of the Clifford group (Circuitos sem Hadamard expõem a estrutura do grupo Clifford ). arXiv:2003.09412 [quant-ph]

random_quantum_channel

qiskit.quantum_info.random_quantum_channel(input_dims=None, output_dims=None, rank=None, seed=None)

GitHub

Retorna um canal quântico CPTP aleatório.

Isso constrói o operador Stinespring para o canal quântico por meio da amostragem de uma isometria aleatória da medida Haar unitária.

Parâmetros

  • input_dims (int ortuple) – a dimensão de entrada do canal.
  • output_dims (int ortuple) – a dimensão de saída do canal.
  • rank (int) – Opcional. A classificação da matriz Choi do canal quântico.
  • seed (int or np.random.Generator) – Opcional. Defina uma semente ou gerador fixo para o RNG.

Retorna

um operador de canal quântico.

Tipo de retorno

Stinespring

Aumentos

QiskitError - se a classificação ou as dimensões forem inválidas.

random_cnotdihedral

qiskit.quantum_info.random_cnotdihedral(num_qubits, seed=None)

GitHub

Retorna um elemento CNOTDihedral aleatório.

Parâmetros

  • num_qubits (int) – o número de qubits para o objeto CNOTDihedral.
  • seed (int or RandomState) – Opcional. Defina uma semente ou gerador fixo para o RNG.

Retorna

um elemento CNOTDihedral aleatório.

Tipo de retorno

CNOTDihedral

random_pauli_list

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

GitHub

Retorna um PauliList aleatório.

Parâmetros

  • num_qubits (int) – o número de qubits.
  • size (int) – Opcional. O comprimento da lista Pauli (Padrão: 1).
  • seed (int or np.random.Generator) – Opcional. Defina uma semente ou gerador fixo para o RNG.
  • phase (bool) – Se True, as fases de Pauli são randomizadas; caso contrário, as fases são fixadas em 0. [Padrão: True]

Retorna

um PauliList aleatório.

Tipo de retorno

PauliList


Análise

hellinger_distance

qiskit.quantum_info.hellinger_distance(dist_p, dist_q)

GitHub

Calcula a distância de Hellinger entre duas distribuições de contagem.

Parâmetros

  • dist_p (dict) – Primeiro ditado de contagens.
  • dist_q (dict) – Segundo ditado de contagens.

Retorna

Distância

Tipo de retorno

Valor flutuante

Referências

Distância Hellinger @ wikipedia

hellinger_fidelity

qiskit.quantum_info.hellinger_fidelity(dist_p, dist_q)

GitHub

Calcula a fidelidade de Hellinger entre duas distribuições de contagens.

A fidelidade é definida como (1H2)2\left(1-H^{2}\right)^{2}, em que H é a distância de Hellinger. Esse valor é limitado no intervalo [0, 1].

Isso é equivalente à fidelidade clássica padrão F(Q,P)=(ipiqi)2F(Q,P)=\left(\sum_{i}\sqrt{p_{i}q_{i}}\right)^{2} que, por sua vez, é igual à fidelidade do estado quântico para matrizes de densidade diagonal.

Parâmetros

  • dist_p (dict) – Primeiro ditado de contagens.
  • dist_q (dict) – Segundo ditado de contagens.

Retorna

Fidelidade

Tipo de retorno

Valor flutuante

Exemplo

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

Referências

Fidelidade quântica @ wikipedia Distância de Hellinger @ wikipedia

Z2Symmetries(simetrias, sq_paulis, sq_list)O conversor de simetria $Z_2$ identifica as simetrias do hamiltoniano do problema e as utiliza para fornecer uma representação cônica - mais eficiente - dos operadores como Paulis para esse problema.
Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.