Sdílet prostřednictvím


Datové typy specifické pro kvantové

Toto téma popisuje typ Qubit spolu se dvěma dalšími typy, které jsou poněkud specifické pro kvantovou doménu: Pauli a Result.

Qubit

Q# považuje qubity za neprůhledné položky, které je možné předat funkcím i operacím, ale dají se 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 záměrem je upravit kvantový stav. Omezení, které funkce nemůžou upravovat kvantový stav, přestože je možné qubity předat 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á, že operace, které nemají definici pro jejich implementaci v rámci jazyka. Při cílení jsou implementace, které je vyjadřují z hlediska pokynů nativních pro cíl spuštění, propojeny kompilátorem. Program Q# proto kombinuje tyto operace definované cílovým počítačem k vytvoření nových operací vyšší úrovně pro vyjádření kvantových výpočtů. Tímto způsobem Q# velmi usnadňuje vyjádření logiky základních kvantových a hybridních kvantových klasických algoritmů a zároveň velmi obecné s ohledem na strukturu cílového počítače a jeho realizaci kvantového stavu.

V Q# sám o sobě neexistuje žádný typ ani 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 popíšeme, jak je stav transformován programem, například prostřednictvím použití operací, jako jsou X a H. Podobně jako program shaderu grafiky shromažďuje popis transformací každého vrcholu, kvantový program v Q# hromadí transformace na kvantové stavy reprezentované jako zcela neprůsažné odkazy na vnitřní strukturu cílového počítače.

Program Q# nemá schopnost introspektovat stav qubitu, a proto je zcela nezávislý na tom, co je kvantový stav nebo jak se zjistí. Program může místo toho volat operace, jako je Measure, aby se dozvěděl informace o kvantovém stavu výpočtu.

Pauli

Hodnoty typu Pauli určují operátor Pauli s jedním qubitem; možnosti jsou PauliI, PauliX, PauliYa PauliZ. Pauli hodnoty se používají především k určení základu kvantového 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 operátorů Pauli s jedním qubitem; ResultZero označuje, že se změřila hodnota +1 a ResultOne označuje, že se změřila hodnota -1 eigenvalue. To znamená, Q# představuje eigenvalues pomocí mocniny, na které -1 je vyvolána. Tato konvence je v komunitě kvantových algoritmů častější, protože mapuje blíže ke klasickým bitům.