Partilhar via


Tipos de dados específicos do quântico

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

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 do processador quântico de destino. Tais instruções são sempre definidas na forma de operações, uma vez que 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 os 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 definição para sua implementação dentro da linguagem. Ao segmentar, as implementações que as expressam em termos das instruções nativas do destino de execução são vinculadas pelo compilador. Assim, um programa Q# combina essas operações conforme definido por uma máquina alvo para criar novas operações de nível mais alto para expressar a computação quântica. Desta forma, Q# torna muito fácil expressar a lógica subjacente aos algoritmos quânticos e híbridos quânticos-clássicos, ao mesmo tempo em que é muito geral no que diz respeito à estrutura de uma máquina-alvo e sua realização do estado quântico.

Dentro Q# 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, então Q# não tem necessidade de tipos lineares. Assim, não nos referimos explicitamente ao estado dentro Q#, mas descrevemos como o estado é transformado pelo programa, por exemplo, através 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 para cada vértice, um programa quântico em Q# acumula transformações para estados quânticos, representados como referências inteiramente opacas à estrutura interna de uma máquina alvo.

Um programa Q# não tem capacidade de introspeção no estado de um qubit e, portanto, é inteiramente agnóstico 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 medição quântica.

Resultado

O tipo Result especifica o resultado de uma medição quântica. Q# espelha a maioria do hardware quântico, fornecendo medições em produtos de operadores Pauli de qubit único; Uma Result de Zero indica que o autovalor +1 foi medido, e uma Result de One indica que o autovalor -1 foi medido. Ou seja, Q# representa autovalores pelo poder ao qual -1 é elevado. Esta convenção é mais comum na comunidade de algoritmos quânticos, pois mapeia mais de perto os bits clássicos.