Coniugazioni
Le coniugazioni sono comuni nei calcoli quantistici. In termini matematici, si tratta di modelli del formato U†VU per due trasformazioni unitari U e V. Questo modello è rilevante a causa delle peculiarità della memoria quantistica: i calcoli creano correlazioni quantistiche o entanglement, per sfruttare gli asset univoci del quantum. Tuttavia, ciò significa anche che una volta che una subroutine non ha più bisogno dei relativi qubit, tali qubit non possono essere facilmente reimpostati e rilasciati poiché l'osservazione dello stato influirà sul resto del sistema. Per questo motivo, l'effetto di un calcolo precedente deve in genere essere invertito prima di rilasciare e riutilizzare la memoria quantistica.
Q# ha quindi un costrutto dedicato per esprimere calcoli che richiedono una pulizia di questo tipo. Le espressioni sono costituite da due blocchi di codice, uno contenente l'implementazione di U e uno contenente l'implementazione di V. L'annullamento del calcolo , ovvero l'applicazione di U†, viene eseguita automaticamente come parte dell'espressione.
L'espressione assume il formato
within {
<statements>
}
apply {
<statements>
}
dove <statements>
viene sostituito con un numero qualsiasi di istruzioni che definiscono rispettivamente l'implementazione di U e V .
Entrambi i blocchi possono contenere calcoli classici arbitrari, a parte le normali restrizioni per la generazione automatica di versioni adiacenti applicabili al within
blocco. Le variabili associate mutably usate come parte del within
blocco potrebbero non essere riassegnate come parte del apply
blocco.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per