Skip to main content
IBM Quantum Platform

DensityMatrix

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

GitHub

Bases: QuantumState, TolerancesMixin

DensityMatrix clase

Inicializar un objeto matriz de densidad.

Parámetros

  • data (np.ndarray | list |QuantumCircuit |circuit.instruction.Instruction | QuantumState) – Un vector de estado, una instrucción cuántica o un objeto con un método to_operator o to_matrix a partir del cual se puede construir la matriz de densidad. Si es un vector, la matriz de densidad se construye como el proyector de ese vector. Si se trata de una instrucción cuántica, la matriz de densidad se construye suponiendo que todos los qubits se inicializan en el 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 None - la dimensión principal de la matriz de entrada especifica la dimensión total de la matriz de densidad. 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.

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 de la matriz de densidad.

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 representación gráfica de la matriz de densidad.

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 de la matriz de densidad mediante plot_state_qsphere().

hinton : Matplotlib figura, representación de la matriz de densidad mediante plot_state_hinton().

bloch : Matplotlib figura, representación de la matriz de densidad mediante plot_bloch_multivector().

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 o bloch. 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: Representación de la matriz de densidad.

Eleva

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

evolve

evolve(other, qargs=None)

GitHub

Evolucionar un estado cuántico mediante un operador.

Parámetros

Devuelve

La matriz de densidad de salida.

Eleva

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

Tipo de retorno

DensityMatrix

expand

expand(other)

GitHub

Devuelve el producto tensorial estado otro ⊗ self.

Parámetros

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

Devuelve

el producto tensorial estado otro ⊗ self.

Tipo de retorno

DensityMatrix

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.
  • qargs (None or list) – subsistemas en los que aplicar el operador.

Devuelve

el valor esperado.

Tipo de retorno

complejo

from_instruction

classmethod from_instruction(instruction)

GitHub

Devuelve la matriz de densidad 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 (circuit.instruction.Instruction |QuantumCircuit) – instrucción o circuito

Devuelve

La matriz de densidad final.

Eleva

QiskitError - si la instrucción contiene instrucciones no válidas para la simulación de matrices de densidad.

Tipo de retorno

DensityMatrix

from_int

static from_int(i, dims)

GitHub

Devuelve una matriz de densidad 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|i\rangle\!\langle i|.

Tipo de retorno

DensityMatrix

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"(1000)\begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix}
"1"(0001)\begin{pmatrix} 0 & 0 \\ 0 & 1 \end{pmatrix}
"+"12(1111)\frac{1}{2}\begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix}
"-"12(1111)\frac{1}{2}\begin{pmatrix} 1 & -1 \\ -1 & 1 \end{pmatrix}
"r"12(1ii1)\frac{1}{2}\begin{pmatrix} 1 & -i \\ i & 1 \end{pmatrix}
"l"12(1ii1)\frac{1}{2}\begin{pmatrix} 1 & i \\ -i & 1 \end{pmatrix}

Parámetros

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

Devuelve

La matriz de densidad del estado base N-qubit.

Tipo de retorno

DensityMatrix

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.

is_valid

is_valid(atol=None, rtol=None)

GitHub

Devuelve True si la traza es 1 y semidefinida positiva.

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

partial_transpose

partial_transpose(qargs)

GitHub

Devuelve la matriz de densidad parcialmente transpuesta.

Parámetros

qargs (list) – Los subsistemas que deben transponerse.

Devuelve

La matriz de densidad parcialmente transpuesta.

Tipo de retorno

DensityMatrix

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 ρ=ρ1ρ0\rho=\rho_1\otimes\rho_0 con ρ1=+ ⁣+\rho_1=|+\rangle\!\langle+|, ρ0=0 ⁣0\rho_0=|0\rangle\!\langle0|.

from qiskit.quantum_info import DensityMatrix

rho = DensityMatrix.from_label('+0')

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

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

# Probabilities for measuring only qubit-1
probs_qubit_1 = rho.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 DensityMatrix

rho = DensityMatrix.from_label('+0')

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

# Probabilities for measuring both qubits
# but swapping qubits 0 and 1 in output
probs_swapped = rho.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 números 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.

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

DensityMatrix

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 llevará a cabo la evolución a partir del reinicio SuperOp de dichos subsistemas.

reverse_qargs

reverse_qargs()

GitHub

Devuelve un DensityMatrix 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 una matriz de densidad ρ=ρn1...ρ0\rho = \rho_{n-1} \otimes ... \otimes \rho_0 el estado devuelto será ρ0...ρn1\rho_0 \otimes ... \otimes \rho_{n-1}.

Devuelve

el estado con el orden de los subsistemas invertido.

Tipo de retorno

DensityMatrix

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

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

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 (DensityMatrix) – un objeto de estado cuántico.

Devuelve

el operador producto tensorial yo ⊗ otro.

Tipo de retorno

DensityMatrix

Eleva

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

to_dict

to_dict(decimals=None)

GitHub

Convierte la matriz de densidad 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 números 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 de DensityMatrix.

Tipo de retorno

dict

Ejemplos

La forma ket de una matriz de densidad de 2 qubits rho= ⁣0 ⁣0rho = |-\rangle\!\langle -|\otimes |0\rangle\!\langle 0|

from qiskit.quantum_info import DensityMatrix

rho = DensityMatrix.from_label('-0')
print(rho.to_dict())
{
    '00|00': (0.4999999999999999+0j),
    '10|00': (-0.4999999999999999-0j),
    '00|10': (-0.4999999999999999+0j),
    '10|10': (0.4999999999999999+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 DensityMatrix

mat = np.zeros((9, 9))
mat[0, 0] = 0.25
mat[3, 3] = 0.25
mat[6, 6] = 0.25
mat[-1, -1] = 0.25
rho = DensityMatrix(mat, dims=(3, 3))
print(rho.to_dict())
{'00|00': (0.25+0j), '10|10': (0.25+0j), '20|20': (0.25+0j), '22|22': (0.25+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 DensityMatrix

mat = np.zeros((2 * 10, 2 * 10))
mat[0, 0] = 0.5
mat[-1, -1] = 0.5
rho = DensityMatrix(mat, dims=(2, 10))
print(rho.to_dict())
{'00|00': (0.5+0j), '91|91': (0.5+0j)}

to_operator

to_operator()

GitHub

Convertir en operador

Tipo de retorno

Operador

to_statevector

to_statevector(atol=None, rtol=None)

GitHub

Devuelve un vector de estado de una matriz de densidad pura.

Parámetros

  • atol (float) – Tolerancia absoluta para comprobar la validez de la operación.
  • rtol (float) – Tolerancia relativa para comprobar la validez de la operación.

Devuelve

El vector de estado correspondiente a la matriz de densidad pura.

Corresponde al vector propio del único valor propio distinto de cero.

Tipo de retorno

Vector de estado

Eleva

QiskitError - si el estado no es puro.

trace

trace()

GitHub

Devuelve la traza de la matriz de densidad.

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