Tipos de dados específicos do quântico

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

Qubit

Q# trata os qubits como itens opacos que podem ser transmitidos para funções e operações, mas que só podem ser interagidos ao transmiti-los para instruções nativas do processador quântico de destino. Estas instruções são sempre definidas na forma de operações, uma vez que a 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 de os qubits poderem ser transmitidos como argumentos de entrada, é imposta pela necessidade de que as funções só possam chamar outras funções e não possam chamar operações.

As Q# bibliotecas são compiladas num conjunto padrão de operações intrínsecas, ou seja, operações que não têm definição para a respetiva implementação no idioma. Após a segmentação, as implementações que as expressam em termos das instruções nativas do destino de execução estão ligadas pelo compilador. Assim Q# , um programa combina estas 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. Desta forma, Q# torna muito fácil expressar a lógica subjacente aos algoritmos quânticos e híbridos-clássicos, ao mesmo tempo que é muito geral no que diz respeito à estrutura de uma máquina de destino e à sua realização do estado quântico.

Dentro de Q# si, não existe nenhum tipo ou construção que Q# represente o estado quântico. Em vez disso, um qubit representa a unidade física endereçável mais pequena num computador quântico. Como tal, um qubit é um item de longa duração, pelo Q# que não precisa de tipos lineares. Assim, não nos referimos explicitamente ao estado no Q#, mas descrevemos como o estado é transformado pelo programa, por exemplo, através da aplicação de operações como X e H. Semelhante à forma como um programa de sombreado gráfico acumula uma descrição das transformações para cada vértice, um programa quântico em acumula transformações para Q# estados quânticos, representado como referências totalmente opacas à estrutura interna de uma máquina de destino.

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

Pauli

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

Resultado

O Result tipo especifica o resultado de uma medição quântica. Q# espelha a maior parte do hardware quântico ao fornecer medidas em produtos de operadores Pauli de qubit único; um Result de Zero indica que o valor eigenvalue +1 foi medido e um Result de One indica que o valor eigenvalue -1 foi medido. Ou seja, Q# representa eigenvalues pela potência à qual -1 é elevado. Esta convenção é mais comum na comunidade de algoritmos quânticos, uma vez que mapeia mais de perto os bits clássicos.