Utilidades del operador
qiskit_addon_obp.utils.operations
Funciones de utilidad para la retropropagación de operadores.
apply_op_to
apply_op_to(op1, op1_qargs, op2, op2_qargs, *, apply_as_transform=False)
Aplique el operador op2 al operador op1.
Estos operadores no tienen por qué actuar sobre el mismo número de qubits, ya que se supone que actúan sobre un sistema mayor. La posición en el sistema de cada operador viene definida por el correspondiente qargs. El operador de salida se definirá en union(op1_qargs, op2_qargs).
Por defecto, esta función aplica op1 a op2 de la siguiente manera:
op2 @ op1
Configurando apply_as_transform=True, esta función aplicará op1 a op2 de la siguiente manera:
op2.adjoint() @ op1 @ op2
Parámetros
- op1 (SparsePauliOp) – El operador sobre el que se aplicará
op2. - op1_qargs (list[int]) – Los índices de qubit para
op1. - op2 (SparsePauliOp) – El operador para aplicar a
op1. - op2_qargs (list[int]) – Los índices de qubit para
op2. - apply_as_transform (bool) – Si se aplica
op2aop1como transformación.
Devuelve
La tupla (op, qargs) donde op es la entrada op1 con op2 aplicado a la izquierda y qargs es una lista de índices de qubits para el nuevo operador op. Los ID de qubit en la salida op corresponden al ID de qubit global en el mismo índice en qargs.
Por ejemplo, si la salida op es un SparsePauliOp("YX") y qargs es [3, 4], el término X en el qubit 0 del operador corresponde al qubit global ID 3.
Eleva
ValueError - El número de qargs de operador únicos debe coincidir con el número de qubits del operador correspondiente.
Tipo de retorno
tupla [*SparsePauliOp*, lista[ int ]]
apply_reset_to
apply_reset_to(op, qubit_id, inplace=False)
Aplicar una operación de reset a un operador de Pauli.
Esta función aplica una operación de reinicio a op de la siguiente manera:
<0|op|0>
Los términos que contengan términos Pauli X o Y en qubit-qubit_id tendrán su peso reducido a 0.0. Los términos que contengan Z de Pauli en qubit_id tendrán esa Z de Pauli sustituida por una identidad.
Parámetros
- op (SparsePauliOp) – El operador al que se aplicará el reinicio.
- qubit_id (int) – El índice del qubit sobre el que aplicar el reset.
- inplace (bool) – Si se modifica el operador in situ.
Devuelve
El operador transformado
Tipo de retorno
to_global_op
to_global_op(op, qargs, n_qubits)
Convierte un operador local en un operador global insertando identidades en los qubits que no se utilizan.
Parámetros
- op (SparsePauliOp) – Operador local en expansión.
- qargs (list[int]) – Índices Qubit para operador local.
- n_qubits (int) – Número de qubits en el sistema global.
Devuelve
Un operador en n_qubits qubits
Eleva
ValueError - Qubit ID fuera de rango
Tipo de retorno
reduce_op
reduce_op(global_op)
Crear una representación magra de un operador global de Pauli.
Esta función devuelve una representación magra del operador de entrada tal que todos los qubits asociados únicamente con términos Pauli-I han sido eliminados. También se devuelve una lista de índices que indican sobre qué qubits actúa el operador lean.
Por ejemplo:
>>> global_op = SparsePauliOp(["IXI", "IIZ"])
>>> reduced_op, qargs = reduce_op(global_op)
>>> reduced_op
SparsePauliOp(['XI', 'IZ'],
coeffs=[1.+0.j, 1.+0.j])
>>> qargs
[0, 1]Parámetros
global_op (SparsePauliOp) – El operador global para el que generar una representación magra
Devuelve
- Una representación magra del operador de entrada con qubits asociados únicamente con términos de identidad eliminados.
- Una lista de índices que especifica los qubits sobre los que actúa el operador lean.
Eleva
ValueError - El operador de entrada no puede ser el operador de identidad.
Tipo de retorno
tupla [*SparsePauliOp*, lista[ int ]]