Skip to main content
IBM Quantum Platform

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)

GitHub

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 op2 a op1 como 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)

GitHub

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

SparsePauliOp

to_global_op

to_global_op(op, qargs, n_qubits)

GitHub

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

SparsePauliOp

reduce_op

reduce_op(global_op)

GitHub

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

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