StabilizerState
class qiskit.quantum_info.StabilizerState(data, validate=True)
Bases: QuantumState
StabilizerState clase. Simulador de estabilizador utilizando la convención de la referencia [1]. Basado en la clase interna Clifford.
from qiskit import QuantumCircuit
from qiskit.quantum_info import StabilizerState, Pauli
# Bell state generation circuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
stab = StabilizerState(qc)
# Print the StabilizerState
print(stab)
# Calculate the StabilizerState measurement probabilities dictionary
print (stab.probabilities_dict())
# Calculate expectation value of the StabilizerState
print (stab.expectation_value(Pauli('ZZ')))StabilizerState(StabilizerTable: ['+XX', '+ZZ'])
{'00': 0.5, '11': 0.5}
1Dada una lista de estabilizadores, qiskit.quantum_info.StabilizerState.from_stabilizer_list() devuelve un estado estabilizado por la lista
from qiskit.quantum_info import StabilizerState
stabilizer_list = ["ZXX", "-XYX", "+ZYY"]
stab = StabilizerState.from_stabilizer_list(stabilizer_list)Referencias
- S. Aaronson, D. Gottesman, Improved Simulation of Stabilizer Circuits, Phys. Rev. A 70, 052328 (2004). arXiv:quant-ph/0406196
Inicializa un objeto StabilizerState.
Parámetros
- data (StabilizerState |Clifford |Pauli |QuantumCircuit |circuit.instruction.Instruction) – Datos a partir de los cuales se puede construir el estado del estabilizador.
- validate (bool) – validar que los datos del estado del estabilizador son un Clifford válido.
Atributos
clifford
Devuelve los datos de StabilizerState Clifford
dim
Devuelve la dimensión total del estado.
num_qubits
Devuelve el número de qubits si es un estado N-qubit o Ninguno en caso contrario.
Métodos
conjugate
copy
dims
equiv
equiv(other)
Devuelve True si los dos conjuntos generadores generan el mismo grupo estabilizador.
Parámetros
other (StabilizerState) – otro StabilizerState.
Devuelve
Verdadero si otro tiene un grupo generador que genera el mismo StabilizerState.
Tipo de retorno
evolve
evolve(other, qargs=None)
Evolucionar un estado estabilizador mediante un operador Clifford.
Parámetros
- other (Clifford orQuantumCircuit orqiskit.circuit.Instruction) – El operador Clifford para evolucionar.
- qargs (list) – una lista de posiciones del subsistema estabilizador sobre las que aplicar el operador.
Devuelve
el estado del estabilizador de salida.
Tipo de retorno
Eleva
- QiskitError - si el otro no es un StabilizerState.
- QiskitError - si la dimensión del operador no coincide con las dimensiones del subsistema StabilizerState especificadas.
expand
expand(other)
Devuelve el estado estabilizador del producto tensorial otro ⊗ self.
Parámetros
other (StabilizerState) – un objeto de estado estabilizador.
Devuelve
el operador de producto tensorial otro ⊗ self.
Tipo de retorno
Eleva
QiskitError - si el otro no es un StabilizerState.
expectation_value
expectation_value(oper, qargs=None)
Calcular el valor de expectativa de un operador Pauli o SparsePauliOp.
Parámetros
- oper (Pauli |SparsePauliOp) – Un operador Pauli o SparsePauliOp para evaluar el valor de expectativa.
- qargs (None | list) – Subsistemas en los que se aplicará el operador.
Devuelve
El valor esperado.
Eleva
QiskitError - si oper no es un operador Pauli o SparsePauliOp.
Tipo de retorno
from_stabilizer_list
classmethod from_stabilizer_list(stabilizers, allow_redundant=False, allow_underconstrained=False)
Crea un estado estabilizador a partir de la colección de estabilizadores.
Parámetros
- stabilizers (Collection[str]) – lista de cadenas estabilizadoras
- allow_redundant (bool) – permitir estabilizadores redundantes (es decir, algunos estabilizadores pueden ser productos de otros)
- allow_underconstrained (bool) – permitir un conjunto de estabilizadores con restricciones insuficientes (es decir, los estabilizadores no especifican un estado único)
Devuelve
un estado estabilizado por estabilizadores.
Tipo de retorno
is_valid
measure
measure(qargs=None)
Medir los subsistemas y devolver el resultado y el estado posterior a la medición.
Tenga en cuenta que esta función utiliza el generador interno de números aleatorios QuantumStates para el muestreo del resultado de la medición. La semilla RNG puede establecerse utilizando el método seed() método.
Parámetros
qargs (list or None) – subsistemas para los que muestrear las mediciones; si es Ninguno, muestrea la medición de todos los subsistemas (Predeterminado: Ninguno).
Devuelve
el par (outcome, state) donde outcome es el
y state es el estado estabilizador post-medición colapsado para el resultado correspondiente.
Tipo de retorno
probabilities
probabilities(qargs=None, decimals=None)
Devuelve el vector de probabilidad de medición del subsistema.
Las probabilidades de medición son con respecto a la medición en la base de cálculo (diagonal).
Parámetros
- qargs (None or list) – subsistemas para los que devolver probabilidades, si es Ninguno devolverá para todos los subsistemas (Por defecto: Ninguno).
- decimals (None or int) – el número de decimales para redondear los valores. Si es Ninguno no se redondea (Por defecto: Ninguno).
Devuelve
La matriz vectorial Numpy de probabilidades.
Tipo de retorno
np.array
probabilities_dict
probabilities_dict(qargs=None, decimals=None)
Devuelve el diccionario de probabilidades de medición del subsistema.
Las probabilidades de medición son con respecto a la medición en la base de cálculo (diagonal).
Esta representación de diccionario utiliza una notación tipo Ket en la que las claves del diccionario son cadenas qudit para los vectores base del subsistema. Si algún subsistema tiene una dimensión superior a 10, se insertan delimitadores de coma entre los enteros para poder distinguir los subsistemas.
Parámetros
- qargs (None or list) – subsistemas para los que devolver probabilidades, si es Ninguno devolverá para todos los subsistemas (Por defecto: Ninguno).
- decimals (None or int) – el número de decimales para redondear los valores. Si es Ninguno no se redondea (Por defecto: Ninguno).
Devuelve
Las probabilidades de medición en forma dict (clave).
Tipo de retorno
probabilities_dict_from_bitstring
probabilities_dict_from_bitstring(outcome_bitstring, qargs=None, decimals=None)
Devuelve el diccionario de probabilidad de medición del subsistema utilizando una outcome_bitstring objetivo para realizar la medición. Esto calculará una probabilidad para un único valor outcome_bitstring objetivo, proporcionando un aumento de rendimiento sobre el cálculo de todos los resultados posibles.
Las probabilidades de medición son con respecto a la medición en la base de cálculo (diagonal).
Esta representación de diccionario utiliza una notación tipo Ket en la que las claves del diccionario son cadenas qudit para los vectores base del subsistema. Si algún subsistema tiene una dimensión superior a 10, se insertan delimitadores de coma entre los enteros para poder distinguir los subsistemas.
Parámetros
- outcome_bitstring (None or str) – cadena de bits del resultado deseado sobre la que realizar el cálculo de la medición; esto reducirá considerablemente el número de cálculos realizados (por defecto: Ninguno)
- qargs (None or list) – subsistemas para los que devolver probabilidades, si es Ninguno devolverá para todos los subsistemas (Por defecto: Ninguno).
- decimals (None or int) – el número de decimales con el que se redondean los valores. Si se establece en «None», no se realiza ningún redondeo (valor predeterminado: None)
Devuelve
Las probabilidades de medición en forma dict (ket).
Tipo de retorno
purity
purity()
Devuelve la pureza del estado cuántico, que es igual a 1, ya que siempre es un estado puro.
Devuelve
la pureza (debe ser igual a 1).
Tipo de retorno
Eleva
QiskitError - si la entrada no es StabilizerState.
reset
reset(qargs=None)
Restablece el estado o los subsistemas al estado 0.
Parámetros
qargs (list or None) – subsistemas a reiniciar, si es Ninguno todos los subsistemas se reiniciarán a su estado 0 (Por defecto: Ninguno).
Devuelve
el estado de reinicio.
Tipo de retorno
Información adicional:
Si se restablecen todos los subsistemas, esto devolverá el estado de tierra en todos los subsistemas. Si sólo se restablecen algunos subsistemas, esta función realizará una medición en esos subsistemas y evolucionará los subsistemas para que los estados colapsados posteriores a la medición giren al estado 0. La semilla RNG para este muestreo puede establecerse utilizando el método seed() método.
sample_counts
sample_counts(shots, qargs=None)
Muestrear un dictado de resultados de medición de qubits en la base de cálculo.
Parámetros
- shots (int) – número de muestras a generar.
- qargs (None or list) – subsistemas para los que muestrear las mediciones; si es Ninguno, muestrea la medición de todos los subsistemas (Predeterminado: Ninguno).
Devuelve
diccionario de recuentos muestreados.
Tipo de retorno
Información adicional:
Esta función muestrea los resultados de la medición utilizando la medida
probabilities()para el estado actual y qargs. En realidad, no realiza la medición, por lo que el estado actual no se modifica.La semilla del generador de números aleatorios utilizada para el muestreo se puede establecer en un valor fijo mediante el método
seed()state.
sample_memory
sample_memory(shots, qargs=None)
Muestra una lista de resultados de medición de qubits en la base de cálculo.
Parámetros
- shots (int) – número de muestras a generar.
- qargs (None or list) – subsistemas para los que muestrear las mediciones; si es Ninguno, muestrea la medición de todos los subsistemas (Predeterminado: Ninguno).
Devuelve
lista de recuentos muestreados en el orden en que se obtuvieron.
Tipo de retorno
np.array
Información adicional:
Esta función aplica el método de medición
measure()método.La semilla del generador de números aleatorios utilizada para el muestreo se puede establecer en un valor fijo mediante el método
seed()state.
seed
tensor
tensor(other)
Devuelve el estado estabilizador del producto tensorial self ⊗ other.
Parámetros
other (StabilizerState) – un objeto de estado estabilizador.
Devuelve
el operador producto tensorial yo ⊗ otro.
Tipo de retorno
Eleva
QiskitError - si el otro no es un StabilizerState.
to_operator
trace
trace()
Devuelve la traza del estado estabilizador como una matriz de densidad, que es igual a 1, ya que siempre es un estado puro.
Devuelve
la traza (debe ser igual a 1).
Tipo de retorno
Eleva
QiskitError - si la entrada no es StabilizerState.