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


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

Q# Fájl létrehozása

  1. Nyissa meg a Visual Studio Code-ot.
  2. Válassza az Új szövegfájl kiválasztása> lehetőséget.
  3. 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 q2deklarálásához és m2a 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á.

Képernyőkép a Visual Studio Code H műveletének rámutatásakor megjelenő részletekrő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 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

Képernyőkép a Q# Visual Studio Code-ban található fájlról, amelyen látható, hogy hol található a

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.