O objetivo deste artigo é mostrar a implementação do algoritmo quântico Deutsch-Jozsa em linguagem funcional e a simulação deste no IBM Q Experience. Para tanto, são apresentados conceitos matemáticos fundamentais e conceitos específicos da Computação Quântica, tal como sobreposição de estados, Bit Quântico, Esfera de Bloch e Portas Quânticas. Também serão apresentadas definições de programação imperativa, linguagem Python e seu caráter multi-paradigma, utilizada pela IBM no simulador IBM Q Experience, para a simulação de circuitos quânticos. Por fim, são exibidas definições e características da programação funcional, da linguagem Haskell e da linguagem Quipper, onde se apresenta a implementação detalhada e comentada do algoritmo quântico de Deutsch-Jozsa juntamente com o pseudocódigo.
O objetivo deste artigo é mostrar a implementação do algoritmo quântico Deutsch-Jozsa em linguagem funcional e a simulação deste no IBM Q Experience. Para tanto, são apresentados conceitos matemáticos fundamentais e conceitos específicos da Computação Quântica, tal como sobreposição de estados, Bit Quântico, Esfera de Bloch e Portas Quânticas. Também serão apresentadas definições de programação imperativa, linguagem Python e seu caráter multi-paradigma, utilizada pela IBM no simulador IBM Q Experience, para a simulação de circuitos quânticos. Por fim, são exibidas definições e características da programação funcional, da linguagem Haskell e da linguagem Quipper, onde se apresenta a implementação detalhada e comentada do algoritmo quântico de Deutsch-Jozsa juntamente com o pseudocódigo.
Algoritmos Quânticos: Da lógica clássica à computação quântica apresenta uma introdução progressiva, técnica e computacional aos fundamentos e aos principais algoritmos da computação quântica. A obra parte dos conceitos clássicos de algoritmo, complexidade computacional, teoria dos números e álgebra linear para construir, passo a passo, a compreensão de qubits, superposição, medição, interferência, portas quânticas, circuitos e emaranhamento. Ao longo do livro são desenvolvidos algoritmos fundamentais como Deutsch, Deutsch–Jozsa, Simon e Grover, avançando para a Transformada Quântica de Fourier (QFT), estimação quântica de fase e o algoritmo de Shor. A obra também discute amplificação de amplitude, criptografia pós-quântica, computação híbrida quântico-clássica, VQE, QAOA, barren plateaus, ruído, correção e mitigação de erros, além dos diferentes significados de vantagem quântica e dos limites atuais da tecnologia. Uma parte substancial do livro é dedicada à implementação prática com Python e Qiskit, incluindo preparação e medição de estados, estados de Bell, circuitos de Grover, QFT, estimação de fase, demonstrações de Shor, simulação local, transpilação e execução em processadores quânticos (QPUs). O texto procura distinguir rigorosamente vantagem algorítmica teórica, vantagem experimental e utilidade prática, evitando interpretações excessivamente simplificadas da computação quântica. O objetivo é oferecer uma ponte entre Ciência da Computação clássica e computação quântica para estudantes, desenvolvedores, pesquisadores e leitores interessados em compreender não apenas como os algoritmos quânticos funcionam, mas também quando, por que e sob quais condições eles podem oferecer vantagens computacionais. Palavras-chave Computação quântica; Algoritmos quânticos; Quantum computing; Quantum algorithms; Qubits; Circuitos quânticos; Quantum circuits; Qiskit; Algoritmo de Grover; Grover's algorithm; Algoritmo de Shor; Shor's algorithm; Transformada Quântica de Fourier; Quantum Fourier Transform; Estimação quântica de fase; Quantum Phase Estimation; VQE; QAOA; Computação híbrida quântico-clássica; Criptografia pós-quântica; Complexidade computacional; Emaranhamento quântico; Amplificação de amplitude; Programação quântica.
Processamento de informação quântica tem sido um dos pilares da nova era da informação. Nessa direção, o controle e processamento de informação quântica desempenha um papel fundamental, e computadores capazes de manipular tais informações tem se tornado realidade. Neste artigo nós apresentamos, de forma didática, elementos básicos da versão mais recente do computador quântico da IBM e suas ferramentas. Nós ainda apresentamos em detalhes o algoritmo de Deutsch-Jozsa usado para diferenciar funções constantes de funções balanceadas, incluindo uma discussão de sua eficiência frente aos algoritmos clássicos para a mesma tarefa. A implementação experimental do algoritmo em um sistema de 4 qbits é apresentada. Nosso artigo abre caminho para uma série de investigações didáticas sobre o sistema da IBM, bem como os algoritmos quânticos mais conhecidos.
Computação quântica é uma área de grande desenvolvimento hoje em dia e isso traz uma necessidade para desenvolver hardware e software. Uma vez que o hardware disponível é muito pouco e o software precisa de ser testado, existe uma necessidade de uma boa plataforma para testar as soluções de software. Simular um computador quântico num computador clássico não é ideal, contudo é uma resposta viável a esta necessidade, para um pequeno número de qubits. Além disso, os computadores quânticos necessitam dos computadores clássicos de forma a criar um sistema real prático, isto apresenta-se como uma excelente oportunidade para testar técnicas de programação clássica para melhorar a programação quântica. Esta tese propõe o uso de programação clássica para melhorar a implementação de um algoritmo de adição modular usando transformadas de Fourier quânticas. Os principais objectivos deste trabalho são: simular um circuito quântico; testar um algoritmo quântico e compará-lo com o seu equivalente clássico; implementar o algoritmo de adição modular, usando as capacidades de aceleração de computação das transformadas de Fourier quânticas e optimizá-lo; Testar e implementar códigos quânticos de correcção de erros; fazer um teste num computador quântico real.De forma a testar a linguagem e comparar um algoritmo quântico com um clássico, fez-se um teste ao algoritmo de Shor que está disponível de raiz na plataforma liquid. Apesar do algoritmo de Shor ter, teoricamente, uma dependência de tipo polinomial com a dimensão do problema, os testes realizados mostraram que o tempo de computação tem um comportamento exponencial. Simular um algoritmo quântico num computador clássico requer tempo de computação que cresce de forma exponencial, pois é necessário armazenar e processar todos os estados do sistema, que é um espaço de Hilbert de dimensão 2^n.O algoritmo de adição modular usando transformadas de Fourier quânticas foi implementado na plataforma liquid. Seguidamente fizeram-se melhorias e optimizações. O número de operações teórico é O(n^2). Contudo, depois de fazer melhorias ao circuito, removendo gates desnecessárias para casos específicos, o número de operações passa a ter um valor mínimo de Omega(n). Com este tipo de alterações o sistema pode apresentar melhorias no que respeito ao tempo de simulação até um factor de ordem 10. Isto mostra que programar um algoritmo quântico tendo em conta casos específicos pode melhorar imenso o desempenho da simulação.Os códigos de correção de erros quânticos foram implementados num circuito simples, com as ferramentas disponíveis na plataforma liquid, e obteve-se um sistema que consegue lidar com erros com probabilidade inferior ou igual a 2%, com uma taxa de sucesso na sua correção de 95%. Contudo são necessários circuitos muito grandes, pouco exequíveis.A plataforma disponibilizada pela IBM para fazer testes num computador quântico real, foi utilizada para testar o algoritmo de adição modular e adição normal (com carry bit). Uma vez que esta plataforma tem um número limitado de gates, reforça a ideia de que se deve otimizar os algoritmos tendo em conta casos particulares. Os resultados destes testes mostram também que é importante utilizar correcção de erros quânticos, mas para que isso seja viável é necessário que haja mais qubits disponíveis ou outro tipo de códigos.
O desenvolvimento de extensões de bibliotecas da linguagem de programa ção Haskell, mais intuitiva para programação quântica, visa obter uma compreensão mais abrangente da computação quântica baseada em seus fundamentos matemáticos. Os conceitos gerais da programação funcional são aplicados na implementa ção de algoritmos quânticos para teleportação. Baseada na metodologia introduzida por Amr Sabry, esta implementação inclui a aplicação da técnica de valores virtuais, a análise de dados quânticos (clássicos, superposição, emaranhados), a especificação de transformações unitárias e a compreensão do processos de medida, que é a observação de valores.
Computaçãao quântica pode ser entendida como transformação da informação codificada no estado de um sistema físico quântico. A idéia básica da computação quântica é codificar dados utilizando bits quânticos (qubits). Diferentemente do bit clássico, o qubit pode existir em uma superposição dos seus estados básicos permitindo o “paralelismo quântico”, o qual é uma característica importante da computação quântica visto que pode aumentar consideravelmente a velocidade de processamento dos algoritmos. Entretanto, tipos de dados quânticos são bastante poderosos não somente por causa da superposição de estados. Existem outras propriedades ímpares como medida e emaranhamento. Nesta tese, nós discutimos que um modelo realístico para computações quânticas deve ser geral com respeito a medidas, e completo com respeito a comunicação entre o mundo quântico e o mundo clássico. Nós, então, explicamos e estruturamos computações quânticas gerais e completas em Haskell utilizando construções conhecidas da área de semântica e linguagens de programação clássicas, como mônadas e setas. Em mais detalhes, esta tese se concentra nas seguintes contribuições. Mônadas e Setas. Paralelismo quântico, emaranhamento e medida quântica certamente vão além do escopo de linguagens funcionais “puras”. Nós mostramos que o paralelismo quântico pode ser modelado utilizando-se uma pequena generalização de mônadas, chamada mônadas indexadas ou estruturas Kleisli. Além disso, nós mostramos que a medida quântica pode ser explicada utilizando-se uma generalização mais radical de mônadas, as assim chamadas setas, mais especificamente, setas indexadas, as quais definimos nesta tese. Este resultado conecta características quânticas “genéricas” e “completas” `a construções semânticas de linguagens de programação bem fundamentadas. Entendendo as Interpretações da Mecânica Quântica como Efeitos Computacionais. Em um experimento hipotético, Einstein, Podolsky e Rosen demonstraram algumas consequências contra-intuitivas da mecânica quântica. A idéia básica é que duas partículas parecem sempre comunicar alguma informação mesmo estando separadas por uma distância arbitrariamente grande. Existe muito debate e muitos artigos sobre esse tópico, mas é interessante notar que, como proposto por Amr Sabry, essas características estranhas podem ser essencialmente modeladas por atribuições a variáveis globais. Baseados nesta idéia nós modelamos este comportamento estranho utilizando noções gerais de efeitos computacionais incorporados nas noções de mônadas e setas. Provando Propriedades de Programas Quânticos Utilizando Leis Algébricas. Nós desenvolvemos um trabalho preliminar para fazer provas equacionais sobre algoritmos quânticos escritos em uma sublinguagem pura de uma linguagem de programação funcional quântica, chamada QML.
Resumo: A utilização da plataforma da computação quântica em nuvem (quantum cloud) da empresa IBM, através de sua IDE, chamada de IBM-Q Compose, se tornou imprescindível para disciplinas e minicursos na área da computação quântica.O IBM-Q Compose é uma IDE de desenvolvimento que fornece além da simulação local, a conexão entre os usuários e os processadores quânticos, onde se deseja executar circuitos e algoritmos quânticos.Neste trabalho exploramos uma proposta de sequência didática via projetos como atividades a serem trabalhadas na disciplina de computação quântica para aplicação nas engenharias e/ou ciências básicas.O foco principal é abordar conceitos importantes, do ponto de vista pedagógico, da computação quântica utilizando a IDE IBM-Q Compose da plataforma IBM.Na primeira parte deste trabalho, revisamos rapidamente conceitos como qubits, portas lógicas, circuitos e algoritmo quântico.Na segunda parte, propomos uma sequência didática via projetos na IDE para alunos e/ou professores trabalharem conjuntamente os conceitos, tais como: (1) a preparação de estado quânticos, (2) portas quânticas e suas atuações no espaço estados de múltiplos qubits, (3) algoritmo quântico através do teleporte de estados quânticos, e por fim, (4) análise das leituras (medidas) sobre os qubits utilizando vários gráficos disponíveis na IDE da plataforma.Concluímos o nosso trabalho analisando a plataforma da IBM referente a vários aspectos, como: a instalação, as características e sua utilização por parte de alunos e/ou professores.O nosso trabalho demonstra que essa sequência didática pode ser útil para os professores que usando o IBM-Q Compose, poderá trabalhar com os alunos os conceitos abstratos da computação quântica em chips quânticos totalmente gratuitos.