Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
, PauliY
e 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.