Rövid útmutató: Az első Q# program létrehozása
Megtudhatja, hogyan írhat olyan alapszintű Q# programot, amely bemutatja az összefonódást, a kvantum-számítástechnika egyik fő koncepcióját.
Ha két vagy több qubit össze van fonva, kvantuminformációkat osztanak meg, ami azt jelenti, hogy bármi is történik az egyik qubitkel, az a másikhoz is megtörténik. Ebben a rövid útmutatóban létrehoz egy adott két qubites, összefonódott állapotot, amelyet Bell-párnak hívunk. Ha egy harangpárban az egyik qubitet az állapotban $\ket{0}$ méri, akkor tudja, hogy a másik qubit is az $\ket{0}$ állapotban van mérés nélkül. További információ: Kvantum-összefonódás.
Ebben a rövid útmutatóban a következőket hajtja végre:
- Hozzon létre egy Q# fájlt.
- Foglaljon le egy qubitpárt.
- Fonja össze a qubiteket.
Előfeltételek
- A Visual Studio Code legújabb verziója.
- Az Azure Quantum Development Kit (QDK) bővítmény. A telepítés részleteiért lásd : A Quantum Development Kit beállítása.
Q# Fájl létrehozása
- Nyissa meg a Visual Studio Code-ot.
- Válassza az Új szövegfájl kiválasztása> lehetőséget.
- Mentse a fájlt
Main.qs
néven. A .qs bővítmény egy Q# programot jelöl.
Kód írása Q#
Main.qs
A fájlban kövesse az alábbi lépéseket egy qubitpár összefűzéséhez és méréséhez.
Kvantumtár importálása
A QDK tartalmazza a Q# kvantumprogramokhoz előre definiált függvényeket és műveleteket tartalmazó standard kódtárat. A használatukhoz először importálnia kell a megfelelő tárat.
A programban egy utasítással import
nyissa meg a tárat Microsoft.Quantum.Diagnostics
. Ez hozzáférést biztosít az összes funkcióhoz és művelethez, beleértve DumpMachine()
az összefonódott állapot megjelenítéséhez később használt összes funkciót és műveletet.
import Microsoft.Quantum.Diagnostics.*;
Művelet definiálása
A megfelelő kódtárak importálása után határozza meg a kvantumműveletet, valamint annak bemeneti és kimeneti értékeit. Ebben a rövid útmutatóban a művelet a következő Main
: . Itt fogja megírni a fennmaradó Q# kódot két qubit lefoglalásához, kezeléséhez és méréséhez.
Main
nem vesz fel paramétereket, és két Result
értéket ad vissza, Zero
vagy One
, amelyek a qubitmérések eredményeit jelölik:
operation Main() : (Result, Result) {
// Your entanglement code goes here.
}
Két qubit lefoglalása
A Main
művelet jelenleg üres, ezért a következő lépés két qubit q1
és q2
. A Q#következő kulcsszóval foglalhatja le a use
qubiteket:
// Allocate two qubits, q1 and q2, in the 0 state.
use (q1, q2) = (Qubit(), Qubit());
Feljegyzés
Ebben Q#az esetben a qubitek mindig az $\ket{0}$ államban vannak lefoglalva.
Egy qubit elhelyezése szuperpozícióba
A qubitek q1
és q2
állapotban $\ket{0}$ vannak. Ahhoz, hogy előkészítse a qubiteket az összefonódásra, az egyiket egy páros szuperpozícióba kell helyeznie, ahol 50% esélye van arra, hogy a mérést $\ket{0}$ úgy vagy $\ket{1}$.
A Hadamard, H
, művelet alkalmazásával qubitet helyez a szuperpozícióba:
// Put q1 into an even superposition.
H(q1);
Az eredményként kapott állapot q1
a $\frac{{1}{\sqrt{2}}(\ket{{0}+\ket{1})$, amely az $\ket{0}$ és $\ket{{1}$a .
A qubitek összefonódása
Most már készen áll a qubitek összefonódására a controlled-NOT, CNOT
, művelettel. CNOT
egy vezérlőművelet, amely két qubitet vesz igénybe, az egyik vezérlőként, a másik pedig célként szolgál.
Ebben a rövid útmutatóban vezérlő qubitként és q2
cél qubitként kell beállítaniaq1
. Ez azt jelentiCNOT
, hogy a rendszer megfordítja az állapotot $\ket{1}$q2
q1
.
// Entangle q1 and q2, making q2 depend on q1.
CNOT(q1, q2);
Mindkét qubit eredményül kapott állapota a Bell-pár $\frac{{1}{\sqrt{2}}(\ket{00}+\ket{{11})$.
Tipp.
Ha szeretné megtudni, hogy a Hadamard- és CNOT-műveletek hogyan alakítják át a qubitek állapotát, tekintse meg a kvantumműveletekkel való összefonódás létrehozása című témakört.
Az összefonódott állapot megjelenítése
A qubitek mérése előtt fontos ellenőrizni, hogy az előző kód sikeresen összekapcsolja-e őket. A kódtár részét Microsoft.Quantum.Diagnostics
képező műveletet a program aktuális állapotának kimenetére használhatja:DumpMachine
Q#
// Show the entangled state of the qubits.
DumpMachine();
A qubitek mérése
Most, hogy ellenőrizte, hogy a qubitek össze vannak-e fonva, a M
művelettel mérheti őket. A kvantumállapotok mérése q1
és q2
összecsukása egyenletes valószínűségű vagy One
akár Zero
nagyobb valószínűséggel.
Ebben Q#a kulcsszóval let
deklarálhat egy új változót. A változók m1
mérési eredményeinek q1
tárolásához és q2
deklarálásához és m2
a következő módon:
// Measure q1 and q2 and store the results in m1 and m2.
let (m1, m2) = (M(q1), M(q2));
A qubitek alaphelyzetbe állítása
Mielőtt az egyes Q# programok végén kibocsátanák, a qubiteknek állapotban $\ket{0}$ kell lenniük. Ezt a Reset
művelettel teheti meg:
// Reset q1 and q2 to the 0 state.
Reset(q1);
Reset(q2);
A mérési eredmények visszaadása
Végül a Main
művelet befejezéséhez és az összefonódás állapotának megfigyeléséhez adja vissza a következő mérési eredményeket m1
m2
:
// Return the measurement results.
return (m1, m2);
Tipp.
Ha többet szeretne megtudni egy Q# függvényről vagy műveletről, mutasson rá.
A Q# kód futtatása
Gratulálunk! Ön írt egy Q# programot, amely összefon két qubitet, és létrehoz egy Bell-párt.
A végleges Q# programnak így kell kinéznie:
import Microsoft.Quantum.Diagnostics.*;
operation Main() : (Result, Result) {
// Allocate two qubits, q1 and q2, in the 0 state.
use (q1, q2) = (Qubit(), Qubit());
// Put q1 into an even superposition.
// It now has a 50% chance of being measured as 0 or 1.
H(q1);
// Entangle q1 and q2, making q2 depend on q1.
CNOT(q1, q2);
// Show the entangled state of the qubits.
DumpMachine();
// Measure q1 and q2 and store the results in m1 and m2.
let (m1, m2) = (M(q1), M(q2));
// Reset q1 and q2 to the 0 state.
Reset(q1);
Reset(q2);
// Return the measurement results.
return (m1, m2);
}
A program futtatásához és mindkét qubit eredményének megtekintéséhez válassza a Futtatás műveletet, vagy nyomja le a Main
Ctrl+F5 billentyűkombinációt
A programot többször is futtathatja, mindegyik más eredménnyel a hibakeresési konzolon. Ez a kvantummérések valószínűségi jellegét és a qubitek összefonódását mutatja be.
Ha például az eredmény az Zero
, a hibakeresési konzolnak így kell kinéznie:
DumpMachine:
Basis | Amplitude | Probability | Phase
-----------------------------------------------
|00⟩ | 0.7071+0.0000𝑖 | 50.0000% | 0.0000
|11⟩ | 0.7071+0.0000𝑖 | 50.0000% | 0.0000
Result: "(Zero, Zero)"
Következő lépés
A kvantum-összefonódással Q#kapcsolatos további információkért tekintse meg az oktatóanyagot: A kvantum-összefonódás felfedezése a következővel Q#: . Ez az oktatóanyag kiterjeszti az ebben a rövid útmutatóban tárgyalt fogalmakat, és segít egy fejlettebb összefonódási program megírásában.