BlueQat – это библиотека с открытым исходным кодом для квантового компьютера. https://github.com/Blueqat/Blueqat
Как установить BlueQat?
BlueQat предоставляется в виде библиотеки Python (VER 3.6+). Вы можете установить по PIP.
pip install blueqat
Ворота Тоффоли 2 контролируются, а не ворота. Если оба 2 элемента управления Qubits | 1>, затвора Toffoli переворачивает целевой кубит (| 0> → | 1>, | 1> → | 0>), в противном случае ничего не делайте.
Таблица истины для ворот Тоффоли
0 → 0 | 0 | 0 |
1 → 1 | 0 | 0 |
0 → 0 | 0 | 1 |
1 → 1 | 0 | 1 |
0 → 0 | 1 | 0 |
1 → 1 | 1 | 0 |
0 → 1 | 1 | 1 |
1 → 0 | 1 | 1 |
Реализация Toffoli Gate IBM OpenQasm
Стандартная библиотека OpenQasm qelib1.inc
Определяет ворота Тоффоли. Вот его определение.
gate ccx a,b,c { h c; cx b,c; tdg c; cx a,c; t c; cx b,c; tdg c; cx a,c; t b; t c; h c; cx a,b; t a; tdg b; cx a,b; }
«H»-это ворота хадамарда, «CX»-это ворота Cnot, «T»-это T-ворота, которая вращает оси Z-оси блох. Ось Z от -π/4 радиан.
Чтобы понять эту реализацию, мы переупорядочиваем некоторые операции. Как правило, операции ворот не могут быть с трудом. Тем не менее, некоторые ворота могут быть с трудом, например, с одной операцией QUBIT для i-th QUBIT и для J-TH QBIBT, если я Δ J, они с трудом. CX A, B и T A также могут комбинироваться, потому что T-затворы вращаются только ось Z и затворы CNOT, не возражайте управлять фазой Кубита.
Вот переупорядоченная реализация.
gate ccx a,b,c { h c; cx b,c; tdg c; cx a,c; t c; cx b,c; tdg c; cx a,c; t c; h c; t a; t b; cx a,b; tdg b; cx a,b; }
Эта реализация может быть отделена до 2 частей. Первая часть – это создание CCX, за исключением корректировки фазы, вторая часть корректирует фазовые коэффициенты.
Во -первых, некоторые операции зажаты с хадамардами.
h c; cx b,c; tdg c; cx a,c; t c; cx b,c; tdg c; cx a,c; t c; h c
Начнем с вывода, 2-контролируемые Z-ворота зажаты H Gates. Как мы знаем, -h-z-h-gate-это x gate. Мы можем подтвердить это с помощью BlueQat.
from blueqat import Circuit print(Circuit().h[0].z[0].h[0].to_unitary()) # => Matrix([[0, 1], [1, 0]]), This is X gate. # We can see X gate definition by print(Circuit().x[0].to_unitary()) # => Matrix([[0, 1], [1, 0]]), Yes! They're same!
Если вы используете Notebook Jupyter, вы можете получить более симпатичный дисплей.
Контролируемый Z GAGE, зажатый H -воротами для целевого кубита, является CNOT GATE.
Такая же, как и 2, 2 контролируемых Z GATE, зажатые с помощью H-Gates, являются воротами Toffoli. Тем не менее, в этой части мы получим странный 2-контрольный Z-затвор, потому что корректировка фазового фактора еще нет.
Давайте реализуем 2 контролируемого Z-затвора с помощью BlueQat.
cx b,c; tdg c; cx a,c; t c; cx b,c; tdg c; cx a,c; t c;
Мы выбрали,,. Реализация очень проста.
from blueqat import Circuit c = Circuit() c.cx[1, 0].tdg[0] c.cx[2, 0].t[0] c.cx[1, 0].tdg[0] c.cx[2, 0].t[0] c.to_unitary()
Фазовый коэффициент странно, но похож на 2 контролируемого Z-затвора.
Добавьте H Gates перед первой операцией и после последней операции.
Это ворота Тоффоли? Кажется, это не ворота Тоффоли. Но если мы знаем, exp (-iπ/4) * exp (iπ/4)
, мы можем чувствовать, что это похоже на ворота Тоффоли.
Unitary Gate BlueQat – это симпи -матрица, и Sympy может автоматически упростить эти термины. Давайте упростим унитарную матрицу.
Это так же, как ворота Тоффоли, кроме фазовых факторов.
Затем мы увидим вторую часть.
t a; t b; cx a,b; tdg b; cx a,b;
Что это значит? Проверьте Blueqat.
Ух ты! Эта часть множества фазы коэффициента I, если оба QUBT 1 и QUBIT 2 – | 1>.
Наконец, мы объединяем первую часть и вторую часть.
Что-то не так? Не волнуйся. Сначала exp (3iπ/8) = (-1)^3/8
Потому что -1 (iπ)
И затем мы можем игнорировать скалярную часть унитарной матрицы, это «глобальная фаза».
Итак, разделите на [0, 0] -6 элемент и упростите матрицу, мы можем получить матрицу Тоффоли.
Идеальный!
Я основной разработчик Blueqat. BlueQat имеет очень простой и легкий интерфейс для квантовых вычислений. Я рекомендую использовать BlueQat для обучения квантовому компьютерному программированию.
Мы подготовили учебные пособия BlueQat и добавим все больше и больше содержимого. https://github.com/Blueqat/Blueqat-tutorials
Если у вас есть какие -либо вопросы или предложения, пожалуйста, не стесняйтесь связываться с нами по нашим Slack Community Анкет (Присоединяйтесь из здесь )
Репозиторий BlueQat здесь. https://github.com/Blueqat/Blueqat
Оригинал: “https://dev.to/beef_and_rice/understanding-how-to-create-toffoli-gate-using-blueqat-39en”