Rychlý start: Vytvoření prvního Q# programu
Naučte se psát základní Q# program, který demonstruje propletení, klíčový koncept kvantového computingu.
Když jsou dva nebo více qubitů propletené, sdílejí kvantové informace, což znamená, že cokoli se stane s jedním qubitem, se také stane s druhým. V tomto rychlém startu vytvoříte konkrétní dvou qubitový propletený stav s názvem pár Zvonek. Pokud v páru Bell změříte jeden qubit ve $\ket{0}$ stavu, víte, že druhý qubit je také ve $\ket{0}$ stavu bez měření. Další informace najdete v tématu Propletení kvantových dat.
V tomto rychlém startu:
- Vytvořte soubor Q#.
- Přidělení páru qubitů
- Propletení qubitů.
Požadavky
- Nejnovější verze editoru Visual Studio Code.
- Rozšíření Azure Quantum Development Kit (QDK). Podrobnosti o instalaci najdete v tématu Nastavení sady Quantum Development Kit.
Vytvoření Q# souboru
- Otevřete Visual Studio Code.
- Vyberte Soubor>nový textový soubor.
- Uložte soubor jako
Main.qs
. Přípona .qs označuje Q# program.
Napsání Q# kódu
Main.qs
V souboru postupujte podle těchto kroků k propletení a měření páru qubitů.
Import kvantové knihovny
Sada QDK obsahuje standardní knihovnu Q# s předdefinovanými funkcemi a operacemi pro kvantové programy. Pokud je chcete použít, musíte nejprve importovat příslušnou knihovnu.
V programu použijte příkaz import
k otevření Microsoft.Quantum.Diagnostics
knihovny. Tím získáte přístup ke všem jeho funkcím a operacím, včetně DumpMachine()
toho, které později použijete k zobrazení propleteného stavu.
import Microsoft.Quantum.Diagnostics.*;
Definování operace
Po importu příslušných knihoven definujte svou kvantovou operaci a její vstupní a výstupní hodnoty. Pro účely tohoto rychlého startu je Main
vaše operace . Tady napíšete zbývající Q# kód pro přidělení, manipulaci s nimi a změříte dva qubity.
Main
nepřijímá žádné parametry a vrací dvě Result
hodnoty, buď Zero
nebo One
, které představují výsledky měření qubitu:
operation Main() : (Result, Result) {
// Your entanglement code goes here.
}
Přidělení dvou qubitů
Operace Main
je aktuálně prázdná, takže dalším krokem je přidělení dvou qubitů q1
a q2
. V Q#případě přidělení qubitů pomocí klíčového use
slova:
// Allocate two qubits, q1 and q2, in the 0 state.
use (q1, q2) = (Qubit(), Qubit());
Poznámka:
V Q#, qubity jsou vždy přiděleny $\ket{0}$ ve stavu.
Vložení jednoho qubitu do superpozice
Qubity q1
a q2
jsou ve $\ket{0}$ stavu. Chcete-li připravit qubity na propletení, musíte jeden z nich umístit do sudé superpozice, kde má 50% šanci na měření jako $\ket{0}$ nebo $\ket{1}$.
Qubit vložíte do superpozice použitím hadamardu, H
operace:
// Put q1 into an even superposition.
H(q1);
Výsledný stav q1
je $\frac{{1}{\sqrt{2}}({0}\ket{+\ket{1}),$ což je i superpozice $\ket{0}$ a $\ket{{1}$.
Propletení qubitů
Teď jste připraveni propletit qubity pomocí řízené operace NE, CNOT
operace. CNOT
je řídicí operace, která přebírá dva qubity, jeden funguje jako ovládací prvek a druhý jako cíl.
Pro účely tohoto rychlého startu nastavíte q1
jako řídicí qubit a q2
cílový qubit. To znamenáCNOT
, že překlopí stavq2
, kdy je $\ket{1}$stav q1
.
// Entangle q1 and q2, making q2 depend on q1.
CNOT(q1, q2);
Výsledný stav obou qubitů je pár $\frac{Zvonek (\ket{00}+\ket{{11}).${1}{\sqrt{2}}
Tip
Pokud chcete zjistit, jak operace Hadamard a CNOT transformují stav qubitů, přečtěte si téma Vytváření propletení s kvantovými operacemi.
Zobrazení propleteného stavu
Před měřením qubitů je důležité ověřit, že je předchozí kód úspěšně propletl. Operaci, která je součástí Microsoft.Quantum.Diagnostics
knihovny, můžete použít DumpMachine
k výstupu aktuálního stavu programuQ#:
// Show the entangled state of the qubits.
DumpMachine();
Měření qubitů
Teď, když jste ověřili, že jsou qubity propletené, můžete k měření použít M
operaci. Měřeníach q1
q2
Zero
One
V Q#, pomocí klíčového let
slova deklarovat novou proměnnou. Uložení výsledků q1
měření a q2
deklarování proměnných m1
a m2
v uvedeném pořadí:
// Measure q1 and q2 and store the results in m1 and m2.
let (m1, m2) = (M(q1), M(q2));
Resetování qubitů
Před vydáním na konci každého Q# programu musí být qubity ve $\ket{0}$ stavu. Provedete to pomocí Reset
operace:
// Reset q1 and q2 to the 0 state.
Reset(q1);
Reset(q2);
Vrácení výsledků měření
Nakonec dokončete Main
operaci a sledujte propletený stav, vraťte výsledky m1
měření a m2
:
// Return the measurement results.
return (m1, m2);
Tip
Pokud chcete získat další informace o Q# funkci nebo operaci, najeďte myší na ni.
Q# Spuštění kódu
Gratulujeme! Napsali Q# jste program, který propletl dva qubity a vytvořil pár Bell.
Konečný Q# program by měl vypadat takto:
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);
}
Pokud chcete spustit program a zobrazit výsledek obou qubitů, vyberte Spustit nad Main
operací nebo stiskněte Ctrl+F5.
Program můžete spustit několikrát, z nichž každý má jiný výsledek v konzole ladění. To ukazuje pravděpodobnostní povahu kvantových měření a propletení qubitů.
Pokud je Zero
výsledkem například výsledek, měla by konzola ladění vypadat takto:
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)"
Další krok
Další informace o kvantovém propletení pomocí Q#najdete v kurzu : Prozkoumání kvantového propletení pomocí Q#. Tento kurz rozšiřuje koncepty popsané v tomto rychlém startu a pomáhá psát pokročilejší program propletení.