Compartilhar via


Tipos de dados específicos do Quantum

Este tópico descreve o tipo de Qubit, juntamente com dois outros tipos que são um pouco específicos para o domínio quântico: Pauli e Result.

O Qubit

Q# trata qubits como itens opacos que podem ser passados para funções e operações, mas só podem ser interagidos passando-os para instruções nativas para o processador quântico de destino. Essas instruções são sempre definidas na forma de operações, pois sua intenção é modificar o estado quântico. A restrição de que as funções não podem modificar o estado quântico, apesar do fato de que qubits podem ser passados como argumentos de entrada, é imposta pela exigência de que as funções só podem chamar outras funções e não podem chamar operações.

As bibliotecas Q# são compiladas em relação a um conjunto padrão de operações intrínsecas, ou seja, operações que não têm nenhuma definição para sua implementação dentro do idioma. Ao direcionar, as implementações que as expressam em termos de instruções nativas ao destino de execução são vinculadas pelo compilador. Um programa Q#, portanto, combina essas operações conforme definido por um computador de destino para criar novas operações de nível superior para expressar a computação quântica. Dessa forma, Q# torna muito fácil expressar a lógica subjacente a algoritmos quânticos quânticos e quânticos clássicos híbridos, além de ser muito geral em relação à estrutura de uma máquina de destino e à sua realização do estado quântico.

Dentro Q# em si, não há nenhum tipo ou construção em Q# que represente o estado quântico. Em vez disso, um qubit representa a menor unidade física endereçável em um computador quântico. Como tal, um qubit é um item de longa duração, portanto, Q# não tem necessidade de tipos lineares. Portanto, não nos referimos explicitamente ao estado dentro de Q#, mas descrevemos como o estado é transformado pelo programa, por exemplo, por meio da aplicação de operações como X e H. Semelhante a como um programa de sombreador gráfico acumula uma descrição de transformações em cada vértice, um programa quântico em Q# acumula transformações em estados quânticos, representados como referências totalmente opacas à estrutura interna de um computador de destino.

Um programa Q# não tem capacidade de introspecção no estado de um qubit e, portanto, é totalmente independente sobre o que é um estado quântico ou sobre como ele é realizado. Em vez disso, um programa pode chamar operações como Measure para aprender informações sobre o estado quântico da computação.

Pauli

Os valores do tipo Pauli especificar um operador Pauli de qubit único; as possibilidades são PauliI, PauliX, PauliYe PauliZ. Pauli valores são usados principalmente para especificar a base para uma medida quântica.

Resultado

O tipo Result especifica o resultado de uma medida quântica. Q# espelha a maioria do hardware quântico fornecendo medidas em produtos de operadores Pauli de qubit único; um Result de Zero indica que o eigenvalue +1 foi medido e um Result de One indica que o eigenvalue -1 foi medido. Ou seja, Q# representa eigenvalues pelo poder ao qual -1 é gerado. Essa convenção é mais comum na comunidade de algoritmos quânticos, pois é mapeada mais de perto para bits clássicos.