Мы все еще находимся на ранней стадии квантовых вычислений. Ожидайте сюрпризов! Квантовый алгоритм зависит от доступных кубитов, а также от того, как эти кубиты связаны. Различные модели квантовых компьютеров могут делать это по-разному. Это похоже на то, что программа работает на процессоре Intel i7 и не работает для процессора следующего поколения. Декогеренция - еще одна серьезная проблема квантовых вычислений. Не ожидайте, что вы остановите работающую программу и возьмете кофе. Как только вы нажмете кнопку запуска, вы окажетесь под часами. Программа должна завершиться быстро, прежде чем квантовая информация разрушится. В этой статье мы рассмотрим некоторые проблемы реализации, а также проблему декогеренции.

Своп ворота

Физическая реализация кубитов может быть несимметричной. Неуправляемый вентиль может использовать кубит-0 в качестве контроля и кубит-1 в качестве цели, но не наоборот.

Здесь показано, как 2-кубит может быть подключен к CNOT-вентилю на IBM Q5.

Как показано ниже, если мы соединим q1 и q2 с управляемым неуправляемым вентилем, мы получим ошибку.

Использование q1 в качестве управляющего кубита с q2 в качестве цели на этой машине не допускается.

После перетасовки гейтов ошибка исчезла.

Вот еще один пример для IBM Q20.

Чтобы преодолеть ограничение, мы можем использовать свопинг, чтобы поменять местами два кубита.

Вот другие возможности решить эту проблему:

Универсальные ворота

В классических вычислениях вентиль NAND - это универсальный вентиль, который может строить оставшиеся операции. Мы можем реализовать еще несколько универсальных ворот по соображениям производительности. Сложные ворота построены поверх этих физических ворот. В квантовых вентилях универсальный набор

Это можно дополнительно уменьшить и аппроксимировать с любой точностью вентилями CNOT, H, S и T с некоторыми накладными расходами. На практике IBM Q (ibmqx4) реализует следующие физические шлюзы:

куда

Что касается интерфейса программирования, все следующие операции предусмотрены в IBM Q и основаны на вышеупомянутых воротах.

Это фактически подводит нас к одной важной теме.

Не все кубиты равны

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

Декогеренция и ошибки

Как упоминалось ранее, каждая квантовая программа работает по расписанию. Как только вы начинаете нажимать кнопку запуска, квантовая информация начинает ухудшаться из-за взаимодействия с окружающей средой (любыми электрическими и магнитными полями в непосредственной близости). Ваша программа должна быть завершена до того, как квантовое состояние станет мусором. Таким образом, вы должны знать длину физических квантовых вентилей, используемых в вашей программе. Поскольку программа написана на логических квантовых вентилях, полезно знать, как физические вентили преобразуются в физические вентили.

Качество квантовых компьютеров можно измерить по времени релаксации (T1), времени когерентности (T2), ошибкам считывания и ошибкам затвора.

Процесс декогеренции измеряется указанными выше T1 и T2.

T1 - Энергетическая релаксация: время, необходимое для возбужденного состояния | 1⟩, уменьшается до основного состояния | 0⟩.

T2 - дефазирование, влияющее на фазу наложения. T2 включает эффект дефазировки, а также релаксации энергии.

Именно поэтому эта информация всегда публикуется для вашей справки.

Отказоустойчивость

Отказоустойчивые вычисления уже очень давно не преподают в инженерии. Квантовые вычисления возвращают эту тему. Квантовый расчет уязвим для ошибок. Чтобы уравновесить проблему, мы можем добавить дополнительные квантовые вентили для обнаружения или исправления ошибок. Это одна из основных причин того, что нам всегда нужно гораздо больше кубитов, чем мы думаем. Следующий пример - кодировщик и декодер, допускающие ошибку в один кубит.

Следующий

Теперь закончим квантовые ворота. Далее мы начнем изучать программирование квантового алгоритма.



Вот ссылка на всю серию: