Skip to main content
IBM Quantum Platform

Vector de estado

class qiskit.quantum_info.Statevector(data, dims=None)

GitHub

Bases: QuantumState, TolerancesMixin

Clase Statevector

Inicializa un objeto vector de estado.

Parámetros

  • data (np.ndarray | list |Statevector |Operator |QuantumCircuit |circuit.instruction.Instruction) – Datos a partir de los cuales se puede construir el vector de estado. Puede ser un vector complejo, otro vector de estado, un Operator con una sola columna o un QuantumCircuit o Instruction. Si los datos son un circuito o una instrucción, el vector de estado se construye asumiendo que todos los qubits se inicializan al estado cero.
  • dims (int |tuple |list | None) – Dimensión del subsistema del estado (Ver información adicional).

Eleva

QiskitError - si los datos de entrada no son válidos.

Información adicional:

El kwarg de dims puede ser Ninguno, un entero o un iterable de enteros.

  • Iterable - las dimensiones del subsistema son los valores de la lista con el número total de subsistemas dado por la longitud de la lista.
  • Int o bien None : la longitud del vector de entrada determina la dimensión total del estado. Si se trata de una potencia de dos, el estado se inicializará como un estado de N qubits. Si no es una potencia de dos, el estado tendrá un único subsistema de dimensión d.

Atributos

atol

Valor predeterminado: 1e-08

data

Devuelve los datos.

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.

rtol

Valor predeterminado: 1e-05

settings

Devuelve los ajustes.


Métodos

conjugate

conjugate()

GitHub

Devuelve el conjugado del operador.

Tipo de retorno

Vector de estado

copy

copy()

GitHub

Haga una copia del operador actual.

dims

dims(qargs=None)

GitHub

Devuelve tupla de dimensión de entrada para subsistemas especificados.

draw

draw(output=None, **drawer_args)

GitHub

Devuelve una visualización del vector Estado.

repr: ASCII TextMatrix del estado __repr__.

texto : ASCII TextMatrix que se puede imprimir en la consola.

latex : Un objeto IPython Latex para mostrar en Jupyter Notebooks.

latex_source : Fuente ASCII sin compilar para generar matrices utilizando LaTeX.

qsphere : Matplotlib figura, representación del vector de estado mediante plot_state_qsphere().

hinton : Matplotlib figura, representación del vector de estado mediante plot_state_hinton().

bloch : Matplotlib figura, representación del vector de estado utilizando plot_bloch_multivector().

ciudad : Matplotlib figura, representación del vector estado mediante plot_state_city().

paulivec : Matplotlib figura, representación del vector de estado mediante plot_state_paulivec().

Parámetros

  • output (str) – Seleccione el método de salida que se utilizará para dibujar el estado. Las opciones válidas son repr, text, latex, latex_source, qsphere, hinton, bloch, city o paulivec. Por defecto es repr. El valor predeterminado puede modificarse añadiendo la línea state_drawer = <default> a ~/.qiskit/settings.conf en [default].
  • drawer_args - Argumentos a pasar directamente a la función de dibujo o constructor relevante ( TextMatrix( ), array_to_latex(), plot_state_qsphere(), plot_state_hinton() o plot_bloch_multivector()). Consulte la documentación de la función correspondiente en qiskit.visualization.

Devuelve

matplotlib.Figure o str o TextMatrix o IPython.display.Latex: Dibujo del vector de estado.

Eleva

ValueError - cuando se selecciona un método de salida no válido.

Ejemplos

Parcela uno de los estados de Bell

from numpy import sqrt
from qiskit.quantum_info import Statevector
sv=Statevector([1/sqrt(2), 0, 0, -1/sqrt(2)])
sv.draw(output='hinton')
Salida del código anterior.

equiv

equiv(other, rtol=None, atol=None)

GitHub

Devuelve True si otro es equivalente como vector de estado hasta la fase global.

Nota

Si other no es un vector de estado, pero puede utilizarse para inicializar un objeto vector de estado, se comprobará que Statevector(other) es equivalente al vector de estado actual hasta la fase global.

Parámetros

  • other (Statevector) – un objeto a partir del cual se puede construir un Statevector .
  • rtol (float) – valor relativo de tolerancia para la comparación.
  • atol (float) – valor absoluto de tolerancia para la comparación.

Devuelve

Verdadero si los vectores de estado son equivalentes hasta la fase global.

Tipo de retorno

bool

evolve

evolve(other, qargs=None)

GitHub

Evolucionar un estado cuántico mediante el operador.

Parámetros

Devuelve

el estado cuántico de salida.

Tipo de retorno

Vector de estado

Eleva

QiskitError - si la dimensión del operador no coincide con las dimensiones del subsistema Statevector especificadas.

expand

expand(other)

GitHub

Devuelve el producto tensorial estado otro ⊗ self.

Parámetros

other (Statevector) – un objeto de estado cuántico.

Devuelve

el producto tensorial estado otro ⊗ self.

Tipo de retorno

Vector de estado

Eleva

QiskitError - si el otro no es un estado cuántico.

