Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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étrehozunk egy adott két qubites, összefonódott állapotot, amelyet Bell-párnak hívunk. Egy Bell-párban, ha az egyik qubitet a $\ket{0}$ állapotban méri, akkor tudja, hogy a másik qubit is mérés nélkül az $\ket{0}$ állapotban van. 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.
- A Microsoft Quantum Development Kit (QDK) bővítmény. A telepítés részleteiért lásd a Microsoft Quantum Development Kit beállítását.
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.qsnéven. A .qs bővítmény egy Q# programot jelöl.
Írd meg a Q# kódot
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 használjon egy import utasítást a Std.Diagnostics könyvtár megnyitásához. Ez hozzáférést biztosít a kódtár összes függvényéhez és műveletéhez, beleértve a DumpMachine is, amelyet később az összefonódott állapot megjelenítésére használ.
import Std.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.
}
Oszd ki a két qubitot
A Main művelet jelenleg üres, ezért a következő lépés két qubit, q1 és q2 lefoglalása. A Q#-ben a use kulcsszóval rendelhet qubiteket.
// Allocate two qubits, q1 and q2, in the 0 state.
use (q1, q2) = (Qubit(), Qubit());
Feljegyzés
A Q# qubitek mindig a $\ket{0}$ állapotban vannak allokálva.
Helyezz egy qubitot szuperpozícióba
A qubitek q1 és q2 a $\ket{0}$ állapotban vannak. Ahhoz, hogy előkészítse a qubiteket az összefonódásra, az egyiket egyenletes szuperpozícióba kell helyeznie, ahol 50% az esélye annak, hogy a mérés eredménye $\ket{0}$ vagy $\ket{1}$ lesz.
A Hadamardqubitet helyez a szuperpozícióba:
// Put q1 into an even superposition.
H(q1);
Az eredményként kapott állapot q1$\frac{{1}{\sqrt{2}}(\ket{{0}+\ket{1})$, amely $\ket{0}$ és $\ket{{1}$ egyenletes szuperpozíciója.
A qubitek összefonódása
Most már készen áll, hogy összefonja a qubiteket 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 gyorsindítási útmutatóban a q1 qubitet állítja be vezérlő qubitként, és a q2 qubitet cél qubitként. Ez azt jelenti, hogy CNOT az állapotot q2 megfordítja, amikor q1 állapot $\ket{1}$.
// 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. Az DumpMachine műveletet, amely a Std.Diagnostics könyvtár része, használja a Q# program aktuális állapotának kiírásához:
// 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 q1 és q2 mérése összeomlasztja a kvantumállapotokat, és Zero vagy One állapotba kerülnek egyenlő valószínűséggel.
Ebben Q#a kulcsszóval let deklarálhat egy új változót. Az q1 és q2 mérési eredményeinek tárolásához deklarálja a m1 és m2 változókat a következőképpen:
// 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 m1m2:
// Return the measurement results.
return (m1, m2);
Tipp.
Ha többet szeretne megtudni egy Q# függvényről vagy műveletről, vigye az egeret fölé.
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 Std.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.