Skip to main content
IBM Quantum Platform

DraperQFTAdder

class qiskit.circuit.library.DraperQFTAdder(num_state_qubits, kind='fixed', name='DraperQFTAdder')

GitHub

Bases: Adder

Um circuito que usa QFT para realizar a adição no local em dois registros de qubit.

Para registros com qubits d nn, o somador QFT pode realizar a soma módulo 2n2^n (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      ├
      └──────┘                                         └───────┘
Nota

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.

Veja Também

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 2n2^n. 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 a|a\rangle ou b|b\rangle. 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ção 2 ** 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
Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.