Операции с несколькими кубитами

В этой статье изучаются правила создания многокубитных состояний из однокубитных состояний и операции с вентилями, которые должны присутствовать в множестве вентилей для создания универсального многокубитного квантового компьютера. Эти инструменты необходимы для понимания наборов ворот, которые часто используются в Q# коде. Они также важны для получения интуиции о том, почему квантовые эффекты, такие как запутанность или интерференция, делают квантовые вычисления более мощными, чем классические вычислительные системы.

Однокубитные и многокубитные шлюзы

Истинная сила квантовых вычислений становится очевидной только по мере увеличения числа кубитов. Отдельные кубиты обладают некоторыми контринтуитивными функциями, такими как возможность находиться в нескольких состояниях в заданное время. Тем не менее, если у вас есть только однокубитные гейты на квантовом компьютере, то его мощность будет превосходить калькулятор и, безусловно, классический суперкомпьютер будут превосходить его вычислительные возможности.

Мощь квантовых вычислений обуславливается тем, что размерность векторного пространства с векторами квантовых состояний растет экспоненциально с увеличением числа кубитов. Поэтому мы можем легко смоделировать работу одного кубита, но квантовые вычисления по пятидесяти кубитам уже упираются в пределы возможностей любого из существующих суперкомпьютеров. Увеличение размера вычисления только на один дополнительный кубит удвоит память, необходимую для хранения состояния, и примерно удвоит вычислительное время. Быстрое удвоение вычислительной мощности объясняет, почему квантовый компьютер с относительно небольшим числом кубитов может значительно превзойти современные самые мощные суперкомпьютеры, а также завтрашние и будущие, в некоторых вычислительных задачах.

Состояния двух кубитов

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

$$ \psi=\begin{bmatrix} \alpha \\ \beta \end{bmatrix} $$ $$ \phi=\begin{bmatrix} \gamma \\ \delta \end{bmatrix} $$

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

$$ \psi \otimes \phi = \begin{bmatrix} \alpha \\ \beta \end{bmatrix} \otimes \begin{bmatrix} \gamma \\ \delta \end{bmatrix} =\begin{bmatrix} \alpha \begin{bmatrix} \gamma \\ \delta \end{bmatrix} \\ \beta \begin{bmatrix}\gamma \\ \delta \end{bmatrix} \end{bmatrix} = \begin{bmatrix} \alpha\gamma \\ \alpha\delta \\ \beta\gamma \\ \beta\delta \end{bmatrix}. $$

Таким образом, учитывая два однокубитных состояния $\psi$ и $\phi$, каждое размерности 2, соответствующее двухкубитное состояние $\psi\otimes\phi$ является четырёхмерным. Вектор