expectation_value

expectation_value(oper, qargs=None)

GitHub

Calcular el valor esperado de un operador.

Parámetros

  • oper (Operator) – un operador para evaluar expval de.
  • qargs (None or list) – subsistemas en los que aplicar el operador.

Devuelve

el valor esperado.

Tipo de retorno

complejo

from_circuit

classmethod from_circuit(circuit, ignore_set_layout=False)

GitHub

Crear un vector de estado a partir de un circuito cuántico.

Parámetros

  • circuit (QuantumCircuit) – Un circuito cuántico
  • ignore_set_layout (bool) – Cuando se establece en True, si la entrada circuit tiene un diseño establecido, se ignorará. El valor predeterminado es False.

Devuelve

El vector de estado obtenido al aplicar el circuito al estado de entrada totalmente cero.

Tipo de retorno

Vector de estado

Ejemplo

Crear un vector de estado a partir de un circuito transpuesto:

from qiskit import QuantumCircuit, transpile
from qiskit.quantum_info import Statevector
from qiskit.providers.basic_provider import BasicSimulator

qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.swap(1, 2)

backend = BasicSimulator()
transpiled1 = transpile(qc, backend, optimization_level=0)
transpiled2 = transpile(qc, backend, optimization_level=2)

# Get statevectors accounting for layout changes
sv1 = Statevector.from_circuit(transpiled1)
sv2 = Statevector.from_circuit(transpiled2)

# These will be equivalent up to global phase
print(sv1.equiv(sv2))  # True

from_instruction

classmethod from_instruction(instruction)

GitHub

Devuelve el vector de estado de salida de una instrucción.

El vector de estado se inicializa en el estado 0,,0|{0,\ldots,0}\rangle del mismo número de qubits que la instrucción o circuito de entrada, evolucionado por la instrucción de entrada, y se devuelve el vector de estado de salida.

Parámetros

instruction (qiskit.circuit.Instruction orQuantumCircuit) – instrucción o circuito

Devuelve

El vector de estado final.

Tipo de retorno

Vector de estado

Eleva

QiskitError - si la instrucción contiene instrucciones no válidas para la simulación del vector de estado.

from_int

static from_int(i, dims)

GitHub

Devuelve un vector de estado de base computacional.

Parámetros

  • i (int) – el elemento de estado base.
  • dims (int ortuple orlist) – Las dimensiones del subsistema del vector de estado (Ver información adicional).

Devuelve

El estado base computacional i|i\rangle.

Tipo de retorno

Vector de estado

Información adicional:

El kwarg de dims puede ser un entero o un iterable de enteros.

  • Iterable - las dimensiones del subsistema son los valores de la lista con el número total de subsistemas dado por la longitud de la lista.
  • Int - el número entero especifica la dimensión total del estado. Si es una potencia de dos, el estado se inicializará como un estado N-qubit. Si no es una potencia de dos, el estado tendrá un único subsistema d-dimensional.

from_label

classmethod from_label(label)

GitHub

Devuelve un producto tensorial de estados propios Pauli X,Y,Z.

Etiqueta
Vector de estado
"0"[1,0][1, 0]
"1"[0,1][0, 1]
"+"[1/2,1/2][1 / \sqrt{2}, 1 / \sqrt{2}]
"-"[1/2,1/2][1 / \sqrt{2}, -1 / \sqrt{2}]
"r"[1/2,i/2][1 / \sqrt{2}, i / \sqrt{2}]
"l"[1/2,i/2][1 / \sqrt{2}, -i / \sqrt{2}]

Parámetros

label (string) – una etiqueta de cadena KET de un estado propio (véase la tabla para conocer los valores permitidos).

Devuelve

El vector de estado del estado de base de N qubits.

Tipo de retorno

Vector de estado

Eleva

QiskitError - si la etiqueta contiene caracteres no válidos, o la longitud de la etiqueta es mayor que un num_qubits especificado explícitamente.

inner

inner(other)

GitHub

Devuelve el producto interior de uno mismo y otro como selfother\langle self| other \rangle.

Parámetros

other (Statevector) – un objeto de estado cuántico.

Devuelve

el producto interior del yo y el otro, selfother\langle self| other \rangle.

Tipo de retorno

np.complex128

Eleva

QiskitError - si el otro no es un estado cuántico o tiene una dimensión diferente.

is_valid

is_valid(atol=None, rtol=None)

GitHub

Devuelve True si un vector de estado tiene norma 1.

Parámetros

Tipo de retorno

bool

measure

measure(qargs=None)

GitHub

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 post-medición colapsado para el resultado correspondiente.

Tipo de retorno

tupla

probabilities

probabilities(qargs=None, decimals=None)

GitHub

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

Ejemplos

Consideremos un estado producto de 2 qubits ψ=+0|\psi\rangle=|+\rangle\otimes|0\rangle.

from qiskit.quantum_info import Statevector

psi = Statevector.from_label('+0')

# Probabilities for measuring both qubits
probs = psi.probabilities()
print('probs: {}'.format(probs))

