Рубрики
Без рубрики

Понимание того, как создать ворота Тоффоли с помощью BlueQat

Что такое Blueqat? BlueQat – это библиотека с открытым исходным кодом для квантового компьютера. https: //github.co … Tagged с BlueQat, Python, Quantumcomputing, Quantum.

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”