$$ \begin{bmatrix} \alpha_{{00}\\\alpha_{{01}\\\alpha__{{10}\\\alpha{{11}\end{bmatrix}$$

представляет квантовое состояние на двух кубитах, если

$$ |\alpha_{{00}|^2 + |\alpha_{{01}|^2 + |\alpha_{10}|^2 + |\alpha_{{11}|^2 = 1. $$

Как правило, можно увидеть, что единичный вектор $v_1 \otimes v_2 \otimes\cdots\otimes v_n$ размерности $2 \times 2 \times 2 \cdots= 2^n$ представляет квантовое состояние $n$ кубитов с помощью этой конструкции. Как и в случае с одними кубитами, квантовый вектор состояния нескольких кубитов содержит все сведения, необходимые для описания поведения системы. Дополнительные сведения о векторах и тензорных произведениях см. в статье Векторы и матрицы в квантовых вычислениях.

Вычислительная база для двухкубитных состояний образуется из тензорных производных базисных состояний одного кубита. Для двухкубитной системы существует следующее четыре состояния:

$$00 \equiv\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix}1 \\ 0 \end{bmatrix}=\begin{bmatrix} 1 \\ 0 0 \\\\\end{bmatrix}$$

$$ 01 \equiv\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}=\begin{bmatrix} 0 \\ 1 \\ 0 \\ 0 \end{bmatrix}$$

$$ 10 \equiv\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}=\begin{bmatrix} 0 \\ 0 \\ 1 \\ 0 \end{bmatrix}$$

$$ 11 \equiv\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}=\begin{bmatrix} 0 \\ 0 \\ 0 \\ 1 \end{bmatrix}$$

Хотя вы всегда можете взять тензорный продукт двух однокубитных состояний, чтобы сформировать двухкубитное состояние, не все двухкубитные квантовые состояния можно записать в виде тензорного произведения двух однокубитных состояний. Например, нет таких состояний $\psi$ и $\phi$, такие, что их тензор-продукт является состоянием

$$ \psi \otimes \phi = \begin{bmatrix}1 / \sqrt{{2}\\0 0 \\\\ 1/.\sqrt{{2}\end{bmatrix} $$

Такое двухкубитное состояние, которое не может быть записано как тензорное произведение однокубитных состояний, называется запутанным состоянием; Говорят, что два кубита запутаны. Грубо говоря, поскольку квантовое состояние нельзя рассматривать как тензорное произведение одиночных кубитов, информация, что это состояние содержит, не ограничивается по отдельности к одному из кубитов. Информация хранится вне локальной области в формах корреляций между двумя состояниями. Эта не локальность информации является одной из основных отличительных особенностей квантовых вычислений по классическим вычислениям, и является важной для многих квантовых протоколов, включая исправление квантовых ошибок.

Измерение двухкубитных состояний

Измерение двухкубитных состояний аналогично измерениям с одним кубитом. Измерение состояния

$$ \begin{bmatrix} \alpha_{{00}\\\alpha_{{01}\\\alpha__{{10}\\\alpha{{11}\end{bmatrix}$$

Возвращает $00$ с вероятностью $|\alpha_{{00}|^2$, $01$ с вероятностью $|\alpha_{{01}|^2$, $10$ с вероятностью $|\alpha_{10}|^2$, и $11$ с вероятностью $|\alpha_{11}|^2$. Переменные $\alpha_{00}$, $\alpha_{01}$, $\alpha_{10}$ и $\alpha_{11}$ были намеренно названы так, чтобы эта связь стала очевидной. После измерения, если результат равен $00$, то квантовое состояние двухкубитной системы редуцируется и становится

$$ 00 \equiv\begin{bmatrix} 1 \\ 0 \\ 0 \\ 0 \end{bmatrix}. $$

Также можно измерить только один кубит двухкубитного квантового состояния. При измерении только одного кубита из состояния двух кубитов влияние измерения отличается от измерения двух кубитов, хотя и незначительно. Это отличается тем, что всё состояние не сворачивается в вычислительное базисное состояние, а сворачивается только до одной подсистемы. Другими словами, измерение одного кубита двухкубитного состояния сворачивает только связанную подсистему в состояние вычислительной базы.

Чтобы увидеть это, рассмотрите возможность измерения первого кубита следующего состояния, который формируется путем применения преобразования $Hadamard H$ на двух кубитах, первоначально заданных в состоянии 0:

$$H^{\otimes 2}\left( \begin{bmatrix} 1 \\ 0\end{bmatrix}\otimes\begin{bmatrix}1 \\ 0 ) \end{bmatrix}\right=\frac{{1}{2}\begin{bmatrix} 1 & &1 amp; &1 amp; \\1 1 & -1 & 1 & -1 \\1 & 1 & -1 & -1 \\1 & -1 & -1 & 1 \end{bmatrix}\begin{bmatrix}\\ 1 0 0 0 \\0\\\end{bmatrix}=\frac{{1}{2}\begin{bmatrix} 1 \\1 \\1 \\1\end{bmatrix}\mapsto\begin{cases}\text{Результат }= 0 & \frac{{1}{\sqrt{2}}\begin{bmatrix}1 1 \\0 \\0\\\end{bmatrix}\\Результат \text{1 }amp; =0 & 0 \frac{1 1.{1}{\sqrt{{2}}\begin{bmatrix}\\\\\\\end{bmatrix}\\\end{cases} $$

Оба результата имеют 50% вероятность возникновения. Этот результат можно интуитивно понять из того факта, что квантовое состояние перед измерением не изменится, если $0$ будет заменен на $1$ на первом кубите.

Математические правила измерения первого или второго кубита довольно просты. Пусть $e_k$ - это $вектор вычислительной базы k^{\rm}$, и $S$ будет набором всех $e_k$ такие, что кубит принимает значение $1$ для данного значения $k$. Например, если вы заинтересованы в измерении первого кубита, $S$ будет состоять из $e_1\equiv 10$ и $e_3\equiv 11$. Аналогичным образом, если вы заинтересованы во втором кубите $S$ будет состоять из $e_2\equiv 01$ и $e_3 \equiv 11$. Затем вероятность измерения выбранного кубита должна быть $1$ для вектора состояния $\psi$

$$ P(\text{результат}= 1) =\sum_{e_k \text{ в множестве } S}\psi^\dagger e_k e_k^\dagger\psi. $$

Примечание.

В этой статье используется маленький формат для маркировки вычислительной основы. В формате младшего порядка байтов младшие значащие биты идут первыми. Например, в маленьком формате строка битов 001 представляет число четыре.

Так как каждое измерение кубита может привести только к $0$ или $1$, вероятность измерения $0$ равна $1-P(\text{результата}=1)$, поэтому требуется только формула для вероятности измерения $1$.

Влияние такого измерения на квантовое состояние можно математически выразить как

$$ \psi \mapsto \frac{\sum_{e_k \text{ в наборе } S} e_k e_k^\dagger\psi}{\sqrt{P(\text{результат}= 1)}}. $$

Осторожный читатель может беспокоиться о том, что происходит, если знаменатель равен нулю. Хотя такое состояние не определено, вам не нужно беспокоиться о таких возможностях, так как вероятность равна нулю.

Если вы принимаете $\psi$, чтобы он был однородным вектором состояния, заранее заданным, и заинтересованы в измерении первого кубита, то

$$P(\text{измерение первого кубита}= 1) = (\psi^\dagger e_1)(e_1\dagger\psi^)+(^\psi e_3)(\daggere_3\dagger\psi^) =|e_1^\dagger\psi|2 + |e_3^2^\dagger\psi|2. $$

Это всего лишь сумма двух вероятностей, которые будут ожидаться для измерения результатов $10$ и $11$. В нашем примере это оценивается как

$$ \frac{ {1}{4} \left| \begin{bmatrix}0 &амп; 0 &амп; 1 &амп; 0 \end{bmatrix}\begin{bmatrix}1 \\ 1 \\ 1 \\ 1 \end{bmatrix}\right|^2 + \frac{1}{{4}\left|\begin{bmatrix}0 амп; 0 &амп; 0 &амп; 1 &\end{bmatrix} 1 \begin{bmatrix} 1 \\ 1 \\ 1 \\\end{bmatrix}\right|^2 =\frac{{1}{{2}. $$

который идеально соответствует нашей интуиции. Аналогичным образом, состояние после первого кубита измеряется как $1$ можно записать как

$$ \frac{\frac{ }{2}e_1+\frac{e_3}{2}}{\sqrt{\frac{1}{2}}}=\frac{1}{\sqrt{2}}\begin{bmatrix} 0 0 \\\\ 1 1 \\\end{bmatrix}$$

снова в соответствии с нашей интуицией.

Операции с двумя кубитами

Как и в случае с одним кубитом, любое унитарное преобразование считается допустимой операцией с кубитами. В общем случае унитарное преобразование по $n$ кубитам является матрицей $U$ размера $2^n \times 2^n$ (чтобы ее можно было применить к векторам размера $2^n$), так что $U^{-1}= U^\dagger$. Например, гейт CNOT (контролируемое NOT), который обычно используется как двухкубитовый гейт, выражается следующей унитарной матрицей.

$$ \text{CNOT}=\begin{bmatrix} 1 ; 0 ; 0 ; 0 0 ; 1 ; 0 ; 0 0 ; 0 ; 1 ; 0 & 0 ; 0 ; 1 ; 0 \end{bmatrix}$$

Также мы можем создать двухкубитные вентили, применив однокубитные вентили к обоим кубитам. Например, если применить ворота

$$ \begin{bmatrix}a & b c \\& amp; d\end{bmatrix}$$

и

$$ \begin{bmatrix} e & f \\ g & h \end{bmatrix}$$

к первым и вторым кубитам соответственно это эквивалентно применению двухкубитного унитарного объекта, заданного их тензорным продуктом:

a & b c & d e & f g & h ae & af be & bf ag & ah bg & bh ce & cf de & df cg & ch dg & dh . $$

Таким образом, вы можете сформировать двухкубитные ворота, образуя тензорное произведение некоторых известных однокубитных ворот. Некоторые примеры двух кубитовых ворот включают $H\otimes$, $X \otimes\mathbf{1}$и $X \otimes Z$.

Обратите внимание, что, хотя любые две однокубитные врата определяют двухкубитные врата через взятие тензорного произведения, обратное утверждение неверно. Не каждый двухкубитный вентиль можно выразить как тензорное произведение однокубитных вентилей. Такие вентили называются запутывающими вентилями. Примером запутывающего вентиля является CNOT-вентиль.

Интуитивные выводы, примененные к вентилю "управляемое НЕ", можно распространить и на любые другие вентили. Контролируемый шлюз в целом является воротами, которые действуют как удостоверение, если конкретный кубит не равен $1$. Вы обозначаете управляемый унитарный оператор, управляемый в данном случае на кубите с меткой $x$, как $\Lambda_x(U)$. В качестве примера $\Lambda_0(U) e_{1}\otimes{\psi}= e_{1}\otimes U{\psi}$ и $\Lambda_0(U) e_{{0}\otimes{\psi}= e_{{0}\otimes{\psi}$, где $e_0$ и $e_1$ являются вычислительными векторами для одного кубита, соответствующего значениям $0$ и $1$. Например, рассмотрим следующие контролируемые$ ворота Z$ , то вы можете выразить это как

_0(Z) 1 & 0 0 & 0 & 0 & 1 & 0 & 0 0 & 0 & 1 & 0 0 & 0 & 0 & -1 (\mathbf H)CNOT( H). $$

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

Для управления вентилями можно применять информацию из классических вычислений. Классически контролируемый не-ворота, например, просто обычный не-ворота, который применяется только в том случае, если классический бит $1$ в отличие от квантового бита. В некотором смысле управляемый классической информацией вентиль можно рассматривать как оператор "если" в квантовом коде, после которого вентиль применяется только в одной ветви кода.

Как и в случае с одним кубитом, множество двухкубитных вентилей считается универсальным, если любая матрица унитарных операций $4\times 4$ может быть с произвольной точностью приближенно выражена как произведение вентилей из этого множества. Например, один из примеров универсального множества вентилей включает вентиль Адамара, вентиль T и вентиль CNOT. Принимая продукты этих ворот, вы можете приблизить любую унитарную матрицу на двух кубитах.

Системы с несколькими кубитами

Для создания многокубитных квантовых состояний на основе меньших систем применяется в точности тот же подход, который мы изучили в разделе о двухкубитных системах. Такие состояния получаются вычислением тензорных произведений состояний меньшей размерности. Для примера давайте выразим битовую строку $1011001$ на квантовом компьютере. Это можно закодировать как

$$ 1011001 \equiv\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}. $$

Квантовые вентили работают точно так же. Например, если вы хотите применить шлюз $X$ к первому кубите, а затем выполнить CNOT между вторым и третьим кубитом, вы можете выразить это преобразование как

$$ \begin{align}(X \otimes\operatorname{CNOT}_{12}\otimes\mathbf{1}\otimes \mathbf{\mathbf{1}\otimes{\mathbf{1}\otimes\mathbf{1}) \begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}\equiv 0011001. \end{align} $$

Во многих системах кубитов часто требуется выделить и освободить кубиты, которые служат временной памятью для квантового компьютера. Такой кубит называется вспомогательным. По умолчанию можно предположить, что состояние кубита инициализируется в $e_0$ при выделении. Можно также предположить, что ворота снова возвращаются в $e_0$ перед освобождением ресурсов. Это предположение важно, потому что если вспомогательный кубит становится запутанным с другим кубитовым регистром, когда он освобождается, то процесс освобождения повреждает вспомогательный кубит. По этой причине вы всегда предполагаете, что такие кубиты возвращаются к исходному состоянию перед выпуском.

И наконец, хотя для достижения универсальных квантовых вычислений на двухкубитных квантовых компьютерах нам пришлось добавить новые элементы в наш набор вентилей, при переходе к многокубитным вычислениям добавлять уже ничего не требуется. Ворота $H$, $T$, и CNOT образуют универсальный набор ворот на многих кубитах, так как любое общее унитарное преобразование может быть разбито на ряд двух поворотов кубитов. Затем можно использовать теорию, разработанную для двух кубитов, и использовать ее снова здесь, когда у вас много кубитов.

Примечание.

Хотя линейная алгебраическая нотация, используемая к этой точке, безусловно, может использоваться для описания многокубитных состояний, она становится все более громоздкой по мере роста размера состояний. Результирующий вектор-столбец для 7-битной строки, например, $128$-мерный, что делает его сложным для выражения с помощью нотации, описанной ранее. Вместо этого используется символьная нотация Dirac, которая упрощает представление квантовых состояний. Дополнительные сведения см. в нотации Dirac.