Продолжаем цикл материалов о кварнтовом мире. В этом поговорим о наиболее известных многокубитных квантовых вентилях.
![](https://habrastorage.org/getpro/habr/upload_files/cf1/86c/51b/cf186c51b5a26eae11b1abde5af202cd.png)
Многокубитные вентили
В предыдущей статье мы рассмотрели однокубитные вентили, сегодня поговорим о многокубитных вентилях. Квантово-вентильная операция, которая оперирует на одном кубите, имеет унитарную квадратную матрицу 2 × 2 в заданном базисе. В случае двух кубитов матрица имеет размер 4 × 4. В случае десяти кубитов ее размер равен 210 × 210, то есть 1024 × 1024. Рассмотрим наиболее известные многокубитные квантовые вентили.
1. Квантовый вентиль
Начнем с рассмотрения того, что означает применение вентиля H Адамара к каждому кубиту в 2-кубитной системе. Вентиль H, или вентиль Адамара, имеет матрицу:
![](https://habrastorage.org/getpro/habr/upload_files/5c1/f3a/64c/5c1f3a64cc49f37775da73fd57b65953.png)
оперирующую в ℂ2. Начиная с двух кубитных состояний
![](https://habrastorage.org/getpro/habr/upload_files/ec9/d58/f50/ec9d58f502fc60a31b9c1255fc46fa52.png)
Применение H к каждому кубиту означает вычисление
![](https://habrastorage.org/getpro/habr/upload_files/fca/927/d1d/fca927d1d7472e6a939630f43d33de65.png)
и это то же самое, что и
![](https://habrastorage.org/getpro/habr/upload_files/506/741/108/5067411085f5bb96ce130aa70ad2ac64.png)
для некоторой унитарной матрицы H⊗2 размером 4 × 4. Имея определение H и способ создания матричного тензорного произведения из раздела 8.1, мы можем вычислить:
![](https://habrastorage.org/getpro/habr/upload_files/e88/c9c/6b5/e88c9c6b5188d894fc08ae5b8df491a8.png)
Эта матрица помещает оба кубита в 2-кубитную систему, в которой каждый изначально инициализирован состоянием в суперпозицию.
Обратите внимание на рекурсивное определение H⊗2 в терминах матричных блоков матриц H.
Хотя мы могли бы нарисовать H⊗2 с двумя входами и выходами, вместо этого мы показываем его, применяя H к каждому кубиту в схеме.
Для 3-кубитной системы соответствующая матрица H⊗3 имеет вид:
![](https://habrastorage.org/getpro/habr/upload_files/649/5dd/85e/6495dd85e7c9ee7cf958c786aca504cc.png)
То есть:
![](https://habrastorage.org/getpro/habr/upload_files/3ef/885/149/3ef885149215c2f3bbb2f31d5e1e598e.png)
Из этого следует, что
![](https://habrastorage.org/getpro/habr/upload_files/d62/05b/b6f/d6205bb6f5e01de0f66d64c0d7e2fbb3.png)
А также
![](https://habrastorage.org/getpro/habr/upload_files/678/74a/cc2/67874acc2d5adcbf6e34ad16ecb60ca4.png)
Закономерности продолжаются. Это показывает, что применение вентиля Адамара к каждому кубиту, инициализированному состоянием , создает сбалансированную суперпозицию, включающую все базисные кет-векторы. Число
в последнем случае необходимо для того, чтобы квадрат абсолютного значения кета был равен 1. Оно является нормализующей константой.
Если у вас три классических бита, то вы можете представить все нижеследующее, но только по одному элементу за раз: 000; 001; 010; 011; 100; 101; 110; 111.
И напротив, 3-кубитное состояние H⊗3|0〉3 содержит каждую из соответствующих кетно-базисных форм одновременно.
Это ситуация, когда десятичное выражение для базисного кета является кратким. Мы можем переписать последнее равенство как
![](https://habrastorage.org/getpro/habr/upload_files/6a5/322/779/6a5322779669774802ff5fa045e7ed47.png)
![](https://habrastorage.org/getpro/habr/upload_files/64c/bc9/daf/64cbc9dafe5bd0f3d87949506f0f67d7.png)
Сейчас самое подходящее время ввести обозначение суммы. Заглавная греческая буква «сигма» используется для выражения суммы, основанной на формуле:
![](https://habrastorage.org/getpro/habr/upload_files/be7/0b4/fd7/be70b4fd7fd98402b28ed1c8f0784988.png)
Такая запись означает, что мы начинаем j в единице и по очереди рассматрива- ем j = 2, j = 3 и j = 4. Мы допускаем начальное значение суммы, равное 0, а затем добавляем каждый результат оценивания формулы справа от ∑ с заданным значением j. Здесь 1 является нижней границей для j, а 4 — его верхней границей.
Вот еще один пример:
![](https://habrastorage.org/getpro/habr/upload_files/bfd/a4e/13d/bfda4e13d7bf590d120c575442ac6e12.png)
Нижняя граница тоже не обязательно должна быть константной.
Общая форма для состояния n-кубитного регистра с использованием десятичного кетного обозначения имеет следующий вид
![](https://habrastorage.org/getpro/habr/upload_files/1b7/226/738/1b7226738367b9af9307f70d38599be5.png)
где
![](https://habrastorage.org/getpro/habr/upload_files/819/945/98f/81994598f79dec719549a71676b29ad2.png)
Благодаря этой формуле мы можем выразить формулу для сбалансированной суперпозиции n кубитов.
![](https://habrastorage.org/getpro/habr/upload_files/9ae/ded/f3d/9aededf3d129e56e9822a72f24333d96.png)
Мы можем отбросить нижний индекс n на кетах, если мы знаем, что работаем с конкретным числом кубитов.
![](https://habrastorage.org/getpro/habr/upload_files/79e/259/a1a/79e259a1a35c152fab4b274c789a1ee3.png)
Между прочим, у нас есть похожие обозначения для произведений.
![](https://habrastorage.org/getpro/habr/upload_files/68f/3c4/522/68f3c4522d0c7e8054f077cde18b8809.png)
Например, если мы выполним факторизацию положительного N в Z на множество простых чисел {p1, p2, …, pn} и каждое простое число pj встречается ei раз, тогда
![](https://habrastorage.org/getpro/habr/upload_files/4c0/0b4/c87/4c00b4c87d2902898c659b0c493b71b2.png)
Теперь обратимся к 2-кубитным вентилям, которые не являются тензорными произведениями 1-кубитных. Как и в случае с малыми вентилями, мы рассмотрим несколько наиболее часто используемых 2-кубитных операций.
2. Квантовый вентиль SWAP
Вентиль X является битовой инверсией: если дано:
![](https://habrastorage.org/getpro/habr/upload_files/8c9/944/22f/8c994422f2a034e606d7e805f0ab279e.png)
Теперь, когда мы рассматриваем два кубита, существует ли вентиль, который переключает кубиты? И что это вообще может означать?
Как мы уже видели ранее, при наличии двух кубитов
![](https://habrastorage.org/getpro/habr/upload_files/e62/afe/fb7/e62afefb796def9c2ee50279ed23df9d.png)
их тензорное произведение равно
![](https://habrastorage.org/getpro/habr/upload_files/ebd/8ed/536/ebd8ed536445f142232a19c13ebd34b6.png)
Если мы возьмем их тензорное произведение в обратном порядке, то получим:
![](https://habrastorage.org/getpro/habr/upload_files/cfc/dd7/e56/cfcdd7e56b55d7003c820c3c825e3b28.png)
Первый и четвертый коэффициенты одинаковы, но второй и третий переключены.
Матрица
![](https://habrastorage.org/getpro/habr/upload_files/4c3/007/141/4c3007141933c0ba1ae4b33e1050fbe5.png)
является примером матрицы перестановок 4 × 4. Для создания матрицы, которая меняет местами второй и третий коэффициенты кета (или элементы в векторе-столбце), надо начать с I4 и поменять местами второй и третий столбцы. Это М.
В случае общего вектора
![](https://habrastorage.org/getpro/habr/upload_files/cca/a1e/cf0/ccaa1ecf05b3cafc18dca6fcd2b19bf6.png)
Следовательно,
![](https://habrastorage.org/getpro/habr/upload_files/c56/fc8/710/c56fc8710f6dcc86134ae70d9d549d57.png)
При использовании таким образом мы называем квантовый вентиль с этой матрицей в стандартном кетном базисе вентилем SWAP (то есть вентилем перестановки).
![](https://habrastorage.org/getpro/habr/upload_files/3e7/06d/b65/3e706db657f9a6e69096c7f10ae23ed5.png)
Когда включаем вентиль SWAP в схему, он охватывает два провода. Запомните обозначения ×!
3. Квантовый вентиль CNOT/CX
Вентиль CNOT является одним из самых важных вентилей в квантовых вычислениях. Он используется для создания запутанных кубитов.
Данный вид вентилей не единственный, который может это сделать, но он прост и очень часто используется.
![](https://habrastorage.org/getpro/habr/upload_files/354/852/8f9/3548528f9610b16016a5c9dc26f3eec1.png)
Матрица для CNOT такова:
![](https://habrastorage.org/getpro/habr/upload_files/f9c/13e/1a8/f9c13e1a872d88965dfece35c9accfc2.png)
Это матрица перестановок, которая меняет местами третий и четвертый коэффициенты
![](https://habrastorage.org/getpro/habr/upload_files/59e/1dd/9a2/59e1dd9a279f9a4628a8ac35f36a3c49.png)
Обратите внимание, что левая верхняя подматрица 2 × 2 равна I2, а правая нижняя подматрица 2 × 2 равна матрице X. Это будет очевиднее, если мы перепишем матрицу в блочной форме как
![](https://habrastorage.org/getpro/habr/upload_files/2e9/df5/5cd/2e9df55cd1bc63cb26f531c6efbde1b0.png)
Когда включаем вентиль CNOT в схему, он охватывает два провода. Верхняя линия — это управляющий кубит.
![](https://habrastorage.org/getpro/habr/upload_files/ad7/9fc/aa9/ad79fcaa945f38c4513ec9cce19920fa.png)
CNOT работает на стандартном базисе ℂ2 ⊗ ℂ2 как
![](https://habrastorage.org/getpro/habr/upload_files/6c9/7a0/023/6c97a00232e9fec48714ecb0e6102f92.png)
В силу линейности
![](https://habrastorage.org/getpro/habr/upload_files/71c/c5c/736/71cc5c7367f56153f58e0d8ad486aa97.png)
Применение вентилей H Адамара со сменой базиса перед и после вентиля CNOT
иллюстрирует интересное свойство CNOT.
Матричная форма H⊗2 ○ CNOT ○ H⊗2 такова:
![](https://habrastorage.org/getpro/habr/upload_files/279/588/acb/279588acb8c2e1e8b51d0341fab0cc6d.png)
Она сводится к более простой форме:
![](https://habrastorage.org/getpro/habr/upload_files/970/8e1/d1e/9708e1d1ea2a22878557934784b60f96.png)
Что мы можем сказать по этому поводу? Мы видим, что это операция перестановки, которая меняет местами второй и четвертый коэффициенты стандартного кет-векторного выражения в ℂ2 ⊗ ℂ2.
Влияние М на стандартные базисные кеты таково:
![](https://habrastorage.org/getpro/habr/upload_files/2cd/fb7/70e/2cdfb770ed40eb52e755aa122feaa4ab.png)
![](https://habrastorage.org/getpro/habr/upload_files/ba3/fbf/fd7/ba3fbffd785231fb5cba2929357c18cd.png)
Приглядитесь к тому, что происходит, когда мы смотрим на второй кубит. Если он равен |1〉, то первый кубит инвертируется. Если он равен |0〉, то первый кубит остается таким же.
Это противоположное поведение вентиля CNOT, но оно строится из него с помощью операций Адамара перед и после. В случае со CNOT оказалось, что состояние второго кубита контролируется первым. В этой конструкции все наоборот. Меняя базис на |+〉 и |–〉 и обратно, мы получили доказательства того, что CNOT делает больше, чем мы могли ожидать.
Если бы мы хотели, чтобы управляющий кубит был вторым именно таким образом, мы бы нарисовали его с использованием ● внизу. Иногда его называют обратным вентилем CNOT.
![](https://habrastorage.org/getpro/habr/upload_files/1aa/eb1/0c4/1aaeb10c46e95fc284251690dc8dbea5.png)
CNOT используется для создания запутанных векторов состояний Белла. Мы отложим их строительство до подраздела 9.3.2, когда у нас в руках будет больше инструментов.
4. Квантовые вентили CY и CZ
Вентиль CNOT совпадает с вентилем CX. Мы также можем создать контролируемые 2-кубитные вентили для других 1-кубитных вентилей. В блочной матричной форме
![](https://habrastorage.org/getpro/habr/upload_files/523/fd0/d5a/523fd0d5a3813b7f5bd30b649941df70.png)
являются матрицами в стандартном базисе соответственно для вентилей CY и CZ. CZ — это условная знаковая инверсия.
Эти типы вентилей показаны на следующей схеме, где последние два инвертированы, чтобы показать, что они могут работать между произвольными проводами.
В общем случае если матрица
![](https://habrastorage.org/getpro/habr/upload_files/8ef/a44/99a/8efa4499a213210915c6b7bf1c7a8888.png)
является унитарной, то матрица для контролируемой U такова:
![](https://habrastorage.org/getpro/habr/upload_files/af3/956/8fe/af39568fe752b2e5f1dfa2cb0c95e002.png)
5. Квантовый вентиль CR
Еще одно полезное множество контролируемых вентилей представлено вентилями, действием которых является . Первый кубит определяет, должна произойти смена фазы или вращение вокруг оси z сферы Блоха.
Общая матрица для такова:
![](https://habrastorage.org/getpro/habr/upload_files/b25/c99/769/b25c99769248261d69b65dbfefadbe7a.png)
Когда включаем вентиль в схему, он имеет теперь уже знакомую для нас форму. Мы указываем конкретное радианное значение фи такое как
![](https://habrastorage.org/getpro/habr/upload_files/9cd/5e5/e26/9cd5e5e26a055d110674c7880d106fdc.png)
6. Квантовый вентиль CCNOT Тоффоли
Квантовый вентиль CCNOT Тоффоли — это двойной контрольный вентиль, оперирующий на трех кубитах. Если состояния первых двух кубитов равны |1〉, то он применяет X к третьему. В противном случае он является ID на третьем. Во всех случаях он является ID для первых двух кубитов.
Его матрица представляет собой матрицу перестановок 8 × 8, которая меняет местами два последних коэффициента, как CNOT.
![](https://habrastorage.org/getpro/habr/upload_files/b33/382/d29/b33382d291825ee999300f98f6bb5b7c.png)
Вентиль CCNOT охватывает три провода в схеме. Две верхние линии — это управляющие кубиты.
![](https://habrastorage.org/getpro/habr/upload_files/4d9/272/bb9/4d9272bb9587cd5b20b0ce284c418263.png)
Вентиль Тоффоли также называется вентилем CCX.
7. Квантовый вентиль CSWAP Фредкина
Квантовый вентиль CSWAP Фредкина — это контрольный вентиль, оперирующий на трех кубитах. Если состояние первого кубита равно |1〉, то состояния второго и третьего кубитов меняются местами, как в SWAP. Если оно равно |0〉, то ничего не меняется.
Его матрица представляет собой матрицу перестановок 8 × 8:
![](https://habrastorage.org/getpro/habr/upload_files/4ac/79c/7dd/4ac79c7dd6657c3b5004e8f99ad91fb3.png)
Как и CCNOT, вентиль CSWAP охватывает три провода, верхняя линия которых является управляющим кубитом.
![](https://habrastorage.org/getpro/habr/upload_files/2fd/14e/e6c/2fd14ee6c05394bf46d1cf3316593a78.png)
Заключение
Итак мы перечислили стандартные 2-кубитные и 3-кубитные вентильные операции, следующий шаг это поместить их в схемы и реализовать алгоритмы. Этим мы займемся в следующий раз.