Exercício Parte 1 - Crie um gerador de bits aleatórios quânticos

Concluído

Na unidade anterior, você aprendeu sobre os blocos de construção básicos de um programa Q#. Agora, você está pronto para escrever seu primeiro programa quântico. Nesta unidade, você escreve um programa quântico que gera um bit verdadeiramente aleatório.

Você cria o gerador de número aleatório quântico em duas etapas. Essa unidade é a primeira etapa, que é gerar um único bit aleatório. Para gerar um bit aleatório, você aloca um qubit no estado $\ket{0}$, coloca esse qubit em um estado de superposição e, em seguida, mede o qubit para produzir um valor de bit aleatório de 0 ou 1.

Criar o arquivo de programa Q#

  1. Abra o Visual Studio Code.
  2. Abra o menu Arquivo e escolha Novo Arquivo de Texto para criar um novo arquivo.
  3. Salve o arquivo como Main.qs.

Escreva seu código Q# para o gerador de bits aleatório no Main.qs arquivo.

Definir a operação Main

A operação Main é o ponto de entrada do programa. Copie o seguinte código em seu Main.qs arquivo:

operation Main(): Result{

    // Your code goes here

}

Alocar um qubit

Para começar, aloque um qubit com a instrução use . Em Q#, cada qubit que você alocar com use começa no estado $\ket{0}$ por padrão. Para alocar um único qubit, copie o seguinte código em seu programa:

operation Main(): Result{

    // Allocate a qubit
    use q = Qubit();
}

Colocar o qubit em um estado de superposição

Neste ponto, você não pode gerar um bit aleatório do qubit porque o qubit está no estado $\ket{0}$. Se você medir o estado desse qubit, a medida retornará um valor de bit de 0 cada vez.

Para gerar um bit aleatório com base na medida do qubit, primeiro você precisa colocar o qubit em uma superposição do estado $\ket{0}$ e do estado $\ket{1}$. Para colocar o qubit em um estado de superposição, aplique uma operação Hadamard ao qubit. A operação Hadamard transforma o qubit do estado $\ket{0}$ para uma superposição igual dos estados $\ket{0}$ e $\ket{1}$.

$$ H \ket{0} = \frac{1}{\sqrt{2}} (\ket{0} + \ket{1}) $$

Para aplicar uma operação Hadamard ao qubit em Q#, use a operação H.

operation Main(): Result{

    use q = Qubit();
    H(q);
}

Observação

Quando você aplica uma operação quântica a um qubit em Q#, a operação não retorna um valor. Em vez disso, as operações afetam o estado do qubit.

Medir o qubit

Como o qubit está agora em um estado de superposição igual, quando você mede o qubit, você tem 50% chance de que a medida retorne 0 e 50% chance de que a medida retorne um 1.

Para medir o valor do qubit em Q#, use a M operação e armazene o valor da medida na result variável:

operation Main(): Result{

    use q = Qubit();
    H(q);
    let result = M(q);
}

Redefinir o qubit

Em Q#, um qubit deve estar no estado $\ket{0}$ antes que você possa liberar o qubit. Utilize a operação Reset para resetar o qubit ao estado $\ket{0}$.

operation Main(): Result{

    use q = Qubit();
    H(q);
    let result = M(q);
    Reset(q);
}

Retornar o resultado da medição

Por fim, retorne o resultado da medida com a instrução return . Esse resultado é um bit aleatório, 0 ou 1 com probabilidade igual. Copie o seguinte código em seu Main.qs arquivo:

operation Main(): Result{

    use q = Qubit();
    H(q);
    let result = M(q);
    Reset(q);
    return result;
}

Executar seu programa de gerador de bits aleatório

Você criou um programa Q# chamado Main.qs que aloca um qubit, coloca o qubit em um estado de superposição igual, mede o qubit, redefine o qubit e retorna o resultado da medida. Aqui está um resumo do seu código Q#:

operation Main() : Result {
    // Allocate a qubit.
    use q = Qubit();

    // Set the qubit into superposition of 0 and 1 using the Hadamard 
    H(q);

    // Measure the qubit and store the result.
    let result = M(q);

    // Reset qubit to the |0〉 state.
    Reset(q);

    // Return the result of the measurement.
    return result;
}

Observação

O // símbolo representa comentários opcionais que explicam cada etapa do programa. Os comentários são ignorados pelo compilador.

Para executar seu programa no simulador interno, escolha a lente Executar código acima da Main operação ou pressione Ctrl + F5. A saída é exibida no console de depuração do terminal.

O resultado é Zero ou, Onecada um com uma chance de 50%. O valor de medida desse bit em um computador quântico é realmente aleatório. Execute o programa várias vezes para ver por si mesmo como o resultado muda.

Na próxima unidade, você combina vários bits aleatórios para implementar a segunda parte do gerador de número aleatório quântico.