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, PauliXPauliY, 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.