Vytvoření kvantového propletení pomocí Q#

Dokončeno

Teď vytvoříme několik kvantových propletení pomocí Q# Azure Quantum Development Kit.

Operace Controlled NOT (CNOT)

Pokud jsou dva qubity propletené, stav jednoho qubitu závisí na stavu druhého qubitu. Proto k propletení dvou qubitů potřebujete operaci, která funguje na obou qubitech současně. Tomu se říká vícequbitová operace nebo brána.

K vytvoření kvantového propletení potřebujete vícequbitovou CNOT operaci, která je zkratkou controlled-NOT. Tato operace přebírá jako vstup dva qubity, jeden funguje jako řídicí qubit a druhý je target qubit. CNOT Brána překlopí stav druhého qubitu target (qubitu), a pouze pokud je stav prvního qubitu (řídicí qubit) $|1\rangle$.

Vstup Výstup
$\ket{00}$ $\ket{00}$
$\ket{01}$ $\ket{01}$
$\ket{10}$ $\ket{11}$
$\ket{11}$ $\ket{10}$

V Q#, CNOT operace působí na pole dvou qubitů a překlopí druhý qubit, pokud je Oneprvní qubit .

Propletení s operací CNOT

H Použitím operace a CNOT operace můžete transformovat dva qubity ve stavu $|00\rangle$ na stav $\ket{\phiZvonku ^+}=\frac1{\sqrt2}(|00\rangle+|11\rangle)$.

