Kvantově specifické datové typy
Toto téma popisuje Qubit
typ spolu se dvěma dalšími typy, které jsou poněkud specifické pro kvantovou doménu: Pauli
a Result
.
Qubit
Q# zachází s qubity jako s neprůhlednými položkami, které lze předat funkcím i operacím, ale lze s nimi pracovat pouze předáním instrukcím nativním pro cílový kvantový procesor. Tyto instrukce jsou vždy definovány ve formě operací, protože jejich cílem je upravit kvantový stav. Omezení, že funkce nemohou měnit kvantový stav, přestože qubity lze předávat jako vstupní argumenty, je vynuceno tím, že funkce mohou volat pouze jiné funkce a nemohou volat operace.
Knihovny Q# jsou kompilovány proti standardní sadě vnitřních operací, což znamená operace, které nemají žádnou definici pro jejich implementaci v rámci jazyka. Při cílení jsou implementace, které je vyjadřují ve smyslu instrukcí nativních pro cíl provádění, propojeny kompilátorem. Program Q# tak kombinuje tyto operace definované cílovým počítačem a vytváří nové operace vyšší úrovně pro vyjádření kvantového výpočtu. Tímto způsobem je velmi snadné vyjádřit logiku, Q# která je základem kvantového a hybridního kvantového a klasického algoritmu, a zároveň je velmi obecná s ohledem na strukturu cílového počítače a jeho realizaci kvantového stavu.
Uvnitř Q# sebe není žádný typ nebo konstruktor, Q# který představuje kvantový stav.
Místo toho qubit představuje nejmenší adresovatelnou fyzickou jednotku v kvantovém počítači.
Qubit je tedy dlouhodobá položka, takže Q# nepotřebuje lineární typy.
Proto explicitně neodkazujeme na stav v rámci Q#, ale spíše popisujeme, jak je stav transformován programem, například prostřednictvím použití operací, jako X
je a H
.
Podobně jako program grafického shaderu shromažďuje popis transformací každého vrcholu, kvantový program v Q# systému hromadí transformace do kvantových stavů, které jsou reprezentovány jako zcela neprůsažné odkazy na vnitřní strukturu cílového počítače.
Program Q# nemá schopnost introspekce do stavu qubitu, a proto je zcela nezávislý na tom, co je kvantový stav nebo jak je realizován.
Program může spíše volat operace, jako Measure
je získání informací o kvantovém stavu výpočtu.
Pauli
Hodnoty typu Pauli
určují pauliho operátor s jedním qubitem; možnosti jsou PauliI
, PauliX
PauliY
, a PauliZ
.
Pauli
hodnoty se používají především k určení základu pro kvantové měření.
Výsledek
Typ Result
určuje výsledek kvantového měření.
Q# zrcadlí většinu kvantového hardwaru tím, že poskytuje měření v produktech jedno qubitových operátorů Pauli; a Result
of Zero
označuje, že byla změřena hodnota +1, a Result
hodnota indikuje One
, že byla změřena hodnota -1. To znamená, že představuje eigenvalues mocninou, Q# na kterou je hodnota -1 zvýšena.
Tato konvence je běžnější v komunitě kvantových algoritmů, protože se více mapuje ke klasickým bitům.