Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Диаграммы квантовых каналов — это визуальное представление квантовых алгоритмов. Схемы каналов показывают поток кубитов через квантовую программу, включая шлюзы и измерения, которые программа применяет к кубитам.
Из этой статьи вы узнаете, как создавать схемы для программ Q# и OpenQASM с помощью Microsoft Quantum Development Kit (QDK), используя Visual Studio Code (VS Code) и Jupyter Notebook.
Дополнительные сведения о схемах квантовых каналов см. в соглашениях о схемах квантовых каналов.
Предварительные требования
Чтобы создать схемы цепей из файлов Q# и OpenQASM в VS Code, установите следующее:
- Последняя версия VS Code, или откройте VS Code для интернета.
- Последняя версия расширения QDK в VS Code.
Чтобы создать схемы из программ Python в Jupyter Notebook, установите следующее:
Последняя версия
qdkпакета Python с дополнительнымjupyter.pip install --upgrade "qdk[jupyter]"
Визуализация квантовых каналов в VS Code
QDK С помощью расширения VS Code можно создать схемы для файлов Q# (.qs) и OpenQASM (.qasm).
Чтобы просмотреть схему электрической цепи в VS Code, выполните следующие действия.
- Откройте файл VS Code, содержащий Q# или OpenQASM, либо загрузите один из квантовых примеров из QDK.
- Выберите команду "Circuit" из Code Lens, расположенного перед вашей программой.
Откроется QDK окно цепи и отображается схема цепи для вашей программы. Например, следующая схема цепи соответствует программе, которая создает случайный бит. Канал помещает кубитов в состояние суперпозиции, а затем измеряет кубит.
Подсказка
Выберите элемент на схеме канала, чтобы выделить код, создающий элемент канала.
Просмотр схем электрических цепей для отдельных операций Q#
Чтобы визуализировать квантовую схему для отдельной операции в файле Q#, выберите команду Circuit из индикатора кода, предшествующего операции.
Просмотр схем каналов при отладке
При использовании VS Code отладчика в программе Q# можно визуализировать квантовый канал на основе состояния программы в текущей точке останова отладчика.
- Выберите команду Debug из CodeLens, которая идет перед вашей операцией точки входа.
- В области "Запуск и отладка " разверните раскрывающийся список "Квантовый канал " в меню ПЕРЕМЕННЫХ . Откроется QDK панель схемы, на которой показана схема, пока вы шаг за шагом выполняете программу.
- Задайте точки останова и пошагово выполняйте ваш код, чтобы видеть, как схема обновляется по мере выполнения программы.
Визуализация квантовых каналов в Jupyter Notebook
В Jupyter Notebook вы можете визуализировать квантовые схемы для программ Q# и OpenQASM с помощью модулей Python qdk.qsharp и qdk.widgets. Модуль widgets предоставляет мини-приложение, которое отображает диаграмму квантовых каналов в виде образа SVG.
Для дополнительных примеров создания принципиальных схем в Jupyter Notebook, см. пример блокнота Circuits в репозитории QDK GitHub.
Просмотр схем электрических цепей для программ Q#
Чтобы просмотреть принципиальную схему для программы Q# в Jupyter Notebook, выполните следующие действия.
Откройте VS Codeменю "Вид " и выберите палитру команд.
Введите Создать: Новый Jupyter Notebook. Jupyter Notebook Пустой файл открывается на новой вкладке.
В первой ячейке ноутбука импортируйте модуль
qdk.qsharp.from qdk import qsharpСоздайте ячейку и введите код Q#. Например, следующий код подготавливает состояние Бэлла.
%%qsharp // Prepare a Bell State. operation BellState() : Unit { use register = Qubit[2]; H(register[0]); CNOT(register[0], register[1]); }Чтобы отобразить схему квантовых каналов, передайте операцию Q# в функцию
qsharp.circuit. Выполните следующий код в новой ячейке:qsharp.circuit("BellState()")Результат выглядит следующим образом:
q_0 ── H ──── ● ── q_1 ───────── X ──Чтобы отобразить изображение SVG квантового канала, используйте
widgetsмодуль. Создайте новую ячейку, а затем запустите следующий код, чтобы визуализировать тот же канал, который вы создали в предыдущей ячейке.from qdk.widgets import Circuit Circuit(qsharp.circuit("BellState()"))Схема канала выглядит следующим образом:
Просмотр схем каналов для операций, которые принимают кубиты в качестве входных данных
В предыдущем примере состояния Bell операция BellState не принимает кубиты в качестве входных данных. Если операция принимает кубиты или массивы кубитов в качестве входных данных, опустите скобки при передаче операции для рисования схем каналов.
Например, выполните следующие действия, чтобы нарисовать схемы каналов для операции, которая принимает кубиты:
В новой ячейке выполните следующий код Q#. Этот код подготавливает состояние cat.
%%qsharp operation PrepareCatState(register : Qubit[]) : Unit { H(register[0]); ApplyToEach(CNOT(register[0], _), register[1...]); }Чтобы нарисовать канал в виде текстовой схемы, выполните следующий код:
Circuit(qsharp.circuit(operation="PrepareCatState"))Чтобы отобразить схему канала в виде образа SVG, выполните следующий код:
Circuit(qsharp.circuit(operation="PrepareCatState"))
Когда операция принимает массив кубитов (Qubit[]), канал отображает массив как регистр двух кубитов.
Просмотр схем каналов для программ OpenQASM
Чтобы просмотреть схему для программы OpenQASM в Jupyter Notebook, выполните следующие действия:
Откройте VS Codeменю "Вид " и выберите палитру команд.
Введите Создать: Новый Jupyter Notebook. Jupyter Notebook Пустой файл открывается на новой вкладке.
В первой ячейке записной книжки выполните следующий код, чтобы импортировать необходимые объекты для создания и вызова функций OpenQASM с пакетом QDK Python:
from qdk.openqasm import import_openqasm, ProgramTypeВ новой ячейке напишите программу OpenQASM в строке Python и передайте строку в функцию
import_openqasm. Чтобы вызвать программу в коде Python, присвойте функции имя и задайте для нее значение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)В новой ячейке импортируйте программу OpenQASM в качестве функции Python и вызовите программу, чтобы получить результаты измерения.
from qdk.code.qasm_import import bell bell()Чтобы нарисовать канал в виде текстовой схемы, выполните следующий код в новой ячейке:
from qdk.qsharp import circuit circuit(bell)Результат выглядит следующим образом:
q_0 ── H ──── ● ──── M ── │ ╘═══ q_1 ───────── X ──── M ── ╘═══Чтобы отобразить схему канала в виде образа SVG, выполните следующий код в новой ячейке:
from qdk.widgets import Circuit Circuit(qsharp.circuit(bell))Схема канала выглядит следующим образом:
Замечание
Для программ OpenQASM нельзя просматривать схемы каналов для отдельных функций. Схемы каналов можно просматривать только для всей программы.