top of page

A página Algoritmos reúne algoritmos quânticos acompanhados de tutoriais completos, que orientam o usuário desde a instalação do Python até a execução dos códigos. O objetivo é apresentar exemplos práticos de circuitos e protocolos quânticos, explicando passo a passo como configurar o ambiente, instalar as bibliotecas necessárias e rodar os algoritmos de forma local.

Os conteúdos foram desenvolvidos para auxiliar estudantes e interessados em computação quântica a compreender e testar, na prática, os algoritmos apresentados, utilizando ferramentas como o Python e a biblioteca Qiskit.

Instalação do Python e suas Bibliotecas

Para executar os algoritmos quânticos apresentados neste site, utilizamos o Python, uma linguagem amplamente empregada em computação científica, juntamente com a biblioteca Qiskit, voltada para computação quântica. A seguir, apresentamos os passos necessários para preparar o ambiente.

O primeiro passo é instalar o Python (versão 3.9 ou superior). O instalador pode ser obtido no site oficial do Python. Durante a instalação, é importante marcar a opção “Add Python to PATH”, pois isso permite executar comandos Python diretamente pelo terminal.

Com o Python instalado, as bibliotecas necessárias podem ser adicionadas por meio do gerenciador de pacotes pip, que já vem integrado à linguagem.

A principal biblioteca utilizada neste site é o Qiskit, responsável pela criação, simulação e execução de circuitos quânticos. A documentação oficial, com tutoriais e instruções detalhadas de instalação, está disponível no site da IBM Quantum.

Ideia do algoritmo

   O Algoritmo de Grover resolve o problema de busca em um conjunto não ordenado.
   A ideia central é amplificar a probabilidade do estado correto por meio de repetições de duas operações:

  1. Oráculo: marca o estado solução (inverte sua fase).

  2. Difusor de Grover: amplifica a amplitude do estado marcado.

   Após um número adequado de iterações, a medição retorna a solução com alta probabilidade.

​

Uma vez apresentada a ideia do algortimo, vamos colocar a mão na massa, faça o tutorial abaixo copiando e colando dentro do Jupyter Notebook:

Importando as bibliotecas utilizadas:

from qiskit import QuantumCircuit, Aer, execute
from qiskit.visualization import plot_histogram


# Importa a classe QuantumCircuit, usada para criar circuitos quânticos
# Importa Aer, que fornece simuladores quânticos
# Importa execute, que executa o circuito em um simulador ou hardware real

# Importa a função que gera histogramas dos resultados das medições

Criação do Circuito:

qc = QuantumCircuit(2, 2)

# Cria um circuito quântico com:
# - 2 qubits quânticos (índices 0 e 1)
# - 2 bits clássicos (índices 0 e 1)
# Os qubits armazenam estados quânticos.
# Os bits clássicos armazenam o resultado da medição.

Superposição Inícial:

qc.h(0)

# Aplica a porta Hadamard (H) no qubit 0
# Isso transforma o estado |0> em (|0> + |1>) / sqrt(2)

Ainda superposição Inícial:

qc.h(1)

​# Aplica a porta Hadamard (H) no qubit 1
# Agora o sistema completo fica em superposição dos quatro estados:
# |00>, |01>, |10> e |11>

Oráculo de Grover:

qc.cz(0, 1)

​# Aplica a porta Controlled-Z (CZ) entre os qubits 0 e 1
# Essa porta inverte a fase SOMENTE quando ambos os qubits
# estão no estado |1>.
# Em termos físicos:
# |11> -> -|11>
# Esse é o "oráculo", responsável por marcar o estado solução
# sem revelar diretamente qual ele é.

Difusor de Grover:

qc.h(0)

# Aplica Hadamard no qubit 0
# Começa a etapa de amplificação de probabilidade

qc.h(1)

# Aplica Hadamard no qubit 1

qc.x(0)

# Aplica a porta X no qubit 0
# A porta X troca |0> por |1> e vice-versa

qc.h(1)

# Aplica Hadamard no qubit 1
# Prepara o qubit para a porta controlada

qc.cx(0, 1)

# Aplica a porta CNOT (CX)
# O qubit 0 é o controle e o qubit 1 é o alvo
# Essa operação é responsável pela inversão de fase central

qc.h(1)

​# Aplica Hadamard novamente no qubit 1
# Finaliza a inversão de fase

qc.x(0)

# Aplica a porta X no qubit 0
# Desfaz a transformação anterior

qc.x(1)

# Aplica a porta X no qubit 1

qc.h(0)

​# Aplica Hadamard no qubit 0
# Finaliza o processo de difusão

qc.h(1)


# Aplica Hadamard no qubit 1

Medição qubit 0:

qc.measure(0, 0)

# Mede o qubit 0
# O resultado é armazenado no bit clássico 0

Medição qubit 1:

qc.measure(1, 1)


# Mede o qubit 1
# O resultado é armazenado no bit clássico 1

Semicondutor

Algoritmo de Grover

bottom of page