SuperOp
class qiskit.quantum_info.SuperOp(data, input_dims=None, output_dims=None)
Bases: QuantumChannel
Representación superoperadora de un canal cuántico.
La representación superoperadora de un canal cuántico es una matriz tal que la evolución de a DensityMatrix viene dada por
donde la notación de doble ceto denota un vector formado apilando las columnas de la matriz (vectorización de columnas).
Para más información, véase la referencia [1].
Referencias
- C.J. Madera, J.D. Biamonte, D.G. Cory, Tensor networks and graphical calculus for open quantum systems, Quant. Inf. Ventaja 15, 0579-0811 (2015). arXiv:1111.6950 [quant-ph]
Inicializar un operador Superoperador de canal cuántico.
Parámetros
- data (QuantumCircuit |circuit.instruction.Instruction | BaseOperator | np.ndarray) – datos para inicializar el superoperador.
- input_dims (tuple | None) – las dimensiones del subsistema de entrada.
- output_dims (tuple | None) – las dimensiones del subsistema de salida.
Eleva
QiskitError - si los datos de entrada no pueden inicializarse como un superoperador.
Información adicional:
Si las dimensiones de entrada o salida son Ninguna, se determinarán automáticamente a partir de los datos de entrada. Si los datos de entrada son una matriz Numpy de forma ( 4**N, 4**N ) se utilizarán sistemas qubit. Si el operador de entrada no es un operador N-qubit, asignará un único subsistema con dimensión especificada por la forma de la entrada.
Atributos
atol
Valor predeterminado: 1e-08
data
Devuelve los datos.
dim
Devuelve una tupla (forma_entrada, forma_salida).
num_qubits
Devuelve el número de qubits si es un operador N-qubit o Ninguno en caso contrario.
qargs
Devuelve los qargs para el operador.
rtol
Valor predeterminado: 1e-05
settings
Devuelve los ajustes.
Métodos
adjoint
adjoint()
Devuelve el canal cuántico adjunto.
Esto equivale a la matriz conjugada hermitiana en la representación SuperOp es decir, para un canal , el SuperOp del canal adjunto es .
compose
compose(other, qargs=None, front=False)
Devuelve la composición del operador con otro SuperOp.
Parámetros
- other (SuperOp) – un objeto SuperOp.
- qargs (list or None) – una lista de posiciones de subsistemas a las que aplicar otras. Si se aplica «None» a todos los subsistemas (valor predeterminado: None).
- front (bool) – Si es True compone usando el operador derecho de multiplicación, en lugar del izquierdo [por defecto: Falso].
Devuelve
El compuesto SuperOp.
Tipo de retorno
Eleva
QiskitError - si otro no puede convertirse en operador o tiene dimensiones incompatibles para los subsistemas especificados.
La composición (&) se define por defecto como multiplicación matricial izquierda para los operadores matriciales, mientras que @ (equivalente a dot()) se define como multiplicación matricial derecha. Es decir, que A & B == A.compose(B) es equivalente a B @ A == B.dot(A) cuando A y B son del mismo tipo.
Si se configura el parámetro front=True kwarg, la multiplicación de matrices a la derecha es equivalente al método dot() método A.dot(B) == A.compose(B, front=True).
conjugate
conjugate()
Devuelve el canal cuántico conjugado.
Esto equivale a la matriz conjugada compleja en la representación SuperOp es decir, para un canal , el SuperOp del canal conjugado es .
copy
dot
dot(other, qargs=None)
Devuelve el operador multiplicado por la derecha self * other.
Parámetros
- other (Operator) – un objeto operador.
- qargs (list or None) – una lista de posiciones de subsistemas a las que aplicar otras. Si se aplica «None» a todos los subsistemas (valor predeterminado: None).
Devuelve
La matriz derecha multiplicada Operador.
Tipo de retorno
El producto punto puede obtenerse utilizando el operador binario @ . Por tanto, a.dot(b) es equivalente a a @ b.
expand
expand(other)
Devuelve el producto tensorial de orden inverso con otro SuperOp.
Parámetros
other (SuperOp) – un objeto SuperOp.
Devuelve
el producto tensorial , donde
es el actual SuperOp, y es el otro SuperOp.
Tipo de retorno
input_dims
is_cp
is_cp(atol=None, rtol=None)
Prueba si la matriz de Choi es completamente positiva (CP)
Parámetros
Tipo de retorno
is_cptp
is_cptp(atol=None, rtol=None)
Devuelve True si se preserva la traza completamente positiva (CPTP).
Parámetros
Tipo de retorno
is_tp
is_tp(atol=None, rtol=None)
Comprobar si un canal conserva la traza (TP)
Parámetros
Tipo de retorno
is_unitary
is_unitary(atol=None, rtol=None)
Devuelve True si QuantumChannel es un canal unitario.
Parámetros
Tipo de retorno
output_dims
power
power(n)
Devuelve la potencia del canal cuántico.
Parámetros
n (float) – el exponente de la potencia.
Devuelve
el canal .
Tipo de retorno
Eleva
QiskitError - si las dimensiones de entrada y salida de SuperOp no son iguales.
Para exponentes no positivos o no enteros, la potencia se define como la potencia matricial de la representación SuperOp es decir, para un canal , la SuperOp del canal potenciado es .
reshape
reshape(input_dims=None, output_dims=None, num_qubits=None)
Devuelve una copia superficial con las dimensiones de los subsistemas de entrada y salida remodeladas.
Parámetros
- input_dims (None or tuple) – nuevas dimensiones de entrada del subsistema. Si es Ninguno, se conservarán las atenuaciones de entrada originales [Por defecto: Ninguno].
- output_dims (None or tuple) – nuevas dimensiones de salida del subsistema. Si es Ninguno, se conservarán las atenuaciones de salida originales. [Predeterminado: Ninguno].
- num_qubits (None or int) – remodelar a un operador N-qubit [Por defecto: Ninguno].
Devuelve
devuelve self con las dimensiones de entrada y salida reformadas.
Tipo de retorno
BaseOperator
Eleva
QiskitError - si el tamaño combinado de todas las dimensiones de entrada del subsistema o las dimensiones de salida del subsistema no es constante.
tensor
tensor(other)
Devuelve el producto tensorial con otro SuperOp.
Parámetros
other (SuperOp) – un objeto SuperOp.
Devuelve
el producto tensorial , donde
es el actual SuperOp, y es el otro SuperOp.
Tipo de retorno
El producto tensorial puede obtenerse utilizando el operador binario ^ . Por tanto, a.tensor(b) es equivalente a a ^ b.
to_instruction
to_instruction()
Convertir a una instrucción de circuito Kraus o UnitaryGate.
Si el canal es unitario se añadirá como una puerta unitaria, en caso contrario se añadirá como una instrucción del simulador kraus.
Devuelve
Una instrucción kraus para el canal.
Tipo de retorno
Eleva
QiskitError - si los datos de entrada no son un canal cuántico CPTP de N qubits.
to_operator
to_operator()
Intenta convertir el canal a una representación unitaria Operador.
Tipo de retorno