Визуализация схем квантовых каналов с помощью QDK

Диаграммы квантовых каналов — это визуальное представление квантовых алгоритмов. Схемы каналов показывают поток кубитов через квантовую программу, включая шлюзы и измерения, которые программа применяет к кубитам.

Из этой статьи вы узнаете, как создавать схемы для программ Q# и OpenQASM с помощью Microsoft Quantum Development Kit (QDK), используя Visual Studio Code (VS Code) и Jupyter Notebook.

Дополнительные сведения о схемах квантовых каналов см. в соглашениях о схемах квантовых каналов.

Предварительные требования

Чтобы создать схемы цепей из файлов Q# и OpenQASM в VS Code, установите следующее:

Чтобы создать схемы из программ Python в Jupyter Notebook, установите следующее:

  • Расширение Python и расширение Jupyter в VS Code.

  • Последняя версия qdk пакета Python с дополнительнымjupyter.

    pip install --upgrade "qdk[jupyter]"
    

Визуализация квантовых каналов в VS Code

QDK С помощью расширения VS Code можно создать схемы для файлов Q# (.qs) и OpenQASM (.qasm).

Чтобы просмотреть схему электрической цепи в VS Code, выполните следующие действия.

  1. Откройте файл VS Code, содержащий Q# или OpenQASM, либо загрузите один из квантовых примеров из QDK.
  2. Выберите команду "Circuit" из Code Lens, расположенного перед вашей программой.

Откроется QDK окно цепи и отображается схема цепи для вашей программы. Например, следующая схема цепи соответствует программе, которая создает случайный бит. Канал помещает кубитов в состояние суперпозиции, а затем измеряет кубит.

Снимок экрана: QDK окно схемы, на котором показана схема цепи для программы случайных битов.

Подсказка

Выберите элемент на схеме канала, чтобы выделить код, создающий элемент канала.

Просмотр схем электрических цепей для отдельных операций Q#

Чтобы визуализировать квантовую схему для отдельной операции в файле Q#, выберите команду Circuit из индикатора кода, предшествующего операции.

Visual Studio Code Снимок экрана, на котором показано, как визуализировать канал одной операции Q# в программе Q#.

Просмотр схем каналов при отладке

При использовании VS Code отладчика в программе Q# можно визуализировать квантовый канал на основе состояния программы в текущей точке останова отладчика.

  1. Выберите команду Debug из CodeLens, которая идет перед вашей операцией точки входа.
  2. В области "Запуск и отладка " разверните раскрывающийся список "Квантовый канал " в меню ПЕРЕМЕННЫХ . Откроется QDK панель схемы, на которой показана схема, пока вы шаг за шагом выполняете программу.
  3. Задайте точки останова и пошагово выполняйте ваш код, чтобы видеть, как схема обновляется по мере выполнения программы.

Визуализация квантовых каналов в Jupyter Notebook

В Jupyter Notebook вы можете визуализировать квантовые схемы для программ Q# и OpenQASM с помощью модулей Python qdk.qsharp и qdk.widgets. Модуль widgets предоставляет мини-приложение, которое отображает диаграмму квантовых каналов в виде образа SVG.

Для дополнительных примеров создания принципиальных схем в Jupyter Notebook, см. пример блокнота Circuits в репозитории QDK GitHub.

Просмотр схем электрических цепей для программ Q#

Чтобы просмотреть принципиальную схему для программы Q# в Jupyter Notebook, выполните следующие действия.

  1. Откройте VS Codeменю "Вид " и выберите палитру команд.

  2. Введите Создать: Новый Jupyter Notebook. Jupyter Notebook Пустой файл открывается на новой вкладке.

  3. В первой ячейке ноутбука импортируйте модуль qdk.qsharp.

    from qdk import qsharp
    
  4. Создайте ячейку и введите код Q#. Например, следующий код подготавливает состояние Бэлла.

    %%qsharp
    
    // Prepare a Bell State.
    operation BellState() : Unit {
        use register = Qubit[2];
        H(register[0]);
        CNOT(register[0], register[1]);
    }
    
  5. Чтобы отобразить схему квантовых каналов, передайте операцию Q# в функцию qsharp.circuit . Выполните следующий код в новой ячейке:

    qsharp.circuit("BellState()")
    

    Результат выглядит следующим образом:

    q_0    ── H ──── ● ──
    q_1    ───────── X ──
    
  6. Чтобы отобразить изображение SVG квантового канала, используйте widgets модуль. Создайте новую ячейку, а затем запустите следующий код, чтобы визуализировать тот же канал, который вы создали в предыдущей ячейке.

    from qdk.widgets import Circuit
    
    Circuit(qsharp.circuit("BellState()"))
    

    Схема канала выглядит следующим образом:

    Снимок экрана блокнота Jupyter, показывающего, как визуализировать схему для программы Q#.

Просмотр схем каналов для операций, которые принимают кубиты в качестве входных данных

В предыдущем примере состояния Bell операция BellState не принимает кубиты в качестве входных данных. Если операция принимает кубиты или массивы кубитов в качестве входных данных, опустите скобки при передаче операции для рисования схем каналов.

Например, выполните следующие действия, чтобы нарисовать схемы каналов для операции, которая принимает кубиты:

  1. В новой ячейке выполните следующий код Q#. Этот код подготавливает состояние cat.

    %%qsharp
    
    operation PrepareCatState(register : Qubit[]) : Unit {
        H(register[0]);
        ApplyToEach(CNOT(register[0], _), register[1...]);
    }
    
  2. Чтобы нарисовать канал в виде текстовой схемы, выполните следующий код:

    Circuit(qsharp.circuit(operation="PrepareCatState"))
    
  3. Чтобы отобразить схему канала в виде образа SVG, выполните следующий код:

    Circuit(qsharp.circuit(operation="PrepareCatState"))
    

Когда операция принимает массив кубитов (Qubit[]), канал отображает массив как регистр двух кубитов.

Просмотр схем каналов для программ OpenQASM

Чтобы просмотреть схему для программы OpenQASM в Jupyter Notebook, выполните следующие действия:

  1. Откройте VS Codeменю "Вид " и выберите палитру команд.

  2. Введите Создать: Новый Jupyter Notebook. Jupyter Notebook Пустой файл открывается на новой вкладке.

  3. В первой ячейке записной книжки выполните следующий код, чтобы импортировать необходимые объекты для создания и вызова функций OpenQASM с пакетом QDK Python:

    from qdk.openqasm import import_openqasm, ProgramType
    
  4. В новой ячейке напишите программу 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)
    
  5. В новой ячейке импортируйте программу OpenQASM в качестве функции Python и вызовите программу, чтобы получить результаты измерения.

    from qdk.code.qasm_import import bell
    
    bell()
    
  6. Чтобы нарисовать канал в виде текстовой схемы, выполните следующий код в новой ячейке:

    from qdk.qsharp import circuit
    
    circuit(bell)
    

    Результат выглядит следующим образом:

    q_0    ── H ──── ● ──── M ──
                 │      ╘═══
    q_1    ───────── X ──── M ──
                        ╘═══
    
  7. Чтобы отобразить схему канала в виде образа SVG, выполните следующий код в новой ячейке:

    from qdk.widgets import Circuit
    
    Circuit(qsharp.circuit(bell))
    

    Схема канала выглядит следующим образом:

    Снимок экрана Jupyter Notebook, демонстрирующий, как визуализировать схему в программе OpenQASM.

Замечание

Для программ OpenQASM нельзя просматривать схемы каналов для отдельных функций. Схемы каналов можно просматривать только для всей программы.