Операции с несколькими кубитами
В этой статье изучаются правила создания многокубитных состояний из однокубитных состояний и операции с вентилями, которые должны присутствовать в множестве вентилей для создания универсального многокубитного квантового компьютера. Эти средства необходимы для понимания наборов ворот, которые часто используются в Q# коде. Они также важны для получения интуиции о том, почему квантовые эффекты, такие как запутанность или интерференция, рендеринг квантовых вычислений более мощные, чем классические вычисления.
Однокубитные и многокубитные шлюзы
Истинная сила квантовых вычислений становится очевидной только по мере увеличения числа кубитов. Отдельные кубиты обладают некоторыми контринтуитивными функциями, такими как возможность находиться в нескольких состояниях в заданное время. Тем не менее, если все, что у вас было на квантовом компьютере, были однокубитными воротами, то калькулятор и, безусловно, классический суперкомпьютер будет карлик его вычислительной мощности.
Мощь квантовых вычислений обуславливается тем, что размерность векторного пространства с векторами квантовых состояний растет экспоненциально с увеличением числа кубитов. Поэтому мы можем легко смоделировать работу одного кубита, но квантовые вычисления по пятидесяти кубитам уже упираются в пределы возможностей любого из существующих суперкомпьютеров. Увеличение размера вычисления только на один дополнительный кубит удвоит память, необходимую для хранения состояния, и примерно удвоит вычислительное время. Такой резкий рост вычислительной мощности легко объясняет, почему квантовый компьютер даже с относительно малым числом кубитов способен превзойти на некоторых типах вычислений не только самые мощные суперкомпьютеры из ныне существующих, но и любые теоретически возможные.
Состояния двух кубитов
Если у вас есть два отдельных кубита, один в состоянии $\psi=\begin{bmatrix}\\\beta\end{bmatrix}$\alphaи другой в состоянии\end{bmatrix}$\\\gamma\delta$\phi=\begin{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$ равно 4-мерным. Вектор
$$\begin{bmatrix}\alpha_{{00}\alpha\\_{\\\alpha{01}__{{10}\\\alpha{{11}\end{bmatrix}$$
представляет квантовое состояние на двух кубитах, если
$$|\alpha_{00}|^2+_{01}|^2+|\alpha|\alpha_{10}|{^2+|\alpha_{{11}|^2=1.$$
В более общем случае квантовое состояние $n$ кубитов выражается в этой конструкции единичным вектором $v_1 \otimes v_2 \otimes \cdots \otimes v_n$ с размерностью $2 \cdot 2 \cdot 2 \cdots= 2^n$. Как и с одиночными кубитами, вектор квантового состояния для нескольких кубитов содержит всю информацию, необходимую для описания поведения системы. Дополнительные сведения о векторах и тензорных произведениях см. в статье Векторы и матрицы в квантовых вычислениях.
Вычисление для двух кубитовых состояний формируется тензорными продуктами однокубитных состояний. Например, у вас есть
$$\begin{\begin{align}00 \equiv\begin{bmatrix}1 \\ 0\begin{bmatrix}\end{bmatrix}\otimes 1 \\ 0 \end{bmatrix}&ам;=\begin{bmatrix}1 \\ 0\\ 0\\ 0\qquad\end{bmatrix}, 01 \equiv\begin{bmatrix}1\begin{bmatrix}\\ \end{bmatrix}\\ \end{bmatrix}\otimes=\\\\\\\begin{bmatrix}\end{bmatrix}0 0 1 0 1 0 0,\\ 10 \equiv\begin{bmatrix}0 \\ 1 1 \end{bmatrix}\otimes\begin{bmatrix}1 \\ 0&\end{bmatrix} ам;=\begin{bmatrix}\\ 0 0\\ 1\\ 0\qquad\end{bmatrix}, 11\begin{bmatrix}\equiv 0 \\ 1 0 \\ 1 \end{bmatrix}=\end{bmatrix}\otimes\begin{bmatrix}\begin{bmatrix}0 \\ 0\\ 0\\ 1.\end{bmatrix} \end{align} $$
Обратите внимание, что в то время как вы всегда можете принимать тензорный продукт двух однокубитных состояний, чтобы сформировать двух кубитовое состояние, не все двух кубитовы квантовые состояния можно записать как тензорный продукт двух однокубитных состояний. Например, не существует таких состояний $\psi=\begin{bmatrix}\alpha\\\beta\end{bmatrix}$ и $\phi=\begin{bmatrix}\gamma\\\delta\end{bmatrix}$, чтобы их тензорное произведение соответствовало состоянию
$$\psi\otimes\phi=\begin{bmatrix} 1/\sqrt{{2}\\ 0 \\ 0 \\ 1/\sqrt{{2}\end{bmatrix}.$$
Такое двухкубитное состояние, которое невозможно выразить через тензорное произведение однокубитных состояний, называется &состоянием запутанности&, а два кубита в этом случае называются запутанными. Грубо говоря, информация, хранимая состоянием, не принадлежит ни одному из кубитов по отдельности, так как квантовое состояние нельзя рассматривать как тензорное произведение однокубитных состояний. Эта информация хранится нелокально, как набор корреляций между двумя состояниями. Эта не локальность информации является одной из основных отличительных функций квантовых вычислений по классическим вычислениям и является важной для ряда квантовых протоколов, включая исправление квантовых ошибок.
Измерение двухкубитных состояний
Измерение двухкубитных состояний мало чем отличается от однокубитных измерений. Измерение состояния
$$\begin{bmatrix}\alpha_{{00}\alpha\\_{\\\alpha{01}__{{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 1 \\ 0 \end{bmatrix}\right\begin{bmatrix}\end{bmatrix}\otimes){1}{2}\begin{bmatrix}\frac{= 1 &&&&\\ &&&\\ &\\ && 1 и 1 а; 1 а; -1 а; -1 а; 1 а; -1 1 а; 1 а; -1 ам; -1 ам; -&&1 и \end{bmatrix}\begin{bmatrix}\\ 1 0 0\\ 0={1}{2}\begin{bmatrix}\end{bmatrix}\\\\\frac{\mapsto}=\\\begin{cases}\text{\end{bmatrix}\\ 0 1 1 1 1 1 1 1 1 1 1 1 результаты 0 & \frac{{1}{\sqrt{2}}\begin{bmatrix}1 1 0 0\text{\end{bmatrix}\\\\ результатов }=1 &а;{2}}\begin{bmatrix}{1}{\sqrt{\frac{\\\\0\\ 0\\ 1\\ 1\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 01$ и $e_3\equiv \equiv 11$. В этом случае вероятность значения $1$ при измерении выбранного кубита для вектора состояния $\psi$
$$ P(\text{результат}=1)=\sum_{e_k \text{ в множестве } S}\psi^\dagger e_k e_k^\dagger\psi. $$
Примечание.
В этой статье используется маленький формат для маркировки вычислительной основы. Это означает, что первым указывается менее значимый бит. Например, число 4 в двоичной системе с порядком битов "от младшего к старшему" будет выражено как 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^\dagger e_3)(e_3^\dagger\psi)=|e_1^\dagger\psi|^2+|e_3^\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}\begin{bmatrix}1\\ 1 1 1\\\right|\end{bmatrix}^2{2}=\frac{{1}{.\\ $$
который идеально соответствует нашей интуиции. Аналогичным образом, состояние после первого кубита измеряется как $1$ можно записать как
$$\frac{\frac{e_1}{2}+\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 (контролируемое НЕ), который обычно применяется для операций с двумя кубитами, выражается следующей унитарной матрицей:
$$\operatorname{CNOT}=\begin{bmatrix} 1\ 0\ 0\ 0 \\ 0\ 1\ 0\ 0 \\ 0\ 0\ 0\ 1 \\ 0\ 0\ 1\ 0 \end{bmatrix}$$
Также мы можем создать двухкубитные вентили, применив однокубитные вентили к обоим кубитам. Например, если применить ворота
$$\begin{bmatrix} a\ b\\ c\ d \end{bmatrix}$$
и
$$\begin{bmatrix} e\ f\\ g\ h \end{bmatrix}$$
к первому и второму кубитам соответственно это эквивалентно применению двухкубитного унитарного объекта, заданного их тензорным продуктом: $$\begin{bmatrix} a\ b\ b\\\ d \end{bmatrix}\otimes\begin{bmatrix} e\ f\\\ h ae\begin{bmatrix}\end{bmatrix}=\ af\ be\ bf \\ ag\ ah\ bg\ bh \\ ce\ de\ df \\ cg\ ch\ dg\ dh.\end{bmatrix}$$
Таким образом, вы можете сформировать два кубита ворота, принимая тензор продукт некоторых известных однокубитных шлюзов. Некоторые примеры двух кубитовых ворот включают $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$, то вы можете выразить это как
$$\Lambda_0(Z)=\begin{bmatrix}1& 0&амп; 0&амп; 0\\0&ам; 1&ам; 0&амп; 0\\0&ам; 0&амп; 1&ам; 0\\0&ам; 0&амп; 0&-1 \end{bmatrix}=(\mathbf\mathbf{1}\otimes{ H)\operatorname{CNOT}(\mathbf{1}\otimesH). $$
Эффективное создание контролируемых унитарных преобразований — непростая задача. Простейшим подходом является реализация базы данных управляемых версий базовых вентилей с последующей заменой каждого базового вентиля в исходной унитарной операции на управляемый аналог. Но этот подход часто очень избыточен, и тщательный анализ часто позволяет получить аналогичный результат заменой всего нескольких вентилей на управляемые аналоги. По этой причине платформа предоставляет возможность выполнять наивный метод управления или разрешить пользователю определить управляемую версию унитарного, если известна оптимизированная версия ручной настройки.
Для управления вентилями можно применять информацию из классических вычислений. Например, вентиль "НЕ", управляемый классической информацией, применяется не всегда, а только в том случае, когда некоторый классический (а не квантовый) бит имеет значение $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{\begin{align}&ампер; (X \otimes\operatorname{CNOT}_{\mathbf{1}\otimes{12}\otimes \mathbf{\mathbf{1}\otimes \mathbf \mathbf \mathbf{\mathbf{1}{\otimes\mathbf{1}) \begin{bmatrix} 0 \\ 1\begin{bmatrix} \\ \end{bmatrix}\otimes1 0\begin{bmatrix} \end{bmatrix}\otimes0 \\ \end{bmatrix}\\\begin{bmatrix} \\ \end{bmatrix}\otimes\otimes\begin{bmatrix} \\\begin{bmatrix} \end{bmatrix}\otimes1 0 1 0 1 0 0 \end{bmatrix}\otimes\\\begin{bmatrix} 1 \end{bmatrix}\\&\qquad\qquad\equiv 0011001. \end{align}
Во многих системах для работы с кубитами часто требуется выделять и возвращать кубиты, выполняющие роль временного хранилища. Такой кубит называется вспомогательным. По умолчанию можно предположить, что состояние кубита инициализируется для $e_0$ при выделении. Кроме того, можно предположить, что он возвращается еще раз, чтобы $e_0$ перед размещением сделки. Это очень важное допущение, так как вспомогательные кубиты при освобождении могут становиться запутанными с другими регистрами кубитов, и тогда процесс освобождения повредит вспомогательный кубит. По этой причине вы всегда предполагаете, что такие кубиты возвращаются к исходному состоянию перед выпуском.
И наконец, хотя для получения универсального метода квантовых вычислений для двухкубитных квантовых компьютеров нам пришлось добавить новые вентили в множество, при переходе к многокубитным вычислениям ничего добавлять уже не нужно. Вентили $H$, $T$ и CNOT создают универсальное множество вентилей для многокубитных вычислений, так как любое унитарное преобразование по нескольким кубитам можно разделить на последовательность поворотов двух кубитов. Затем вы можете использовать теорию, разработанную для двух кубитов, и использовать ее снова здесь, когда у вас много кубитов.
Примечание.
Хотя линейная алгебраическая нотация, используемая до сих пор, может быть использована для описания многокубитных состояний, он становится все более громоздким по мере увеличения размера состояний. Результирующий вектор столбца для строки длиной 7 битов, имеет $128$ измерений, что значительно затрудняет его выражение с помощью описанной выше нотации. Вместо этого используется символьная нотация Dirac, которая упрощает представление квантовых состояний. Дополнительные сведения см. в нотации Dirac.