Estou procurando um algoritmo quântico que possa ser usado para demonstrar a sintaxe de diferentes linguagens quânticas. Minha pergunta é semelhante a esta , no entanto, para mim, "bom" significa:
- O que ele faz pode ser descrito em 1 a 2 parágrafos e deve ser fácil de entender.
- Deve usar mais elementos do "mundo da programação quântica" (quero dizer que o algoritmo deve usar constantes clássicas, medições, condições, registros q, operadores etc., o máximo possível).
- O algoritmo deve ser pequeno (no máximo 15 a 25 linhas de pseudo-código).
Algoritmos úteis geralmente são muito longos / difíceis, mas o algoritmo de Deutsch não usa tantos elementos. Alguém pode me sugerir um algoritmo bom para demonstração?
algorithm
resource-request
programming
klenium
fonte
fonte
Respostas:
Sugiro olhar para protocolos de estimativa de valor próprio / vetor próprio. Há muita flexibilidade para tornar o problema tão fácil ou difícil quanto você deseja.
Comece escolhendo dois parâmetros, e k . Você deseja projetar um unitário de n qubit, U que possua valores próprios no formato e - 2 π i q / 2 k para números inteiros q . Certifique-se de que pelo menos um desses autovalores seja único e chame-o de ω . Verifique também se um estado simples do produto, digamos | 0 ⟩ ⊗ n , tem diferente de zero sobreposição com o vector próprio de valores próprios ω .n k n você e- 2 πeu q/ 2k q ω |0⟩⊗n ω
O objetivo seria implementar um algoritmo de estimativa de fase sobre isso, informando o valor e receber a tarefa de gerar um vetor | ip ⟩ que é o vector próprio correspondente ao valor próprio ω . Em geral, isso incluirá um circuito de n + k qubits (a menos que você precise de ancillas para implementar U controlado ).k |ψ⟩ ω n+k U
Isso funciona da seguinte maneira:
fonte
Parece que você quer um "Olá Mundo" quântico. A versão quântica mais direta disso seria apenas escrever uma versão codificada binária do texto
Hello World
em um registro de qubits. Mas isso exigiria ~ 100 qubits e seria maior que o seu limite superior para o comprimento do código.Então, vamos escrever um pequeno pedaço de texto. Vamos escrever
;)
, precisamos de uma sequência de bits de comprimento 16. Especificamente, usando a codificação ASCIIUsando o QISKit, você faria isso usando o código a seguir.
Claro, isso não é muito quântico. Então você pode fazer uma superposição de dois emoticons diferentes. O exemplo mais fácil é sobrepor;) com 8), uma vez que as cadeias de bits diferem apenas nos qubits 8 e 9.
Então você pode simplesmente substituir as linhas
do acima com
O Hadamard cria uma superposição de
0
e1
, e o nó não o torna uma superposição de00
e11
em dois qubits. Esta é a única superposição necessária para;)
e8)
.Se você quiser ver uma implementação real disso, ela pode ser encontrada no tutorial do QISKit (divulgação completa: foi escrito por mim).
fonte
Eu proporia o (perfeito) gerador de números aleatórios de 1 bit. É quase trivialmente fácil:
fonte