Kvantumspecifikus adattípusok

Ez a témakör a típust Qubit ismerteti, valamint két másik típust, amelyek némileg a kvantumtartományra jellemzőek: Pauli és Result.

Qubit

Q# a qubiteket átlátszatlan elemekként kezeli, amelyek átadhatók mind a függvényeknek, mind a műveleteknek, de csak a célzott kvantumprocesszor natív utasításainak átadásával kezelhetők. Az ilyen utasítások mindig műveletek formájában vannak meghatározva, mivel a céljuk a kvantumállapot módosítása. A függvények által a kvantumállapot módosítására vonatkozó korlátozást annak ellenére, hogy a qubitek átadhatók bemeneti argumentumként, kényszeríti, hogy a függvények csak más függvényeket hívjanak meg, és ne tudjanak műveleteket meghívni.

A Q# kódtárak a belső műveletek standard készlete alapján vannak lefordítva, azaz olyan műveletekre, amelyek nem rendelkeznek definícióval a nyelven belüli implementálásukhoz. A célzáskor a végrehajtási célhoz natív utasításokat kifejező implementációkat a fordító összekapcsolja. A Q# program így egyesíti ezeket a műveleteket a célgép által meghatározott módon, hogy új, magasabb szintű műveleteket hozzon létre a kvantumszámítás kifejezéséhez. Ily módon Q# nagyon egyszerűvé teszi a kvantum- és hibrid kvantumklasszikus algoritmusok logikájának kifejezését, ugyanakkor nagyon általános a célgép struktúrája és a kvantumállapot megvalósítása tekintetében is.

Q# Önmagában Q# nincs olyan típus vagy szerkezet, amely a kvantumállapotot jelöli. Ehelyett a qubit a kvantumszámítógép legkisebb címezhető fizikai egységét jelöli. Ezért a qubit hosszú élettartamú elem, ezért Q# nincs szükség lineáris típusokra. Ezért nem kifejezetten a (Q#) állapotra hivatkozunk, hanem azt írjuk le, hogy a program hogyan alakítja át az állapotot, például az és Ha műveletek X alkalmazásával. Ahhoz hasonlóan, ahogyan a grafikus árnyékoló program az egyes csúcspontokon történő átalakítások leírását gyűjti össze, a kvantumprogram Q# a kvantumállapotok átalakítását halmozja fel, ami teljesen átlátszatlan hivatkozásként jelenik meg a célgép belső szerkezetére.

A Q# programok nem képesek betekinteni a qubitek állapotába, így teljesen agnosztikusak azzal kapcsolatban, hogy mi a kvantumállapot, vagy hogyan valósul meg. A programok inkább olyan műveleteket hívhatnak meg, mint Measure a számítás kvantumállapotának megismerése.

Pauli

A típusértékek Pauli egy qubites Pauli operátort adnak meg; a lehetőségek a következők PauliI: , PauliX, PauliYés PauliZ. Pauli értékek elsősorban a kvantummérés alapjának megadására szolgálnak.

Eredmény

A Result típus egy kvantummérés eredményét adja meg. Q# a legtöbb kvantumhardver tükrözése az egy qubites Pauli-operátorok termékeinek méréseivel; az Result a Zero azt jelzi, hogy a +1 eigenvalue mérése megtörtént, az a Result pedig One azt jelzi, hogy a -1 eigenvalue mérése megtörtént. Ez azt jelenti, hogy az eigenvalues értékeket az a hatalom jelöli, Q# amelyre a -1 fel van emelve. Ez a konvenció gyakoribb a kvantum-algoritmusok közösségében, mivel közelebbről megfelel a klasszikus biteknek.