Квантовый компьютер: теория и первая программа
Квантовый компьютер — тема нашего новой статьи, если вы давно хотели узнать о них больше, сейчас самое время. Помимо теории вы напишите первый алгоритм.
То устройство, с которого вы прямо сейчас читаете этот текст, является примером классического компьютера.
Смартфоны, планшеты, ноутбуки – все они являются устройствами общего назначения, с помощью которых мы можем написать какой-либо алгоритм, дать какую-то информацию, и в теории они могут выполнить любое задание.
Потоковое вещание, создание захватывающих трехмерных сред, избавление от экзистенциального кризиса – все это выполнимо благодаря использованию этих устройств. Но в самой глубине, в своем ядре они совершают совершенно элементарные вещи. За каждым приложением стоят последовательности из простейших математических операций. Покупка билетов, игры, приложения - это все всего лишь перевод информации в строки из 0 и 1. Они представляют собой ввод данных, который передается на обработку, в результате которой появляется новая строка из 0 и 1.
Несмотря на всю сложность алгоритмов, по сути они просто совершают манипуляции со строками битов, где каждый бит это 1 или 0. Мы используем 0 и 1, потому что они демонстрируют способ представления информации, которая может быть только в одном из двух возможных состояний.
Компьютеры работают от электричества, поэтому, когда компьютер хочет отправить информацию из одного места в другое, он передает импульсы электричества по проводам. Они используют транзисторы, которые могут быть либо открыты, что значит, что ток может свободно проходить, либо закрыты, что означает, что тока нет. Оба состояния могут быть представлены либо 1, либо 0. Они похожи на световые выключатели, которые могут быть или включенными, или выключенными. Вместе эти нули и единицы могут представить любое число или букву используя бинарный код.
Компьютер использует схемы, называемые logic gates (логические вентили), состоящие из транзисторов, соединенных вместе. Они сравнивают биты для того, чтобы превратить их в новые шаблоны битов, используя простую арифметику.
Жесткие диски хранят 0 и 1, изменяя магнитные поля маленьких частей металлического диска. + и - заряды представлены 1 и 0. Компьютеры делают эти вещи очень хорошо. Они хранят числа в памяти и могут их обработать с помощью простых математических операций.
В 1965 основатель Intel - Гордон Мур предсказал, что количество транзисторов на квадратный дюйм в интегральных схемах будет удваиваться каждые 18 месяцев. Это предположение было доказано, но существуют законы, которые мы не властны изменить – законы физики. Именно они не позволяют уменьшать размер транзисторов до бесконечности.
Идея квантовых вычислений - возможное решение проблемы, и в связи с этим интерес к ним с каждым годом только увеличивается. Слово квант в физике означает минимальное количество любой физической величины, вовлеченной во взаимодействие.
Фотон - это квант света. Но это физическое определение. в просторечии используют обороты вроде квантового скачка. На самом деле, они не имеют ничего общего с квантовой физикой. Квантовая физика - это изучение физического феномена, который происходит на атомном или субатомном уровне.
На уровне атомов законы классической механики перестают работать. Ричард Фейнман лучше всего описал это: "Вещи в очень маленьком масштабе ведут себя так, что никакой прежний опыт вам совсем не поможет."
Мельчайшие частицы вроде электронов и фотонов могут одновременно принимать несколько состояний, которые в бОльших масштабах взаимоисключаемы. Они могут быть в нескольких местах в одно и то же время, или могут показывать два вида поляризации так же одновременно.
У нас нет возможности увидеть суперпозицию различных состояний, потому что только как кто-то пытается ее измерить, она исчезает. Никто на самом деле не знает, как это происходит, но это происходит.
Мы можем использовать этот концепт для освобождения компьютеров от двоичных рамок.
Квантовые компьютеры используют частицы, находящиеся в магнитном поле, при температуре близкой к абсолютному нулю, чтобы представить не биты, а кубиты вместо 0 или 1.
Они также могут представить оба состояния одновременно. Вы можете подумать: "Ну и в чем смысл?". Нельзя ли добиться суперпозиции в обычном компьютере, просто используя два обычных бита в одно и то же время, и зачем тогда кубит.
Но кроме принципа суперпозиции в квантовой физике существует идея квантовой запутанности. Если у нас есть система, состоящая из более чем одного кубита, эти частицы перестают быть независимыми друг от друга. Они запутаны так, что в системе из двух кубитов один кубит говорит другому, что вы увидите во время измерения первого.
Частицы могут быть запутаны даже на значительном расстоянии. Эйнштейн назвал квантовую запутанность жутким действием на расстоянии. Это значит, что вы не можете просто описать систему из нескольких кубитов, используя описания отдельных кубитов, вы должны описать корреляции между кубитами. Увеличение числа кубитов экспоненциально увеличивает число корреляций. Поэтому для системы всего в триста кубитов вам нужно чисел больше, чем для того, чтобы описать количество атомов в видимой части Вселенной.
Так как мы не можем просто записать информацию, содержащуюся в системе из нескольких сотен кубитов, используя классические биты, возможно, компьютер, работающий на этих кубитах, может выполнять задачи, которые недостижимы для классических компьютеров.
Поэтому люди ожидают многое от квантовых вычислений. Давайте создадим простой квантовый алгоритм в Python с использованием квантового API от IBM.
Пишем первую программу
Чтобы узнать больше, рекомендуем вам зарегистрироваться на веб-сайте IBM для доступа к их API. Для дальнейшей работы вам нужно загрузить SDK и использовать его в Python.
Итак, в этот раз мы создадим алгоритм Дойча-Йожи, один из первых алгоритмов, предложенных к выполнению на квантовых компьютерах.
Нам дан квантовый компьютер, известный как Oracle, реализующий некоторую функцию f, которая принимает n двоичных значений в качестве ввода и выводит либо 0, либо 1.
Для каждого значения функция постоянна, 0 либо 1 на вводе.
Она также может быть сбалансирована, что позволит получить 1 в половине вводимого множества всех допустимых значений и 0 в другой половине.
Задача состоит в том, чтобы определить постоянна функция f или же она сбалансирована, используя Oracle.
Для начала мы должны инициализировать объект квантовой программы с квантовым и классическим регистром, содержащим 3 бита.
Программа позволяет совершать манипуляции с квантовыми схемами, и каждая имеет набор регистров данных.
Мы применим Адамаров вентиль к каждому кубиту. Так, что можно будет увидеть все возможные состояния.
Для каждого возможного состояния мы применим Oracle.
В нашем случае Oracle - это сбалансированная функция. Затем мы применим H-gate ко всем кубитам снова, вот и весь наш алгоритм.
Для постоянной функции мы можем ожидать 100% шанс наблюдения всех нулей, а от сбалансированной функции мы можем ожидать, что угодно.
Это демонстрирует, что проблема черного ящика может быть эффективно решена с помощью квантового компьютера без ошибок. Классическому компьютеру для достижения этой цели понадобиться гораздо больше запросов к черному ящику.
Подведение итогов:
- Квантовая физика – изучение физического феномена, который происходит на атомном или субатомном уровне.
- Квантовые вычисления используют такие явления квантовой физики как принцип суперпозиции и запутывание для создания более эффективных алгоритмов.
- Кубит – фундаментальная единица квантовых вычислений, способная одновременно представлять, как 1, так и 0.
Другие статьи по теме
Как понять программиста: ТОП важных вещей о программировании
Как превратить программирование в профессиональное ремесло за 8 простых шагов