Глава 15 Квантовые компьютеры

Программист:

«Какое сейчас значение переменной?»

Квантовый компьютер:

«А фиг знает»

Все танцуют.

Раз уже мы нынче превосходные спецы в квантовой физике, способные своим знанием матчасти заткнуть любого шарлатана, рассуждающего о божественной воле в двухщелевом эксперименте, то уж разобраться с наскоку в том, как работают квантовые компьютеры, нам вообще не проблема. Наверное. Но как бы то ни было, квантовые компьютеры — тема животрепещущая, вызывающая разные слухи, мифы и необоснованные инвестиции. Так что давайте пробежимся по предмету, чтобы представлять, где истинная правда, а где враньё, особенно в поделках недобросовестных СМИ или блогеров.



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

В основе обычного компьютера у нас лежит понятие бита. Битом может быть любой объект, который является нам в двух однозначных состояниях: черный-белый, теплый-холодный, север-юг, плюс-минус. Если не забивать голову реализацией устройства бита, то мы для упрощения пользуемся понятием 0 или 1. Полагаем, что читатель имеет представление об основах информатики, так как в наше просвещенное время без компьютеров как без рук. Важное в этих ваших битах то, что мы всегда, в любой момент знаем или можем узнать их значение. Бит либо включен, либо выключен. Либо ноль, либо один. Когда мы считываем его значение, то это значение не пропадает, не меняется, не превращается в черную дыру, оно гарантированно сохраняется для потомков. Когда мы проводим операции над битами, результаты тоже подчиняются строгой бинарной логике и не выдают неожиданных значений. Два плюс два равно четыре.

А вот если мы возьмем что-нибудь с квантовыми эффектами, то тут с определенностью, сами знаете, как-то уже не очень. Квантовые объекты в этой главе мы будем называть кубитами (кстати, кубики тут не причем, Q-бит, квантовый бит — и всего-то). Кубитом может быть вещь, состояние которой находится в суперпозиции: электрон, у которого спин одновременно и вверх и вниз, или пространственная ориентация фотона, когда электромагнитное поле как бы вдоль и поперек (поляризация), или даже кот Шрёдингера, живой и мертвый одновременно.

Для квантовых вычислений интерес представляет совсем не итоговое значение кубита, измерение состояния кубита означает конец игры и ничего феноменального в себе не несет. В квантовых вычислениях всё веселье состоит в манипуляции вероятностями состояний кубита. Вы можете и не поверить, но технически мы способны менять вероятности обнаружения кота живым. К примеру, вот у нас коробка с котиком, мы знаем, что вероятность потискать его живого — 50 %. А вот нажимаем волшебную кнопку, и вероятность спасения кота уже 80 %. Или даже 100 %. Или ноль. При этом мы не знаем, что там с котом, не знаем, каким мы его обнаружим, когда откроем коробку. Ведь даже при вероятности 99 %, что он жив, Вселенная может выкинуть нам однопроцентный трагический исход. Но, мы знаем вероятности и умеем с ними обращаться.

Читатели конечно же понимают, что кубиты из котиков это плохая идея, поэтому квантовые алгоритмы ваяют на фотонах и электронах. Электрон пропускают через магниты и добиваются поворота его спина таким образом, что при измерении вероятность спина, скажем, вверх, будет 100 % или 60 %, 50 %, 10 % и так далее. Главное, что состояние электрона не измеряется, а через воздействие, меняются вероятности, не разрушая суперпозиции. Да, технически это сложно, частицы пытаются свалить в закат, сколлапсировать по любому поводу, провзаимодействовать с космическими лучами, сбиться с курса от кашля в соседнем подземелье и так далее. Поэтому головная боль инженеров совсем не в алгоритмах, а в том, как держать кубиты в изоляции от внешнего мира — только тогда они будут работать как требуется.

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

Вот почему в квантовой логике используются другие операторы. Чаще всего их называют логическими вентилями или гейтами. Так типа круче, сразу видно, что не олдскул какой-то, а квантовый программист. Будем тоже использовать эти словечки, что мы хуже что ли?

