Уловка, которую не раскрыл бы ни один волшебник

Этот пост является частью книги: Практическое квантовое машинное обучение с помощью Python.

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

Конечно, квантовая суперпозиция, в которой может находиться кубит, поразительна. Кубит не равен 0 или 1. Он находится во взаимосвязи между состояниями 0 и 1.

Тем не менее, способность запутать два кубита просто потрясающая. Вы измеряете один кубит, а другой мгновенно меняет свое состояние, независимо от того, как далеко он находится. Трудно поверить, что кто-то не подумал бы о телепортации, как о «Звездном пути».

Но как только я начал работать с (смоделированными) кубитами, состояние суперпозиции превратилось в вероятность. Запутанность возникла как способ манипулировать этими вероятностями. Все это довольно круто. Но в этом нет ничего загадочного. Я не мог понять, как такие вычисления могут быть намного быстрее.

Затем я наткнулся на квантовый оракул. Само название говорит о загадочности. Наконец, я, должно быть, нашел волшебный ингредиент, который искал. Единственное, что, как только я пойму, как это работает, позволит мне решить проблемы, которые невозможно решить на классическом компьютере.

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

Звучит волшебно. Не так ли?

Итак, как это работает? - спросите вы.

Это похоже на фокус. Это сбивает вас с толку, когда вы видите это впервые. Вы хотите знать, как это работает. Но как только кто-то откроет вам секрет, он станет обыденным. Он теряет свою тайну. Когда вы присоединяетесь к сообществу фокусников, избранной группе, которая знает фокус, вы больше не можете смотреть на это и просто думать «вау!».

Вы все еще хотите знать? Хорошо. Читать дальше.

Маг преподносит монету. Пока монета находится в воздухе, фокусник предсказывает, что монета покажет головы. Она ловит монету. Угадай, что ты видишь. Монета орел.

Откуда она могла знать? Вы готовы поспорить, что монетой манипулируют. Но она вам это преподносит. Похоже на обычную монету. Одна сторона головы. Другая сторона решки.

Она снова бросает его. Она просит вас спрогнозировать результат. На этот раз вы говорите решка. Монета приземляется. Угадай, что ты видишь? Монета решена вверх.

Вы снова осматриваете монету. По-прежнему выглядит как обычная монета. Но это не обычная монета. Это квантовая монета. Когда вы смотрите на монету, она либо орел, либо решка, но когда вы ее подбрасываете, она оказывается в состоянии суперпозиции. Это не похоже на обычную монету.

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

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

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

Наш волшебник создал квантовую систему, которая, кажется, сообщает ей результат подбрасывания монеты. Похоже на оракула, не так ли?

Но это не то, что она сделала. Скорее, она создала квантовую систему, которая будет прислушиваться к ее предсказаниям и вести себя соответствующим образом.

Это не кажется правдоподобным?

Тогда почему бы нам не создать эту квантовую систему программно с помощью Python и Qiskit?

Кубит обозначает нашу квантовую монету. Как только вы его подбросите, он находится в состоянии суперпозиции состояний | 0⟩ и | 1⟩. Если вы посмотрите на него, то увидите, что либо 0 означает, что монета выпадает орлом вверх, либо 1 - решка вверх. Каждое с вероятностью 0,5.

Математически состояние кубита, которое мы также называем | +⟩, равно

Мы видели это состояние раньше. Мы можем создать его, применив вентиль Адамара к кубиту в состоянии | 0⟩.

Предсказание мага - это тоже врата квантовой трансформации.

Она создала два врата и соединила их со своим предсказанием. Она соединила I-gate с предсказанием «хедз-ап». И она соединила RY (π) -гейт с предсказанием «решка вверх».

I-ворота - это ворота идентичности. Его выход равен его входу. Ничего не меняет.

RY-вентиль вращает вектор состояния кубита вокруг оси Y. Это ось, которая влияет на вероятности измерения. Он принимает в качестве параметра угол поворота состояния. Угол π обозначает ровно половину полного цикла.

На следующем изображении графически показано вращение вектора состояния кубита.

Когда вектор состояния заканчивается в левой части оси Y, тогда одна из двух амплитуд становится отрицательной.

Когда мы начинаем в состоянии | +⟩, поворот на π приводит к состоянию | −⟩, потому что cos (π / 2) = 0 и sin (π / 2) = 1.

Превращение состояния | +⟩ в | −⟩ не изменило вероятности измерения 0 или 1, потому что вероятность является квадратом амплитуды. И это положительно, в нашем случае это

В конце концов, ни один из двух вентилей не изменил вероятность измерения кубита. Но эти два состояния различаются.

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

Она только знает, что оракул может быть либо I-воротами, либо RY (π)-воротами.

I-вентиль представляет ее предсказание «хедз-ап» и оставляет кубит в состоянии | +⟩. RY (π) -гейт представляет ее предсказание «хвост вверх» и изменяет состояние кубита на | −⟩.

Сообразительный фокусник видит разницу между этими двумя состояниями. Это ее шанс осуществить ее предсказание. Все, что ей нужно сделать, это преобразовать вывод оракула в состояние, соответствующее ее предсказанию. Ей нужно превратить состояние | +⟩ в | 0⟩, а состояние | −⟩ в | 1⟩. Она применяет еще один вентиль Адамара к своей квантовой монете, ehm qubit. Это имеет желаемый эффект для обоих возможных выходов оракула. Посмотри:

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

Наш фокусник теперь хорошо подготовлен. У нее есть квантовая схема с оракулом. Это заполнитель. Когда она запускает схему, она должна заполнить этот заполнитель допустимыми воротами преобразования кубита, что она и делает, произнося вслух свое предсказание.

Вот код, созданный фокусником.

Маг создал многоразовую функцию. Он принимает в качестве параметра функцию обратного вызова - оракул (строка 5). Сначала мы создаем QuantumCircuit из одного кубита (строка 8). Подбрасывание монеты устанавливает ее в суперпозицию. Это то, что делают первые ворота Адамара (строка 11). Затем мы применяем оракул (строка 14). Что бы это ни было. Маг применяет вторые ворота Адамара, чтобы преобразовать результат оракула в желаемое состояние (строка 17). Наконец, мы запускаем схему (строка 23) и возвращаем результаты (строка 26).

Давайте запустим схему с предсказанием хедз-ап.

Когда фокусник предсказывает хедз-ап, мы всегда измеряем кубит как 0, что соответствует хедз-апу. Сделаем то же самое для прогноза «решка вверх».

В результате предсказания «хвост вверх» всегда получается кубит, который мы измеряем как 1 - представление «хвоста вверх».

Зрителей сбивает с толку ее способность заглядывать в будущее. Но, как обычно с фокусами, это иллюзия. Предполагаемая иллюзия, тщательно созданная путем организации сцены или, в данном случае, схемы.

Заключение

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

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

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

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

Этот пост является частью книги: Практическое квантовое машинное обучение с помощью Python.

Первые три главы получите бесплатно здесь.