RGQFTMultiplicador
class qiskit.circuit.library.RGQFTMultiplier(num_state_qubits, num_result_qubits=None, name='RGQFTMultiplier')
Bases: Multiplier
Um circuito de multiplicação QFT para armazenar o produto de dois registros de entrada fora do lugar.
A multiplicação neste circuito é implementada utilizando o procedimento da Fig. 3 em [1], onde as rotações da soma ponderada são implementadas conforme mostrado na Fig. 5 em [1]. A QFT é aplicada ao registro de saída e é seguida por rotações controladas pelos registros de entrada. As rotações transformam o estado no produto de dois registros de entrada na base QFT, o qual é revertido da base QFT por meio da QFT inversa.
A título de exemplo, um circuito que realiza uma multiplicação modular na Teoria Quântica dos Campos (QFT) em dois registros de entrada de 2 qubits, com um registro de saída de 2 qubits, é o seguinte:
a_0: ────────────────────────────────────────■───────■──────■──────■────────────────
│ │ │ │
a_1: ─────────■───────■───────■───────■──────┼───────┼──────┼──────┼────────────────
│ │ │ │ │ │ │ │
b_0: ─────────┼───────┼───────■───────■──────┼───────┼──────■──────■────────────────
│ │ │ │ │ │ │ │
b_1: ─────────■───────■───────┼───────┼──────■───────■──────┼──────┼────────────────
┌──────┐ │P(4π) │ │P(2π) │ │P(2π) │ │P(π) │ ┌───────┐
out_0: ┤0 ├─■───────┼───────■───────┼──────■───────┼──────■──────┼───────┤0 ├
│ qft │ │P(2π) │P(π) │P(π) │P(π/2) │ iqft │
out_1: ┤1 ├─────────■───────────────■──────────────■─────────────■───────┤1 ├
└──────┘ └───────┘O MultiplierGate objeto representa uma multiplicação, assim como esta classe de circuito, mas permite que o compilador selecione a decomposição ideal com base no contexto. As implementações específicas podem ser definidas por meio do HLSConfig, por exemplo, este circuito pode ser selecionado por meio do Multiplier=["qft_r17"].
Referências
[1] Ruiz-Perez et al, Aritmética quântica com a transformada quântica de Fourier, 2017. arXiv:1411.5949
Parâmetros
- num_state_qubits (int) – O número de qubits em um dos registros de entrada para o estado ou . Os dois registros de entrada devem ter o mesmo número de qubits.
- num_result_qubits (int | None) – O número de qubits de resultado para limitar a saída. Se o número de qubits de resultado for , o módulo de multiplicação será executado para limitar a saída ao número especificado de qubits. O valor padrão é
2 * num_state_qubitspara representar qualquer resultado possível da multiplicação das duas entradas. - name (str) – O nome do objeto de circuito.
Atributos
name
Tipo: str
Um nome legível por humanos para o circuito.
Exemplo
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)my_circuit