Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Conjugações são comuns em cálculos quânticos. Em termos matemáticos, são padrões da forma U†VU para duas transformações unitárias U e V. Esse padrão é relevante devido às particularidades da memória quântica: os cálculos constroem correlações quânticas, ou emaranhamento, para usar os ativos únicos do quantum. No entanto, isso também significa que, uma vez que uma sub-rotina não precisa mais de seus qubits, esses qubits não podem ser facilmente redefinidos e liberados, uma vez que observar seu estado afetaria o resto do sistema. Por essa razão, o efeito de um cálculo anterior geralmente precisa ser revertido antes de liberar e reutilizar a memória quântica.
Q# portanto, tem uma construção dedicada para expressar cálculos que exigem tal limpeza. As expressões consistem em dois blocos de código, um contendo a implementação de U e outro contendo a implementação de V. O de descomputação (ou seja, a aplicação de U†) é feito automaticamente como parte da expressão.
A expressão assume a forma
within {
<statements>
}
apply {
<statements>
}
em que <statements> é substituído por qualquer número de declarações que definam a aplicação de U e V respectivamente.
Ambos os blocos podem conter cálculos clássicos arbitrários, além das restrições usuais para gerar automaticamente versões adjuntas que se aplicam ao bloco within. As variáveis ligadas mutavelmente usadas como parte do bloco within não podem ser reatribuídas como parte do bloco apply.