1. gyakorlat – Kvantum véletlenszerű bitgenerátor létrehozása
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
- Nyissa meg a Visual Studio Code-ot.
- 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.
- Mentse a fájlt
Main.qsné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.