Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Diagramy obwodów kwantowych to wizualna reprezentacja algorytmów kwantowych. Diagramy obwodów pokazują przepływ kubitów za pośrednictwem programu kwantowego, w tym bram i pomiarów, które program stosuje do kubitów.
Z tego artykułu dowiesz się, jak tworzyć diagramy obwodów dla programów Q# i OpenQASM przy użyciu Microsoft Quantum Development Kit (QDK) oraz Visual Studio Code (VS Code) i Jupyter Notebook.
Aby uzyskać więcej informacji na temat diagramów obwodów kwantowych, zobacz Konwencje diagramu obwodu kwantowego.
Wymagania wstępne
Aby utworzyć diagramy obwodów na podstawie plików Q# i OpenQASM w programie VS Code, zainstaluj następujące elementy:
- Najnowsza wersja programu VS Code lub otwartego oprogramowania VS Code dla sieci internetowej.
- Najnowsza wersja QDK rozszerzenia w VS Code.
Aby utworzyć diagramy obwodów z poziomu programów języka Python w programie Jupyter Notebook, zainstaluj następujące elementy:
Najnowsza wersja pakietu Python
qdkz rozszerzeniemjupyter.pip install --upgrade "qdk[jupyter]"
Wizualizowanie obwodów kwantowych w programie VS Code
QDK Za pomocą rozszerzenia w programie VS Codemożna tworzyć diagramy obwodów dla plików Q# (.qs) i OpenQASM (.qasm).
Aby wyświetlić diagram obwodu w programie VS Code, wykonaj następujące kroki:
- Otwórz plik Q# lub OpenQASM w pliku VS Codelub załaduj jeden z przykładów kwantowych z pliku QDK.
- Wybierz polecenie Obwód z narzędzia CodeLens, które znajduje się przed twoim programem.
Okno QDK Obwód otwiera się i wyświetla diagram obwodu dla twojego programu. Na przykład poniższy diagram obwodu odpowiada programowi, który generuje bit losowy. Obwód umieszcza kubit w stanie superpozycji, a następnie mierzy kubit.
Wskazówka
Wybierz element na diagramie obwodu, aby wyróżnić kod tworzący element obwodu.
Wyświetlanie diagramów obwodów dla poszczególnych operacji języka Q#
Aby zwizualizować obwód kwantowy dla pojedynczej operacji w pliku Q#, wybierz polecenie Circuit z funkcji CodeLens poprzedzającej operację.
Wyświetlanie diagramów obwodów podczas debugowania
W przypadku korzystania z VS Code debugera w programie języka Q# można zwizualizować obwód kwantowy na podstawie stanu programu w bieżącym punkcie przerwania debugera.
- Wybierz polecenie Debuguj z CodeLens, które poprzedza operację punktu wejścia.
- W okienku Uruchamianie i debugowanie rozwiń listę rozwijaną Obwód kwantowy w menu ZMIENNE . Panel QDK Obwód otwiera się, pokazując obwód podczas krokowego przechodzenia przez program.
- Ustaw punkty przerwania i przejdź krokowo przez kod, aby zobaczyć, jak obwód jest aktualizowany podczas działania programu.
Wizualizowanie obwodów kwantowych w programie Jupyter Notebook
W Jupyter Notebook, można wizualizować obwody kwantowe dla programów Q# i OpenQASM za pomocą modułów qdk.qsharp i qdk.widgets Python. Moduł widgets udostępnia widżet renderujący diagram obwodu kwantowego jako obraz SVG.
Aby uzyskać więcej przykładów generowania schematu obwodu w programie Jupyter Notebook, zapoznaj się z przykładowym notatnikiem Circuits w QDK repozytorium GitHub.
Wyświetlanie diagramów obwodów dla programów języka Q#
Aby wyświetlić schemat obwodu dla programu Q# w Jupyter Notebook, wykonaj następujące kroki:
W VS Codeprogramie otwórz menu Widok i wybierz pozycję Paleta poleceń.
Wprowadź Utwórz: Nowy Jupyter Notebook. Jupyter Notebook Pusty plik zostanie otwarty na nowej karcie.
W pierwszej komórce notatnika zaimportuj moduł
qdk.qsharp.from qdk import qsharpUtwórz nową komórkę i wprowadź kod języka Q#. Na przykład poniższy kod przygotowuje stan Bella:
%%qsharp // Prepare a Bell State. operation BellState() : Unit { use register = Qubit[2]; H(register[0]); CNOT(register[0], register[1]); }Aby wyświetlić diagram obwodu kwantowego, przekaż operację Q# do funkcji
qsharp.circuit. Uruchom następujący kod w nowej komórce:qsharp.circuit("BellState()")Dane wyjściowe wyglądają następująco:
q_0 ── H ──── ● ── q_1 ───────── X ──Aby renderować obraz SVG obwodu kwantowego, użyj modułu
widgets. Utwórz nową komórkę, a następnie uruchom następujący kod, aby zwizualizować ten sam obwód, który został utworzony w poprzedniej komórce.from qdk.widgets import Circuit Circuit(qsharp.circuit("BellState()"))Diagram obwodu wygląda następująco:
Wyświetlanie diagramów obwodów dla operacji, które przyjmują kubity jako dane wejściowe
W poprzednim przykładzie stanu Bell operacja BellState nie pobiera kubitów jako danych wejściowych. Jeśli operacja przyjmuje kubity lub tablice kubitów jako dane wejściowe, pomiń nawiasy podczas przekazywania operacji w celu narysowania diagramów obwodów.
Wykonaj na przykład następujące kroki, aby narysować diagramy obwodów dla operacji, która przyjmuje kubity:
W nowej komórce uruchom następujący kod języka Q#. Ten kod przygotowuje stan kota.
%%qsharp operation PrepareCatState(register : Qubit[]) : Unit { H(register[0]); ApplyToEach(CNOT(register[0], _), register[1...]); }Aby narysować obwód jako diagram tekstowy, uruchom następujący kod:
Circuit(qsharp.circuit(operation="PrepareCatState"))Aby renderować diagram obwodu jako obraz SVG, uruchom następujący kod:
Circuit(qsharp.circuit(operation="PrepareCatState"))
Gdy operacja przyjmuje tablicę kubitów (Qubit[]), obwód pokazuje tablicę jako rejestr dwóch kubitów.
Wyświetlanie diagramów obwodów dla programów OpenQASM
Aby wyświetlić diagram obwodu dla programu OpenQASM w programie Jupyter Notebook, wykonaj następujące kroki:
W VS Codeprogramie otwórz menu Widok i wybierz pozycję Paleta poleceń.
Wprowadź Utwórz: Nowy Jupyter Notebook. Jupyter Notebook Pusty plik zostanie otwarty na nowej karcie.
W pierwszej komórce notesu uruchom następujący kod, aby zaimportować niezbędne obiekty do utworzenia i wywołania funkcji OpenQASM przy użyciu QDK pakietu Python:
from qdk.openqasm import import_openqasm, ProgramTypeW nowej komórce napisz program OpenQASM w łańcuchu tekstowym w języku Python i przekaż łańcuch do funkcji
import_openqasm. Aby wywołać program w kodzie języka Python, nadaj funkcji nazwę i ustaw wartośćprogram_typeProgramType.File.source = """ include "stdgates.inc"; bit[2] c; qubit[2] q; h q[0]; cx q[0], q[1]; c = measure q; """ import_openqasm(source, name="bell", program_type=ProgramType.File)W nowej komórce zaimportuj program OpenQASM jako funkcję języka Python i wywołaj program, aby uzyskać wyniki pomiaru.
from qdk.code.qasm_import import bell bell()Aby narysować obwód jako diagram tekstowy, uruchom następujący kod w nowej komórce:
from qdk.qsharp import circuit circuit(bell)Dane wyjściowe wyglądają następująco:
q_0 ── H ──── ● ──── M ── │ ╘═══ q_1 ───────── X ──── M ── ╘═══Aby renderować diagram obwodu jako obraz SVG, uruchom następujący kod w nowej komórce:
from qdk.widgets import Circuit Circuit(qsharp.circuit(bell))Diagram obwodu wygląda następująco:
Uwaga / Notatka
W przypadku programów OpenQASM nie można wyświetlać diagramów obwodów dla poszczególnych funkcji. Diagramy obwodów można wyświetlać tylko dla całego programu.