Все гейты мы описывать не будем. Расскажем про самые известные.

Например, гейт «квантовый NOT». По смыслу он похож на обычный оператор «НЕ». Этот гейт меняет местами вероятности в кубите. Вот, например, был у нас кубит, у которого вероятность сколлапсировать в ноль составляет 20 %, а в единицу — 80 %. Применяем гейт NOT и теперь у нас получается, что вероятность нуля — 80 %, а единицы — 20 %. Инвертировали кубит, так сказать. Занятно, как минимум!

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

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

Вот, к примеру, квантовый гейт, который называют «контролируемое отрицание» или CNOT. Для его работы нужно уже как минимум два кубита. Гейт инвертирует второй кубит, если первый кубит равен единице. При этом мы уже получаем не изолированные кубиты, а систему запутанных кубитов, когда изменение в одном влияет на другие.

Контролируемое отрицание может быть представлено в еще более сложных версиях (CCNOT, CSWAP) когда в операции участвует больше кубитов, как обычных, так и контролирующих. На таких гейтах можно создавать серьезные вычислительные устройства, а не только баловаться!

Так как же всё это использовать на благо человечества?

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

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

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

Отметим, что квантовый алгоритм не один, их существует несколько для разных задач. Самые известные это алгоритм Гровера (для задач перебора), алгоритм Шора (для разложения числа на множители), алгоритм Дойча (определение типа функции) и так далее. Да, они сложные, трудно описываемые человеческим языком, с непривычной логикой и непонятными символами. И все-таки вы можете найти в интернете сервисы, позволяющие почувствовать себя квантовыми программистами. На сайте того же IBM есть возможность поиграться с квантовыми гейтами на пяти кубитах. Конечно, квантовые крестики нолики вы не создадите, но въехавшему в тему сложить два числа будет вполне под силу.

Остался вопрос, и где эти компьютеры? Ответ зависит от того, что на сегодняшний день считать квантовыми компьютерами. В лабораториях ученых и в мрачных подземельях IT-гигантов что-то получается, они запускают систему кубитов, проводят над ними операции и получают правильные результаты. Но на эти исследования тотчас же обрушивается тонна критики и скептицизма, мол, вы вот тут запутали десяток кубитов в условиях близких к сферическому коню в вакууме. Но повторить это в домашних условиях нет никакой возможности и скорее всего такой возможности не представится. Ну, разве что кто-нибудь додумается до революционной технологии изоляции кубита или, что еще вероятнее, прилетят инопланетяне и поделятся идейками. Так что, несмотря на громкие заявления в СМИ бытовых квантовых компьютеров у нас до сих пор нет. В лабораториях же проводятся сверхдорогие эксперименты, в которых на квантах решают задачи, которые можно быстрее посчитать даже не на калькуляторе, а на бухгалтерских счетах. Есть еще пресловутые компьютеры от D-Wave, про которые вы даже могли слышать, но спешим вас разочаровать: это не совсем квантовые компьютеры, в них применяется квантовый отжиг — веселенькое такое понятие, означающее поиск оптимальных значений функции с помощью квантовых эффектов. То есть компьютеры D-Wave созданы только для одной задачи и работают по отличному от описанного выше принципу. Однако те же спецы из Google подтверждают, что алгоритмы D-wave превосходят классические алгоритмы задачи оптимизации, а значит оно работает и это прекрасно.

Ждать ли нам квантовые компьютеры в ближайшем будущем? Будет ли у нас с помощью кубитов собираться за наносекунду отчет и пасьянс? Правда ли что искусственному интеллекту нужны квантовые алгоритмы? Лично наше мнение: вряд ли. И препятствует этому не только технологический затык, но и скромная область применения алгоритмов — разработчикам открыто непаханое поле заумной математики, где рулят комплексные числа и многомерные пространства. Программист будущего вряд ли отделается знанием бинарной математики, а значит, нам, гуманитариям, придется подтягивать матчасть и таки браться за учебник элементарной высшей математики, чтобы хоть немного понимать, что у них там происходит.

Загрузка...