Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit onderwerp wordt het Qubit
type beschreven, samen met twee andere typen die enigszins specifiek zijn voor het kwantumdomein: Pauli
en Result
.
Qubit
Q# behandelt qubits als ondoorzichtige items die kunnen worden doorgegeven aan zowel functies als bewerkingen, maar kunnen alleen worden gebruikt door ze door te geven aan instructies die systeemeigen zijn voor de doel kwantumprocessor. Dergelijke instructies worden altijd gedefinieerd in de vorm van bewerkingen, omdat hun bedoeling is om de kwantumstatus te wijzigen. De beperking die functies niet kunnen wijzigen, ondanks het feit dat qubits kunnen worden doorgegeven als invoerargumenten, wordt afgedwongen door de vereiste dat functies alleen andere functies kunnen aanroepen en geen bewerkingen kunnen aanroepen.
De Q# bibliotheken worden gecompileerd op basis van een standaardset intrinsieke bewerkingen, wat betekent dat bewerkingen die geen definitie hebben voor hun implementatie in de taal. Bij het doel worden de implementaties die deze uitdrukken in termen van de instructies die systeemeigen zijn voor het uitvoeringsdoel, door de compiler gekoppeld. Een Q# programma combineert deze bewerkingen dus zoals gedefinieerd door een doelcomputer om nieuwe bewerkingen op een hoger niveau te maken om kwantumberekeningen uit te drukken. Op deze manier maakt Q# het heel eenvoudig om de logische onderliggende kwantum- en hybride kwantum-klassieke algoritmen uit te drukken, terwijl het ook erg algemeen is met betrekking tot de structuur van een doelmachine en de realisatie van de kwantumstatus.
Binnen Q# zelf is er geen type of constructie in Q# die de kwantumstatus vertegenwoordigt.
In plaats daarvan vertegenwoordigt een qubit de kleinste adresseerbare fysieke eenheid in een kwantumcomputer.
Als zodanig is een qubit een langlevend item, dus Q# geen lineaire typen nodig heeft.
Daarom verwijzen we niet expliciet naar de status binnen Q#, maar beschrijven we hoe de status wordt getransformeerd door het programma, bijvoorbeeld via de toepassing van bewerkingen zoals X
en H
.
Net als bij de manier waarop een grafische shader-programma een beschrijving van transformaties voor elk hoekpunt verzamelt, verzamelt een kwantumprogramma in Q# transformaties naar kwantumstatussen, vertegenwoordigd als volledig ondoorzichtige verwijzingen naar de interne structuur van een doelmachine.
Een Q#-programma heeft geen mogelijkheid om de toestand van een qubit in te voeren en is dus volledig agnostisch over wat een kwantumstatus is of over hoe deze wordt gerealiseerd.
In plaats daarvan kan een programma bewerkingen aanroepen, zoals Measure
voor informatie over de kwantumstatus van de berekening.
Pauli
Waarden van het type Pauli
een pauli-operator met één qubit opgeven; de mogelijkheden zijn PauliI
, PauliX
, PauliY
en PauliZ
.
Pauli
waarden worden voornamelijk gebruikt om de basis voor een kwantummeting op te geven.
Resultaat
Het Result
type geeft het resultaat van een kwantummeting aan.
Q# de meeste kwantumhardware spiegelt door metingen te leveren in producten van pauli-operators met één qubit; een Result
van Zero
geeft aan dat de +1 eigenwaarde is gemeten en een Result
van One
aangeeft dat de -1 eigenwaarde is gemeten. Dat wil gezegd, Q# eigenwaarden vertegenwoordigt door de macht waartoe -1 wordt verheven.
Deze conventie komt vaker voor in de kwantumalgoritmencommunity, omdat deze dichter bij klassieke bits wordt toegewezen.