DraperQFTAdder
class qiskit.circuit.library.DraperQFTAdder(num_state_qubits, kind='fixed', name='DraperQFTAdder')
Bases: Adder
Um circuito que usa QFT para realizar a adição no local em dois registros de qubit.
Para registros com qubits d , o somador QFT pode realizar a soma módulo (com kind="fixed") ou a soma comum adicionando um qubit de transporte (com kind="half").
A título de exemplo, um circuito somador QFT que realiza uma soma comum em dois registros de 2 qubits é o seguinte:
a_0: ─────────■──────■────────────────────────■────────────────
│ │ │
a_1: ─────────┼──────┼────────■──────■────────┼────────────────
┌──────┐ │P(π) │ │ │ │ ┌───────┐
b_0: ┤0 ├─■──────┼────────┼──────┼────────┼───────┤0 ├
│ │ │P(π/2) │P(π) │ │ │ │
b_1: ┤1 QFT ├────────■────────■──────┼────────┼───────┤1 IQFT ├
│ │ │P(π/2) │P(π/4) │ │
cout: ┤2 ├────────────────────────■────────■───────┤2 ├
└──────┘ └───────┘Os blocos QFT e QFT inversa nesta implementação omitem suas redes de troca, o que inverte a ordem dos qubits para uma implementação mais eficiente. Isso influencia sobre quais qubits as portas de fase controlada atuam. Este desenho ilustra como o somador é implementado no Qiskit; ele não deve ser usado como um guia para a montagem manual do circuito.
Os seguintes objetos de porta genérica realizam adições, como essa classe de circuito, mas permitem que o compilador selecione a decomposição ideal com base no contexto. Implementações específicas podem ser definidas por meio do HLSConfigpor exemplo, esse circuito pode ser escolhido por meio de Adder=["qft_d00"].
ModularAdderGate: Um somador inplace genérico, módulo . Este
é funcionalmente equivalente a kind="fixed".
AdderGate: Um somador inplace genérico. Isso
é funcionalmente equivalente a kind="half".
Referências
[1] T. G. Draper, Addition on a Quantum Computer (Adição em um computador quântico), 2000. arXiv:quant-ph/0008033
[2] Ruiz-Perez et al, Aritmética quântica com a transformada quântica de Fourier, 2017. arXiv:1411.5949
[3] Vedral et al, Quantum Networks for Elementary Arithmetic Operations (Redes Quânticas para Operações Aritméticas Elementares), 1995. arXiv:quant-ph/9511018
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.
- kind (str) – O tipo de somador pode ser
'half'para um meio somador ou'fixed'para um somador de tamanho fixo. Um meio somador contém um carry-out para representar o bit mais significativo, mas o somador de tamanho fixo não contém e, portanto, executa o módulo de adição2 ** num_state_qubits. - name (str) – O nome do objeto de circuito.
Aumentos
ValueError - Se num_state_qubits for menor que 1.
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