Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Diagramy kvantových obvodů představují vizuální znázornění kvantových operací. Diagramy obvodů znázorňují tok qubitů v kvantovém programu, včetně bran a měření, které program aplikuje na qubity.
V tomto článku se dozvíte, jak vizuálně znázorňovat kvantové algoritmy s diagramy kvantových obvodů v Azure Quantum Development KitQDK() pomocí Visual Studio Code (VS Code) a Jupyter Notebook.
Další informace o diagramech kvantových obvodů najdete v tématu Konvence kvantových obvodů.
Požadavky
Nejnovější verze VS Code nebo otevřete VS Code pro Web
Nejnovější verze QDK rozšíření, rozšíření Pythonu a Jupyter rozšíření nainstalované v VS Code.
Nejnovější verze
qdkknihovny Pythonu s volitelnýmjupyterdoplňkem.python -m pip install --upgrade qdk[jupyter]
Vizualizace kvantových obvodů v VS Code
Pokud chcete vizualizovat kvantové okruhy programů VS Codev jazyce Q#, proveďte následující kroky.
Zobrazení diagramů okruhů pro program Q#
Otevřete soubor VS CodeQ# nebo načtěte některou z kvantových ukázek.
Z Circuit lensu vyberte příkaz Circuit, který předchází vaší operaci vstupního bodu.
Zobrazí se okno okruhu Q# a zobrazí diagram okruhu pro váš program. Následující okruh například odpovídá operaci, která umístí qubit do stavu superpozice a pak měří qubit. Diagram okruhu znázorňuje jeden qubitový registr inicializovaný do stavu $\ket{0}$. Pak se na qubit použije brána Hadamard, za kterou následuje měrná operace, která je reprezentována symbolem měřiče. V tomto případě je výsledek měření nula.
Návod
V souborech Q# a OpenQASM vyberte prvek v diagramu okruhu a zvýrazněte kód, který vytvoří prvek okruhu.
Zobrazení diagramů obvodů pro jednotlivé operace
Pokud chcete vizualizovat kvantový okruh pro jednotlivé operace v souboru Q#, zvolte příkaz Okruh z objektivu kódu, který předchází operaci.
Zobrazení diagramů okruhů při ladění
Při použití VS Code ladicího programu v programu V# můžete kvantový okruh vizualizovat na základě stavu programu na aktuální zarážce ladicího programu.
- Vyberte příkaz Ladit z funkce code lens umístěné před vaší vstupní operací.
- V podokně Spustit a ladit rozbalte rozevírací nabídku Kvantový okruh v nabídce PROMĚNNÉ. Otevře se panel QDK Okruh, který zobrazuje obvod, zatímco procházíte programem.
- Nastavte body přerušení a procházejte kódem krok za krokem, abyste viděli, jak se obvod aktualizuje při spuštění programu.
Kvantové obvody v Jupyter Notebook
V Jupyter Notebook můžete vizualizovat kvantové obvody pomocí Python modulů qdk.qsharp a qdk.widgets. Modul widgets poskytuje widget, který vykresluje diagram kvantového obvodu jako obrázek SVG.
Zobrazení diagramů obvodů pro vstupní výraz
V VS Code otevřete nabídku Zobrazit a zvolte Paletu příkazů.
Zadejte a vyberte Vytvořit: Nový Jupyter Notebook.
V první buňce poznámkového bloku spusťte následující kód pro import
qsharpbalíčku.from qdk import qsharpVytvořte novou buňku a zadejte kód Q#. Například následující kód připraví Bellův stav:
%%qsharp // Prepare a Bell State. operation BellState() : Unit { use register = Qubit[2]; H(register[0]); CNOT(register[0], register[1]); }Pokud chcete zobrazit jednoduchý kvantový obvod založený na aktuálním stavu programu, předejte funkci výraz
qsharp.circuitvstupního bodu. Například diagram okruhu předchozího kódu ukazuje dva qubitové registry, které jsou inicializovány do stavu $\ket{0}$. Pak se na první qubit použije brána Hadamard. Nakonec se použije brána CNOT, kde první qubit je ovládací prvek reprezentovaný tečkou a druhý qubit je cíl reprezentovaný X.qsharp.circuit("BellState()")q_0 ── H ──── ● ── q_1 ───────── X ──K vizualizaci kvantového okruhu jako obrázku SVG použijte
widgetsmodul. Vytvořte novou buňku a spuštěním následujícího kódu vizualizujete okruh, který jste vytvořili v předchozí buňce.from qdk.widgets import Circuit Circuit(qsharp.circuit("BellState()"))
Zobrazení diagramů okruhů pro operace s qubity
Můžete vygenerovat diagramy obvodů operací, které jako vstup přebírají qubity nebo pole qubitů. Diagram znázorňuje drát pro každý vstupní qubit spolu s dráty pro další qubity, které přidělujete v rámci operace. Když operace vezme pole qubitů (Qubit[]), okruh zobrazí pole jako registr 2 qubitů.
Přidejte novou buňku a pak zkopírujte a spusťte následující kód Q#. Tento kód připraví stav kočky.
%%qsharp operation PrepareCatState(register : Qubit[]) : Unit { H(register[0]); ApplyToEach(CNOT(register[0], _), register[1...]); }Přidejte novou buňku a spuštěním následujícího kódu vizualizujete okruh
PrepareCatStateoperace.Circuit(qsharp.circuit(operation="PrepareCatState"))
Diagramy okruhů pro dynamické okruhy
Diagramy okruhů se generují spuštěním klasické logiky v rámci programu Q# a sledováním všech přidělených a použitých bran. Smyčky a podmíněné výrazy jsou podporovány, když se zabývají pouze klasickými hodnotami.
Programy, které obsahují smyčky a podmíněné výrazy, které používají výsledky měření qubitu, jsou ale složitější pro reprezentaci s diagramem okruhu. Představte si například následující výraz:
if (M(q) == One) {
X(q)
}
Tento výraz nemůže být reprezentován jednoduchým diagramem obvodu, protože brány jsou podmíněné na výsledku měření. Okruhy s branami, které závisí na výsledcích měření, se nazývají dynamické obvody.
Diagramy pro dynamické okruhy můžete vygenerovat spuštěním programu v kvantovém simulátoru a trasováním bran při jejich použití. To se nazývá režim trasování, protože qubity a brány jsou trasovány při provedení simulace.
Nevýhodou trasovaných obvodů je, že zaznamenávají pouze výsledek měření a následné aplikace bran pro jednu simulaci. V předchozím příkladu platí, že pokud je Zerovýsledek měření , brána X není v diagramu. Pokud simulaci spustíte znovu, můžete získat jiný obvod.