Skip to main content
IBM Quantum Platform

Utilitários do operador

qiskit_addon_obp.utils.operations

Funções de utilidade para retropropagação de operadores.

apply_op_to

apply_op_to(op1, op1_qargs, op2, op2_qargs, *, apply_as_transform=False)

GitHub

Aplique o operador op2 ao operador op1.

Esses operadores não precisam necessariamente atuar no mesmo número de qubits, pois se supõe que atuem em um sistema maior. A posição no sistema de cada operador é definida pelo site correspondente qargs. O operador de saída será definido em union(op1_qargs, op2_qargs).

Por padrão, essa função aplica op1 a op2 da seguinte forma:

op2 @ op1

Ao definir apply_as_transform=True, essa função aplicará op1 a op2 da seguinte forma:

op2.adjoint() @ op1 @ op2

Parâmetros

  • op1 (SparsePauliOp) – O operador no qual o op2 será aplicado.
  • op1_qargs (list[int]) – Os índices de qubit para op1.
  • op2 (SparsePauliOp) – O operador deve se inscrever em op1.
  • op2_qargs (list[int]) – Os índices de qubit para op2.
  • apply_as_transform (bool) – Se deve aplicar op2 a op1 como uma transformação.

Retorna

A tupla (op, qargs) onde op é a entrada op1 com op2 aplicado à esquerda e qargs é uma lista de índices de qubit para o novo operador op. Os IDs de qubit na saída op correspondem ao ID de qubit global no mesmo índice em qargs.

Por exemplo, se a saída op for um SparsePauliOp("YX") e qargs for [3, 4], o termo X no qubit 0 do operador corresponde ao ID global do qubit 3.

Aumentos

ValueError - O número de qargs de operador exclusivos deve corresponder ao número de qubits no operador correspondente.

Tipo de retorno

tupla [*SparsePauliOp*, lista[ int ]]

apply_reset_to

apply_reset_to(op, qubit_id, inplace=False)

GitHub

Aplique uma operação de redefinição a um operador Pauli.

Essa função aplica uma operação de reinicialização ao site op da seguinte forma:

<0|op|0>

Os termos que contêm termos Pauli X ou Y no qubit-qubit_id terão seu peso reduzido para 0.0. Os termos que contêm Pauli Z em qubit_id terão esse Pauli Z substituído por uma identidade.

Parâmetros

  • op (SparsePauliOp) – O operador ao qual a redefinição será aplicada.
  • qubit_id (int) – O índice do qubit no qual aplicar a redefinição.
  • inplace (bool) – Se o operador deve ser modificado no local.

Retorna

O operador transformado

Tipo de retorno

SparsePauliOp

to_global_op

to_global_op(op, qargs, n_qubits)

GitHub

Converta um operador local em um operador global inserindo identidades em qubits que não são usados.

Parâmetros

  • op (SparsePauliOp) – Operadora local em expansão.
  • qargs (list[int]) – Índices Qubit para o operador local.
  • n_qubits (int) – Número de qubits no sistema global.

Retorna

Um operador em n_qubits qubits

Aumentos

ValueError - Qubit ID fora da faixa

Tipo de retorno

SparsePauliOp

reduce_op

reduce_op(global_op)

GitHub

Crie uma representação enxuta de um operador Pauli global.

Essa função retorna uma representação enxuta do operador de entrada, de modo que todos os qubits associados somente aos termos Pauli-I tenham sido removidos. Uma lista de índices também é retornada, indicando em quais qubits o operador lean atua.

Por exemplo:

>>> 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) – O operador global para o qual será gerada uma representação enxuta

Retorna

  • Uma representação enxuta do operador de entrada com qubits associados somente aos termos de identidade removidos.
  • Uma lista de índices que especifica os qubits nos quais o operador lean atua.

Aumentos

ValueError - O operador de entrada pode não ser o operador de identidade.

Tipo de retorno

tupla [*SparsePauliOp*, lista[ int ]]

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.