Exercício Parte 1 - Criar 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ê constrói seu gerador de números aleatórios quânticos em duas etapas. Esta unidade é o primeiro passo, que é gerar um único bit aleatório. Para gerar um bit aleatório, aloque um qubit no estado $\ket{0}$, coloque esse qubit em um estado de superposição e, em seguida, meça o qubit para produzir um valor de bit aleatório de 0 ou 1.

Criar o arquivo de programa Q#

  1. Abre Visual Studio Code.
  2. Abra o menu Arquivo e escolha Novo arquivo de texto para criar um novo arquivo.
  3. Guarde o ficheiro como Main.qs.

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

Definir a Main operação

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

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 aloca com use começa no estado $\ket{0}$ por defeito. Para alocar um único qubit, copie o seguinte código para o seu programa:

operation Main(): Result{

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

Coloque 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 medição retornará um valor de bit de 0 toda vez.

Para gerar um bit aleatório a partir da medição de 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}$ em 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 seu qubit em Q#, use a operação H.

operation Main(): Result{

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

Nota

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.

Meça o qubit

Como o qubit agora está num estado de superposição igual, quando se mede o qubit tem uma probabilidade de 50% de que a medição retorne um 0 e uma probabilidade de 50% de que a medição retorne um 1.

Para medir o valor de qubit em Q#, use a M operação e armazene o valor de medição 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 redefinir o qubit para o estado $\ket{0}$.

operation Main(): Result{

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

Devolver o resultado da medição

Por fim, retorne o resultado da medição com a instrução return. Este resultado é um bit aleatório, 0 ou 1 com igual probabilidade. Copie o seguinte código no ficheiro Main.qs :

operation Main(): Result{

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

Execute seu programa gerador de bits aleatórios

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, em seguida, retorna o resultado da medição. Aqui está uma recapitulação 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;
}

Nota

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

Para executar o seu programa no simulador integrado, escolha a opção de código "Executar" acima da operação , ou pressione Main. O resultado aparece na consola de depuração no terminal.

O resultado é ou Zero ou One, cada um com 50% de probabilidade. O valor de medição deste bit em um computador quântico é verdadeiramente 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 seu gerador quântico de números aleatórios.