1. gyakorlat – Kvantum véletlenszerű bitgenerátor létrehozása

Befejeződött

Az előző leckében megismerkedett egy Q#-program alapvető építőelemével. Most már készen áll az első kvantumprogram megírására. Ebben az egységben egy kvantumprogramot ír, amely valóban véletlenszerű bitet hoz létre.

A kvantum véletlenszerű számgenerátort két lépésben kell létrehoznia. Ez az egység az első lépés, amely egyetlen véletlenszerű bitet hoz létre. Véletlenszerű bit létrehozásához $\ket{0}$ állapotú qubitet kell lefoglalnia, a qubitet szuperpozíciós állapotba kell helyeznie, majd a qubitet úgy kell mérnie, hogy egy véletlenszerű bit értéke 0 vagy 1 legyen.

A Q#-programfájl létrehozása

  1. Nyissa meg a Visual Studio Code-ot.
  2. Nyissa meg a Fájl menüt, majd válassza az Új szövegfájl lehetőséget egy új fájl létrehozásához.
  3. Mentse a fájlt Main.qs néven.

Írja be a Q#-kódot a véletlenszerű bitgenerátorhoz a Main.qs fájlban.

Határozza meg a Main műveletet

A Main művelet a program belépési pontja. Másolja a következő kódot a Main.qs fájlba:

operation Main(): Result{

    // Your code goes here

}

Qubit kiosztása

Első lépésként foglaljon le egy qubitet az use utasítással. A Q#-ban minden lefoglalt use qubit alapértelmezés szerint $\ket{0}$ állapotban kezdődik. Egyetlen qubit lefoglalásához másolja a következő kódot a programba:

operation Main(): Result{

    // Allocate a qubit
    use q = Qubit();
}

A qubit elhelyezése szuperpozíciós állapotba

Jelenleg nem hozhat létre véletlenszerű bitet a qubitből, mert a qubit $\ket{0}$ állapotban van. Ha ennek a qubitnek az állapotát méri, a mérés minden alkalommal egy 0-s bitértéket ad vissza.

Ha véletlenszerű bitet szeretne létrehozni a qubitmérésből, először a qubitet a $\ket$ állapot és a $\ket{0}{1}$ állapot szuperpozíciójába kell helyeznie. Ha a qubitet szuperpozíciós állapotba szeretné helyezni, alkalmazzon hadamard műveletet a qubitre. A Hadamard művelet átalakítja a qubitet a $\ket{0}$ állapotból a $\ket{0}$ és a $\ket{1}$ állapot egyenlő szuperpozíciójára.

$$ H \ket{0} = \frac{1}{\sqrt{2}} (\ket{0} + \ket{1}) $$

Ha Hadamard-műveletet szeretne alkalmazni a qubitre q#-ban, használja a H következő műveletet:

operation Main(): Result{

    use q = Qubit();
    H(q);
}

Feljegyzés

Ha kvantumműveletet alkalmaz egy qubitre a Q#-ban, a művelet nem ad vissza értéket. Ehelyett a műveletek befolyásolják a qubit állapotát.

A qubit mérése

Mivel a qubit most egyenlő szuperpozíciós állapotban van, a qubit mérésekor 50% esély van arra, hogy a mérés 0 és 50% esélyt ad vissza, hogy a mérés 1 értéket ad vissza.

A Q# qubitértékének méréséhez használja a M műveletet, és tárolja a mérési értéket a result változóban:

operation Main(): Result{

    use q = Qubit();
    H(q);
    let result = M(q);
}

A qubit alaphelyzetbe állítása

A Q#-ban a qubitnek $\ket{0}$ állapotban kell lennie, mielőtt felszabadíthatja a qubitet. Reset A művelettel állítsa vissza a qubitet a $\ket{0}$ állapotra.

operation Main(): Result{

    use q = Qubit();
    H(q);
    let result = M(q);
    Reset(q);
}

A mérési eredmény visszaadása

Végül adja vissza a mérési eredményt az return utasítással. Ez az eredmény egy véletlenszerű bit, 0 vagy 1 egyenlő valószínűséggel. Másolja a következő kódot a Main.qs fájlba:

operation Main(): Result{

    use q = Qubit();
    H(q);
    let result = M(q);
    Reset(q);
    return result;
}

A véletlenszerű bitgenerátorprogram futtatása

Létrehozott egy Q#-programot Main.qs , amely egy qubitet foglal le, egyenlő szuperpozíciós állapotba helyezi a qubitet, méri a qubitet, alaphelyzetbe állítja a qubitet, majd visszaadja a mérési eredményt. Íme egy összefoglaló a Q#-kódról:

operation Main() : Result {
    // Allocate a qubit.
    use q = Qubit();

    // Set the qubit into superposition of 0 and 1 using the Hadamard 
    H(q);

    // Measure the qubit and store the result.
    let result = M(q);

    // Reset qubit to the |0〉 state.
    Reset(q);

    // Return the result of the measurement.
    return result;
}

Feljegyzés

A // szimbólum a program minden lépését magyarázó nem kötelező megjegyzéseket jelöl. A fordító figyelmen kívül hagyja a megjegyzéseket.

Ha a programot a beépített szimulátoron szeretné futtatni, válassza a művelet fölötti kódlencsét, vagy nyomja le a MainCtrl + F5 billentyűkombinációt. A kimenet megjelenik a terminál hibakeresési konzolján.

Az eredmény vagy Zero, vagy One, mindkettő 50% eséllyel. Ennek a bitnek a mérési értéke egy kvantumszámítógépen valóban véletlenszerű. Futtassa többször a programot, és nézze meg, hogyan változik az eredmény.

A következő egységben több véletlenszerű bitet egyesít a kvantum véletlenszerű számok előállítására szolgáló generátor második részének implementálásához.