Megosztás a következőn keresztül:


Funktoralkalmazás

A funktorok olyan gyárak, amelyek lehetővé teszik a hívhatóak speciális specializációs implementációinak elérését. Q#jelenleg két funktort támogat; Controlledmindkettő Adjoint alkalmazható a szükséges specializációkat biztosító műveletekre.

A Controlled funktorok ingáznak Adjoint ; ha ApplyUnitary olyan művelet, amely mindkét funktort támogatja, akkor nincs különbség Controlled Adjoint ApplyUnitary az és Adjoint Controlled ApplyUnitarya . Mindkettő ugyanazzal a típussal rendelkezik, és meghíváskor végrehajtja a controlled adjoint specializációhoz meghatározott implementációt.

Mellékjeles funktor

Ha a művelet ApplyUnitary a kvantumállapot egy egységes transzformációs U-ját határozza meg, Adjoint ApplyUnitary hozzáfér az U† implementációhoz. A Adjoint funktor saját inverze, mivel (U†)† = U definíció szerint. Például ugyanaz, Adjoint Adjoint ApplyUnitary mint ApplyUnitarya .

A kifejezés Adjoint ApplyUnitary ugyanolyan típusú művelet, mint ApplyUnitaryaz ; ugyanazzal az argumentumsal és visszatérési típussal rendelkezik, és ugyanazokat a funktorokat támogatja. Mint minden műveletet, ez is meghívható egy megfelelő típusú argumentummal. Az alábbi kifejezés az argumentum argszomszédos specializációját ApplyUnitary alkalmazza:

Adjoint ApplyUnitary(arg) 

Szabályozott funktor

A kvantumállapot Controlled ApplyUnitary egységes transzformációs U-ját meghatározó művelet ApplyUnitary esetében a(z) |1⟩ állapotú vezérlő qubitek tömbjének U feltételesen alkalmazandó implementációja érhető el.

A kifejezés Controlled ApplyUnitary olyan művelet, amelynek visszatérési típusa és műveleti jellemzői megegyeznekApplyUnitary, ami azt jelenti, hogy ugyanazokat a funktorokat támogatja. Egy típusú (Qubit[], <TIn>)argumentumot vesz fel , ahol <TIn> az argumentumtípust ApplyUnitarykell lecserélni, figyelembe véve az egyenrangú egyenértékűséget .

Művelet Argumentum típusa Szabályozott argumentumtípus
X Qubit (Qubit[], Qubit)
SWAP (Qubit, Qubit) (Qubit[], (Qubit, Qubit))

cs Ha egy qubittömböt tartalmaz, q1 és q2 két qubitet tartalmaz, és a művelet SWAP itt van definiálva, akkor az alábbi kifejezés a(z) |1⟩ állapotban cs lévő összes qubit állapotát q1 q2 cseréli le:

Controlled SWAP(cs, (q1, q2))

Feljegyzés

A művelet feltételes alkalmazása a(z) |1⟩ állapottól eltérő állapotban lévő vezérlő qubitek alapján úgy érhető el, hogy a megfelelő szomszédos átalakítást alkalmazza a vezérlő qubitekre a meghívás előtt, majd alkalmazza az inverzeket. A(z) |0⟩ állapotú összes vezérlő qubit átalakításának konfigurálása például a X művelet előtt és után történő alkalmazásával érhető el. Ez kényelmesen kifejezhető egy konjugációval. Ennek ellenére az ilyen szerkezet részletessége további támogatást érdemelhet egy kompaktabb szintaxishoz a jövőben.