Jak to funguje:

  1. Vezměte dva qubity ve stavu $|00\rangle$. Prvním qubitem je řídicí qubit a druhým qubitem target je qubit.

  2. Vytvořte stav superpozice pouze v řídicím qubitu použitím $H$.

    $$H |0_c\rangle={2}}\frac{1}{\sqrt{(|0_c\rangle+|1_c)\rangle$$

    Poznámka:

    Dolní indexy ${}_c$ a ${}_t$ určují ovládací prvek a target qubity.

  3. Použití operátoru $CNOT$ na řídicí qubit, který je ve stavu superpozice, a target qubit, který je ve stavu $|0_t\rangle$.

    $$CNOT \frac{1}{\sqrt{2}}(\ket{0_c+\ket{1_c})\ket{0}_t = CNOT \frac{1}{\sqrt2}(\ket{0_c 0_t+|\ket{1_c 0_t}})=\frac{={1}{\sqrt$$$$2}(CNOT \ket{0_c 0_t}} + CNOT \ket{1_c 0_t})$$\frac{1}{\sqrt$$==2}(\ket{0_c 0_t}+\ket{1_c 1_t)}$$

Vytvoření a měření stavů Zvonu pomocí Q#

  1. Otevřete Visual Studio Code.
  2. Vyberte Soubor > Nový textový soubor a uložte ho jako Entanglement.qs.
  3. Vyberte Zobrazit –> Paleta příkazů a zadejteQ#: Nastavte profil Azure Quantum QIRtarget. Stiskněte klávesu Enter.
  4. Vyberte Q#: Bez omezení.

Vytvoření stavu $\ket{\phizvonku ^+}$

Začněme vytvořením stavu $\ket{\phizvonku ^+}=\frac1{\sqrt2}(|00\rangle+|11\rangle)$.

  1. Zkopírujte a vložte do souboru následující Q# kód Entanglement.qs .

    namespace Entanglement {
        open Microsoft.Quantum.Diagnostics;
    
        @EntryPoint()
        operation EntangleQubits() : (Result, Result) {
            // Allocate the two qubits that will be entangled.
            use (q1, q2) = (Qubit(), Qubit());
    
            // Set the first qubit in superposition by calling the `H` operation,
            // which applies a Hadamard transformation to the qubit.
            // Then, entangle the two qubits using the `CNOT` operation.
            H(q1);
            CNOT(q1, q2);
    
            // Show the entangled state using the `DumpMachine` function.
            DumpMachine();
    
            // Measurements of entangled qubits are always correlated.
            let (m1, m2) = (M(q1), M(q2));
            Reset(q1);
            Reset(q2);
            return (m1, m2);
        }
    }
    
  2. Pokud chcete program spustit místně na integrovaném simulátoru, klikněte v seznamu níže uvedených příkazů na Spustit nebo stiskněte Kombinaci kláves Ctrl+F5.@EntryPoint() Výstup se zobrazí v konzole ladění.

    Snímek obrazovky editoru VS Code znázorňující, jak spustit Q# soubor pomocí délka kódu pod vstupním bodem

  3. Výsledky měření korelují, takže na konci programu získáte výsledek (Zero, Zero) nebo (One, One) se stejnou pravděpodobností.

  4. Diagram okruhu můžete vizualizovat kliknutím na Okruh ze seznamu příkazů níže @EntryPoint(). Diagram obvodu znázorňuje bránu Hadamard použitou na první qubit a bránu CNOT použitou na oba qubity.

    Snímek obrazovky s okruhem zvonku

Vytvoření stavu $\ket{\phizvonku ^-}$

Pokud chcete vytvořit další stavy Bell, musíte pro qubity použít další operace Pauli $X$ a $Z$ .

Pokud například chcete vytvořit stav $\ket{\phiZvonu ^-}=\frac1{\sqrt2}(|00-11|\rangle\rangle),$můžete po použití brány Hadamard použít operaci Pauli $Z$ na řídicí qubit. Operace $Z$ překlopí stav $\ket{+}$ na $\ket{-}$.

Poznámka:

Stavy $\frac{{1}{\sqrt{2}}(|0\rangle+|1\rangle)$ a $\frac{1}{\sqrt{{2}}(|0\rangle -|1\rangle)$ se také označují jako $\ket{+}$ a $\ket{{-}$v uvedeném pořadí.

Jak to funguje:

  1. Vezměte dva qubity ve stavu $|00\rangle$.

  2. Vytvořte stav superpozice pouze v řídicím qubitu použitím $H$.

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

  3. $Použití operace Z$ na řídicí qubit.

    $$Z \frac{{1}{\sqrt{{2}}(|0_c\rangle+|1_c\rangle)=\frac{1}{\sqrt{{2}}(|0_c-1_c|\rangle\rangle)_c=\ket{{-}$$

  4. Použití operátoru $CNOT$ na řídicí qubit a target qubit, který je ve stavu $|0_t\rangle$.

    $$CNOT \frac{1}{\sqrt{2}}(\ket{0_c-1_c\ket{})\ket{0}_t = CNOT \frac{1}{\sqrt2}(\ket{0_c 0_t-1_c 0_t}}|\ket{){1}{\sqrt==\frac{$$$$2}(CNOT \ket{0_c 0_t}} - CNOT \ket{1_c 0_t})$$\frac{1}{\sqrt=$$=2}(\ket{0_c 0_t-1_c 1_t)}\ket{}$$

Q# Upravte kód tak, aby vytvořil stav $\ket{\phizvonku ^-}$. Spuštěním programu zobrazte propletený stav a diagram okruhu.

namespace Entanglement {
    open Microsoft.Quantum.Diagnostics;

    @EntryPoint()
    operation EntangleQubits() : (Result, Result) {
        // Allocate the two qubits that will be entangled.
        use (q1, q2) = (Qubit(), Qubit());

        // Set the first qubit in superposition by calling the `H` operation,
        // which applies a Hadamard transformation to the qubit.
        // Then, entangle the two qubits using the `CNOT` operation.
        H(q1);
        Z(q1); // Apply the Pauli Z operation to the control qubit
        CNOT(q1, q2);

        // Show the entangled state using the `DumpMachine` function.
        DumpMachine();

        // Measurements of entangled qubits are always correlated.
        let (m1, m2) = (M(q1), M(q2));
        Reset(q1);
        Reset(q2);
        return (m1, m2);
    }
}

Cvičení navíc: Vytvoření stavů $\ket{\psizvonu ^+}$ a $\ket{\psi^-}$

Podobně lze bellové stavy $\ket{\psi^+}$ a $\ket{\psi^-}$ vytvořit použitím operací Pauli $X$ a $Z$ na qubity.

  • Stav $\ket{\psizvonu ^+}=\frac1{\sqrt2}(|01\rangle+|10\rangle)$ lze vytvořit použitím operace Pauli $X$ na target qubit po použití brány Hadamard.
  • Stav $\ket{\psiZvonu ^-}=\frac1{\sqrt2}(|01-10\rangle\rangle|)$ lze vytvořit použitím Pauli $Z$ na řídicí qubit a Pauli $X$ na target qubit po použití brány Hadamard.

Upravte program Entanglement.qs tak, aby se vytvořily stavy $\ket{\psizvonu ^+}$ a $\ket{\psi^-}$.