🚀 Quantum Computing com Qiskit

Projeto educacional de computação quântica utilizando o framework Qiskit da IBM
Notebooks • Instalação • Conceitos • Referências
📑 Índice
📚 Sobre o Projeto
Este repositório contém notebooks Jupyter interativos que exploram conceitos fundamentais de computação quântica, desde a matemática básica até protocolos quânticos complexos como o teletransporte quântico.
🎯 Objetivos
✨ Demonstrar conceitos de mecânica quântica de forma visual e interativa
⚡ Implementar algoritmos e protocolos quânticos usando Qiskit
📐 Fornecer explicações matemáticas detalhadas junto com código executável
🎓 Servir como material didático para quem está aprendendo computação quântica
🤖 Declaração de Uso de IA e Integridade
Este projeto adota uma abordagem transparente quanto ao uso de tecnologias de Inteligência Artificial no desenvolvimento de software, em conformidade com as boas práticas de integridade acadêmica e científica.
Ferramentas Utilizadas:
🤖 Github Copilot & Google Antigravity: Utilizados para auxílio na geração de código (boilerplate), otimização de sintaxe e sugestões de implementação.
Compromisso de Autoria e Validação:
Embora ferramentas de IA tenham sido empregadas, a integridade do projeto é garantida pelos seguintes pilares de validação humana:
- 💡 Ideação e Pedagogia: A estrutura didática, a sequência lógica dos tópicos e as explicações conceituais são de autoria intelectual humana.
- 🔧 Engenharia de Software: Todos os códigos gerados passaram por:
- ✅ Análise de requisitos e adequação pedagógica
- ✅ Testes funcionais automatizados para garantir a corretude dos algoritmos quânticos
- ✅ Revisão manual para assegurar a aderência aos conceitos físicos da Mecânica Quântica
- 🎯 🎯 Responsabilidade: O autor assume total responsabilidade pela funcionalidade, segurança e exatidão do material didático aqui apresentado.
📂 Estrutura do Projeto
quantum/
├── notebooks/ # Notebooks Jupyter educacionais
│ ├── 00a-math.ipynb
│ ├── 00b-phases.ipynb
│ ├── 01-intro.ipynb
│ ├── 02-teletransport.ipynb
│ ├── 02-teletransport.qasm
│ ├── 03-mais-sobre-Hadamard.md
│ ├── 04-Hadamard-experiment.ipynb
│ ├── 05-interference.ipynb
│ ├── 05-kickback.qasm
│ ├── 05-deutsch-jozsa.qasm
│ ├── 06-grover.ipynb
│ ├── 06-grover.qasm
│ ├── 07-quantum-fourier-transform.ipynb
│ ├── 20-quantum-machine-learning.ipynb
│ ├── 20-vqc-classifier.qasm
│ └── 20-vqc-tutorial.qasm
├── src/ # Módulos Python reutilizáveis
│ ├── __init__.py
│ └── quantum_viz.py # Funções de visualização interativa
├── assets/ # Recursos (imagens, vídeos, etc.)
├── README.md
├── LICENSE
└── pyproject.toml
📖 Notebooks Disponíveis
| 📓 Notebook | 🎯 Tópicos Principais | 📊 Nível |
|---|
| 00a-math | Estados quânticos, portas, produto tensorial | 🟢 Básico |
| 00b-phases | Fases quânticas, portas CP, Bloch sphere | 🟡 Intermediário |
| 01-intro | Primeiros passos com Qiskit, Bell states | 🟢 Básico |
| 02-teletransport | Protocolo de Bennett, medição de Bell | 🟡 Intermediário |
| 03-Hadamard | Interpretação física, beam splitters | 🟢 Básico |
| 04-Hadamard-exp | Interferômetro de Mach-Zehnder | 🟡 Intermediário |
| 05-interference | Phase kickback, Deutsch-Jozsa | 🔴 Avançado |
| 06-grover | Busca quântica, amplificação de amplitude | 🔴 Avançado |
| 07-QFT | Transformada de Fourier, estimação de fase | 🔴 Avançado |
| 20-QML | Machine Learning quântico, VQC, classificação | 🔴 Avançado |
📘 notebooks/00a-math.ipynb
Fundamentos Matemáticos da Computação Quântica 🟢
-
Estados Quânticos Básicos:
- Notação de Dirac: |0⟩ (ket zero) e |1⟩ (ket um)
- Representação vetorial como vetores coluna
- Amplitudes α e β: interpretação e normalização (|α|² + |β|² = 1)
- Estado genérico: |ψ⟩ = α|0⟩ + β|1⟩
- Implementações com SymPy (simbólico) e NumPy (numérico)
-
Portas Quânticas Fundamentais:
- Porta X (NOT Quântico): Inversão de estados |0⟩ ↔ |1⟩
- Matriz 2×2 e multiplicação matricial passo a passo
- Demonstrações com SymPy e NumPy
- Porta H (Hadamard): Criação de superposição (porta mais importante!)
- Transforma |0⟩ → |+⟩ e |1⟩ → |−⟩
- Matriz com fator 1/√2
- Portas de Fase (Z, S, T): Modificação de fase sem alterar probabilidades
- Aplicação prática e representação matricial
- Analogia: Portas como rotações na Esfera de Bloch
-
Superposição Quântica:
- Conceito fundamental: qubit em múltiplos estados simultaneamente
- Analogia da "moeda quântica" 🪙 girando no ar
- Estados |+⟩ e |−⟩ criados pela porta Hadamard
- Diferença entre superposição quântica e probabilidade clássica
- Colapso da superposição durante a medição (destruição da informação quântica)
- Conceito de "shots" (1024 medições) para obter distribuições de probabilidade
- Natureza probabilística vs. determinística (quântico vs. clássico)
- Referência ao experimento físico com fótons (03-mais-sobre-Hadamard.md)
-
Produto Tensorial (Estados Multi-Qubit):
- Operador ⊗ (Kronecker product) para combinar qubits
- Construção de estados |00⟩, |01⟩, |10⟩, |11⟩
- Representação de 2 qubits: vetor de 4 dimensões
- Superposição de múltiplos qubits: |ψ⟩ = α|00⟩ + β|01⟩ + γ|10⟩ + δ|11⟩
- Demonstrações passo a passo com SymPy
-
Portas de Dois Qubits:
- CNOT (Controlled-NOT): Emaranhamento e estados de Bell
- Matriz 4×4 e funcionamento condicional
- Exemplos: CNOT|11⟩ = |10⟩, CNOT|10⟩ = |11⟩
- CZ (Controlled-Z): Inversão de fase condicional
- Matriz 4×4 e operação de fase
- Exemplo: CZ|11⟩ = -|11⟩
📙 notebooks/00b-phases.ipynb
Fases Quânticas e Portas de Rotação Parametrizadas 🟡
- Fase quântica: Fundamento da interferência quântica
- Fase global vs. fase relativa: Diferenças e observabilidade
- Estados com fases diferentes: |+⟩, |−⟩, |i+⟩, |i−⟩
- Portas de fase fixas:
- Porta Z: Adiciona 180° de fase ao |1⟩
- Porta S: Adiciona 90° de fase ao |1⟩
- Porta T: Adiciona 45° de fase ao |1⟩
- Visualizações na Esfera de Bloch: Estados com diferentes fases
- Visualizações com Q-Sphere: Representação de fases por cores
- Experimento interativo: Criação de estados customizados com diferentes fases
- Portas de Rotação Parametrizadas (RX, RY, RZ):
- Introdução: Portas com ângulos variáveis para QML e circuitos variacionais
- Aplicações em VQC: Codificação de dados e ansatz variacional
- Matrizes das portas: RX(θ), RY(θ), RZ(θ) com SymPy
- Implementação manual com NumPy: Funções
rx_gate(), ry_gate(), rz_gate()
- Exemplos práticos visualizados:
- RY: Rotação no plano XZ (uso em Ansatz e codificação de dados)
- RZ: Rotação de fase pura (uso em Feature Maps)
- RX: Rotação no plano YZ (criação de estados complexos)
- Codificação de dados clássicos: Mapeamento [0,1] → estados quânticos via RY
- Visualizações na Esfera de Bloch: Estados com 5 ângulos diferentes por porta
- Visualizações com Q-Sphere: Representação de fases nos dados codificados
- Relação com portas fixas: Z=RZ(π), S=RZ(π/2), T=RZ(π/4), X=RX(π)
- Importância para QML: Parametrização, expressividade, gradientes e kernels quânticos
- Porta CP (Controlled-Phase):
- Definição e matriz: Porta quântica de dois qubits que adiciona fase condicional
- Implementação com NumPy: Função
cphase_gate(theta) para cálculos diretos
- Visualização com Bloch Spheres: Estados antes e depois da aplicação de CP
- Convenção little-endian: Explicação pedagógica sobre ordenação de qubits no Qiskit
📗 notebooks/01-intro.ipynb
Introdução ao Qiskit 🟢
- Configuração e primeiros passos
- Criação de circuitos quânticos
- Portas quânticas básicas (H, X, CNOT)
- Simulação e visualização
- Estados de Bell e emaranhamento quântico
- Visualizações de estados quânticos
- Visualização na Esfera de Bloch
📕 notebooks/02-teletransport.ipynb
Protocolo de Teletransporte Quântico 🟡
- Implementação completa do protocolo de Bennett et al.
- Criação de estados emaranhados (pares de Bell)
- Medição de Bell
- Correções quânticas condicionais
- Visualizações em Bloch sphere, Q-Sphere e State City
- Cálculos matemáticos detalhados de cada etapa
- Visualização 3D interativa customizada (Q-Sphere)
🔧 notebooks/02-teletransport.qasm
💎 Implementação OpenQASM do Protocolo de Teletransporte
Arquivo QASM complementar ao notebook, pronto para uso no IBM Quantum Composer:
-
Formato: OpenQASM 2.0 (padrão da indústria)
-
Uso no IBM Quantum Platform:
- ✅ Importação direta no IBM Quantum Composer
- ✅ Execução em simuladores quânticos (ex:
ibmq_qasm_simulator)
- ✅ Execução em hardware quântico real da IBM (ex:
ibm_brisbane, ibm_kyoto)
- ✅ Visualização gráfica do circuito
- ✅ Análise de resultados com histogramas
- ✅ Comparação entre simulação ideal e hardware real (efeitos de ruído e decoerência)
- ✅ Exportação para outros frameworks (Qiskit, Cirq, etc.)
-
Comentários detalhados: O arquivo contém documentação completa de cada etapa do protocolo
-
Educacional: Ideal para demonstrações em sala de aula ou apresentações
-
Pesquisa: Base para experimentos em hardware quântico real
Como usar:
- Acesse [quantum.ib