
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:
-
Oráculo: marca o estado solução (inverte sua fase).
-
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