# Probabilities for measuring only qubit-0
probs_qubit_0 = psi.probabilities([0])
print('Qubit-0 probs: {}'.format(probs_qubit_0))

# Probabilities for measuring only qubit-1
probs_qubit_1 = psi.probabilities([1])
print('Qubit-1 probs: {}'.format(probs_qubit_1))
probs: [0.5 0.  0.5 0. ]
Qubit-0 probs: [1. 0.]
Qubit-1 probs: [0.5 0.5]

También podemos permutar el orden de los qubits en la lista qargs para cambiar la posición del qubit en la salida de probabilidades

from qiskit.quantum_info import Statevector

psi = Statevector.from_label('+0')

# Probabilities for measuring both qubits
probs = psi.probabilities([0, 1])
print('probs: {}'.format(probs))

# Probabilities for measuring both qubits
# but swapping qubits 0 and 1 in output
probs_swapped = psi.probabilities([1, 0])
print('Swapped probs: {}'.format(probs_swapped))
probs: [0.5 0.  0.5 0. ]
Swapped probs: [0.5 0.5 0.  0. ]

probabilities_dict

probabilities_dict(qargs=None, decimals=None)

GitHub

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

Tipo de retorno

dict

purity

purity()

GitHub

Devuelve la pureza del estado cuántico.

Tipo de retorno

float64

reset

reset(qargs=None)

GitHub

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

Vector de estado

Información adicional:

Si se reinician todos los subsistemas, esto restablecerá el estado inicial en todos ellos. Si solo se reinician algunos subsistemas, esta función realizará una medición en dichos subsistemas y hará que estos evolucionen de tal forma que los estados colapsados tras la medición se roten hasta el estado 0. La semilla del generador de números aleatorios (RNG) para este muestreo se puede configurar mediante el seed() método.

reverse_qargs

reverse_qargs()

GitHub

Devuelve un vector de estados con el orden de los subsistemas invertido.

Para un estado de producto tensorial, esto equivale a invertir el orden de los subsistemas del producto tensorial. Para un vector de estado ψ=ψn1...ψ0|\psi \rangle = |\psi_{n-1} \rangle \otimes ... \otimes |\psi_0 \rangle el vector de estado devuelto será ψ0...ψn1|\psi_{0} \rangle \otimes ... \otimes |\psi_{n-1} \rangle.

Devuelve

el vector de estado con el orden de los subsistemas invertido.

Tipo de retorno

Vector de estado

sample_counts

sample_counts(shots, qargs=None)

GitHub

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

Cuenta

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

GitHub

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 muestrea los resultados de la medición utilizando la medida probabilities() para el estado actual y qargs. En realidad, no ejecuta 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.

seed

seed(value=None)

GitHub

Establece la semilla para el estado cuántico RNG.

tensor

tensor(other)

GitHub

Devuelve el producto tensorial estado self ⊗ other.

Parámetros

other (Statevector) – un objeto de estado cuántico.

Devuelve

el operador producto tensorial yo ⊗ otro.

Tipo de retorno

Vector de estado

Eleva

QiskitError - si el otro no es un estado cuántico.

to_dict

to_dict(decimals=None)

GitHub

Convierte el vector de estado en forma de diccionario.

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

decimals (None or int) – el número de decimales para redondear los valores. Si es Ninguno no se redondea (Por defecto: Ninguno).

Devuelve

la forma de diccionario del vector Estado.

Tipo de retorno

dict

Ejemplo

La forma ket de un vector de estado de 2 qubits ψ=0|\psi\rangle = |-\rangle\otimes |0\rangle

from qiskit.quantum_info import Statevector

psi = Statevector.from_label('-0')
print(psi.to_dict())
{'00': (0.7071067811865475+0j), '10': (-0.7071067811865475+0j)}

Para los subsistemas no qubits, el rango de enteros puede ir de 0 a 9. Por ejemplo, en un sistema qutrit

import numpy as np
from qiskit.quantum_info import Statevector

vec = np.zeros(9)
vec[0] = 1 / np.sqrt(2)
vec[-1] = 1 / np.sqrt(2)
psi = Statevector(vec, dims=(3, 3))
print(psi.to_dict())
{'00': (0.7071067811865475+0j), '22': (0.7071067811865475+0j)}

Para grandes dimensiones de subsistema se requieren delimitadores. El siguiente ejemplo corresponde a un sistema de 20 dimensiones formado por un qubit y un qudit de 10 dimensiones.

import numpy as np
from qiskit.quantum_info import Statevector

vec = np.zeros(2 * 10)
vec[0] = 1 / np.sqrt(2)
vec[-1] = 1 / np.sqrt(2)
psi = Statevector(vec, dims=(2, 10))
print(psi.to_dict())
{'00': (0.7071067811865475+0j), '91': (0.7071067811865475+0j)}

to_operator

to_operator()

GitHub

Convertir el estado a un operador de proyector rank-1

Tipo de retorno

Operador

trace

trace()

GitHub

Devuelve la traza del estado cuántico como una matriz de densidad.

Tipo de retorno

float64

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.