Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aprenda a escrever um programa básico Q# que demonstre o emaranhamento, um conceito-chave da computação quântica.
Quando dois ou mais qubits estão emaranhados, eles compartilham informações quânticas, o que significa que o que acontece com um qubit também acontece com o outro. Neste início rápido, você cria um estado emaranhado de dois qubits específico chamado par de Bell. Em um par de Bell, se você medir um qubit no $\ket{0}$ estado, saberá que o outro qubit também está no $\ket{0}$ estado sem medi-lo. Para obter mais informações, consulte Emaranhamento quântico.
Neste início rápido, você:
- Crie um arquivo do Q# .
- Aloque um par de qubits.
- Emaranhar os qubits.
Pré-requisitos
- A versão mais recente do Visual Studio Code.
- A extensão QDK (Azure Quantum Development Kit). Para obter detalhes de instalação, consulte Configurar o Quantum Development Kit.
Criar um arquivo Q#
- Abra o Visual Studio Code.
- Selecione Arquivo>Novo arquivo de texto.
- Salve o arquivo como
Main.qs. A extensão .qs denota um Q# programa.
Escreva seu Q# código
Em seu Main.qs arquivo, siga estas etapas para emaranhar e medir um par de qubits.
Importar uma biblioteca quântica
O QDK inclui a Q# biblioteca padrão com funções e operações predefinidas para seus programas quânticos. Para usá-los, você deve primeiro importar a biblioteca relevante.
Em seu programa, use uma import instrução para abrir a Std.Diagnostics biblioteca. Isso lhe dá acesso a todas as funções e operações da biblioteca, incluindo DumpMachine, que você usará posteriormente para exibir o estado emaranhado.
import Std.Diagnostics.*;
Definir uma operação
Depois de importar as bibliotecas relevantes, defina sua operação quântica e seus valores de entrada e saída. Para este início rápido, sua operação é Main. É aqui que você escreverá o código restante Q# para alocar, manipular e medir dois qubits.
Main não usa parâmetros e retorna dois Result valores, ou Zero ou One, que representam os resultados das medições de qubit:
operation Main() : (Result, Result) {
// Your entanglement code goes here.
}
Alocar dois qubits
A Main operação está vazia no momento, portanto, q1 a próxima etapa é alocar dois qubits e q2. No Q#, você aloca qubits usando a use palavra-chave:
// Allocate two qubits, q1 and q2, in the 0 state.
use (q1, q2) = (Qubit(), Qubit());
Observação
Em Q#, os qubits são sempre alocados no $\ket{0}$ estado.
Coloque um qubit em superposição
Os qubits q1 e q2 estão no $\ket{0}$ estado. Para preparar os qubits para o emaranhamento, você deve colocar um deles em uma superposição uniforme, onde tem 50% de chance de ser medido como $\ket{0}$ ou $\ket{1}$.
Você coloca um qubit em superposição aplicando a operação Hadamard, H, :
// Put q1 into an even superposition.
H(q1);
O estado resultante de q1 é $\frac{{1}{\sqrt{2}}(\ket{{0}+\ket{1}),$ que é uma superposição par de $\ket{0}$ e $\ket{{1}$.
Emaranhar os qubits
Agora você está pronto para emaranhar os qubits usando a operação control-NOT, CNOT.
CNOT é uma operação de controle que usa dois qubits, um atuando como controle e o outro como destino.
Para este início rápido, você define q1 como o qubit de controle e q2 como o qubit de destino. Isso significa inverte CNOT o estado de q2 quando o estado de q1 é $\ket{1}$.
// Entangle q1 and q2, making q2 depend on q1.
CNOT(q1, q2);
O estado resultante de ambos os qubits é o par $\frac{de Bell ({1}{\sqrt{2}}+\ket{00}\ket{).{11}$
Dica
Se você quiser saber como as operações Hadamard e CNOT transformam o estado dos qubits, consulte Criando emaranhamento com operações quânticas.
Exibir o estado emaranhado
Antes de medir os qubits, é importante verificar se o código anterior os envolve com êxito. Use a DumpMachine operação, que faz parte da Std.Diagnostics biblioteca, para gerar o estado atual do seu Q# programa:
// Show the entangled state of the qubits.
DumpMachine();
Medir os qubits
Agora que você verificou que os qubits estão emaranhados, pode usar a M operação para medi-los. Medindo q1 e q2 colapsa seus estados quânticos em Zero ou One com probabilidade par.
No Q#, você usa a let palavra-chave para declarar uma nova variável. Para armazenar os resultados da medição de q1 e q2, declare as variáveis m1 e m2, respectivamente:
// Measure q1 and q2 and store the results in m1 and m2.
let (m1, m2) = (M(q1), M(q2));
Redefinir os qubits
Antes de serem liberados no final de cada Q# programa, os qubits devem estar no $\ket{0}$ estado. Você faz isso usando a Reset operação:
// Reset q1 and q2 to the 0 state.
Reset(q1);
Reset(q2);
Retornar os resultados da medição
Finalmente, para concluir a Main operação e observar o estado emaranhado, retorne os resultados da medição de m1 e m2:
// Return the measurement results.
return (m1, m2);
Dica
Se você quiser saber mais sobre uma Q# função ou operação, passe o mouse sobre ela.
Executar seu Q# código
Parabéns! Você escreveu um Q# programa que emaranha dois qubits e cria um par de Bell.
Seu programa final Q# deve ficar assim:
import Std.Diagnostics.*;
operation Main() : (Result, Result) {
// Allocate two qubits, q1 and q2, in the 0 state.
use (q1, q2) = (Qubit(), Qubit());
// Put q1 into an even superposition.
// It now has a 50% chance of being measured as 0 or 1.
H(q1);
// Entangle q1 and q2, making q2 depend on q1.
CNOT(q1, q2);
// Show the entangled state of the qubits.
DumpMachine();
// Measure q1 and q2 and store the results in m1 and m2.
let (m1, m2) = (M(q1), M(q2));
// Reset q1 and q2 to the 0 state.
Reset(q1);
Reset(q2);
// Return the measurement results.
return (m1, m2);
}
Para executar o programa e exibir o resultado de ambos os qubits, selecione Executar acima da Main operação ou pressione Ctrl+F5
Você pode executar o programa várias vezes, cada uma com um resultado diferente no console de depuração. Isso demonstra a natureza probabilística das medições quânticas e o emaranhamento dos qubits.
Por exemplo, se o resultado for Zero, seu console de depuração deve ter esta aparência:
DumpMachine:
Basis | Amplitude | Probability | Phase
-----------------------------------------------
|00⟩ | 0.7071+0.0000𝑖 | 50.0000% | 0.0000
|11⟩ | 0.7071+0.0000𝑖 | 50.0000% | 0.0000
Result: "(Zero, Zero)"
Próxima etapa
Para saber mais sobre o emaranhamento quântico com Q#o , consulte Tutorial: Explorar o emaranhamento quântico com Q#o . Este tutorial expande os conceitos abordados neste início rápido e ajuda você a escrever um programa de emaranhamento mais avançado.