Про эту вашу физику - Дмитрий Владимирович Ганин
В основе обычного компьютера у нас лежит понятие бита. Битом может быть любой объект, который является нам в двух однозначных состояниях: черный-белый, теплый-холодный, север-юг, плюс-минус. Если не забивать голову реализацией устройства бита, то мы для упрощения пользуемся понятием 0 или 1. Полагаем, что читатель имеет представление об основах информатики, так как в наше просвещенное время без компьютеров как без рук. Важное в этих ваших битах то, что мы всегда, в любой момент знаем или можем узнать их значение. Бит либо включен, либо выключен. Либо ноль, либо один. Когда мы считываем его значение, то это значение не пропадает, не меняется, не превращается в черную дыру, оно гарантированно сохраняется для потомков. Когда мы проводим операции над битами, результаты тоже подчиняются строгой бинарной логике и не выдают неожиданных значений. Два плюс два равно четыре.
А вот если мы возьмем что-нибудь с квантовыми эффектами, то тут с определенностью, сами знаете, как-то уже не очень. Квантовые объекты в этой главе мы будем называть кубитами (кстати, кубики тут не причем, Q-бит, квантовый бит — и всего-то). Кубитом может быть вещь, состояние которой находится в суперпозиции: электрон, у которого спин одновременно и вверх и вниз, или пространственная ориентация фотона, когда электромагнитное поле как бы вдоль и поперек (поляризация), или даже кот Шрёдингера, живой и мертвый одновременно.
Для квантовых вычислений интерес представляет совсем не итоговое значение кубита, измерение состояния кубита означает конец игры и ничего феноменального в себе не несет. В квантовых вычислениях всё веселье состоит в манипуляции вероятностями состояний кубита. Вы можете и не поверить, но технически мы способны менять вероятности обнаружения кота живым. К примеру, вот у нас коробка с котиком, мы знаем, что вероятность потискать его живого — 50 %. А вот нажимаем волшебную кнопку, и вероятность спасения кота уже 80 %. Или даже 100 %. Или ноль. При этом мы не знаем, что там с котом, не знаем, каким мы его обнаружим, когда откроем коробку. Ведь даже при вероятности 99 %, что он жив, Вселенная может выкинуть нам однопроцентный трагический исход. Но, мы знаем вероятности и умеем с ними обращаться.
Читатели конечно же понимают, что кубиты из котиков это плохая идея, поэтому квантовые алгоритмы ваяют на фотонах и электронах. Электрон пропускают через магниты и добиваются поворота его спина таким образом, что при измерении вероятность спина, скажем, вверх, будет 100 % или 60 %, 50 %, 10 % и так далее. Главное, что состояние электрона не измеряется, а через воздействие, меняются вероятности, не разрушая суперпозиции. Да, технически это сложно, частицы пытаются свалить в закат, сколлапсировать по любому поводу, провзаимодействовать с космическими лучами, сбиться с курса от кашля в соседнем подземелье и так далее. Поэтому головная боль инженеров совсем не в алгоритмах, а в том, как держать кубиты в изоляции от внешнего мира — только тогда они будут работать как требуется.
Итак, не углубляясь в технические детали, мы уразумели, что в квантовых вычислениях, мы творим с вероятностями странные вещи. И тут хитрые математики предложили несколько логических операторов для манипуляций с состояниями кубитов. В обычном доисторическом компьютере логические операторы опять же известны любому, кто хоть раз пытался в Экселе упростить себе сбор отчета с помощью формул. Помните, все эти логические И, ИЛИ, НЕ? Это операторы над битами, которые принимают одни значение битов и выдают другие. С кубитами такие операции не прокатят, потому что применение такого оператора на обычном компьютере означает считывание значения бита, его измерение и дальнейшая обработка результата. В квантовом компьютере мы должны как можно дольше издеваться над кубитом, не выясняя его значение.
Вот почему в квантовой логике используются другие операторы. Чаще всего их называют логическими вентилями или гейтами. Так типа круче, сразу видно, что не олдскул какой-то, а квантовый программист. Будем тоже использовать эти словечки, что мы хуже что ли?
Все гейты мы описывать не будем. Расскажем про самые известные.
Например, гейт «квантовый NOT». По смыслу он похож на обычный оператор «НЕ». Этот гейт меняет местами вероятности в кубите. Вот, например, был у нас кубит, у которого вероятность сколлапсировать в ноль составляет 20 %, а в единицу — 80 %. Применяем гейт NOT и теперь у нас получается, что вероятность нуля — 80 %, а единицы — 20 %. Инвертировали кубит, так сказать. Занятно, как минимум!
Другой гейт назван в честь одного математика с фамилией Адамар. В общем и целом, гейт Адамара переводит вероятности кубита в равные значения. Помните полупрозрачное зеркало в главе про двущелевой эксперимент, который делил суперпозицию падающего на него фотона на две траектории с одинаковой вероятностью. Вот это, в принципе, и есть гейт Адамар. Но в математике он записывается сложно и непонятно. Поэтому запомним его таким.
Далее, конечно, все сложнее и сложнее. Квантовые вычисления были бы скучными, если бы выполнялись на одном кубите. Но если взять пару кубитов (или даже побольше), вот тут-то и начнется жара! При выполнении логических операций над несколькими кубитами происходит не просто какое-то там перемешивание вероятностей, а кубиты еще и запутываются (см. предыдущие главы).
Вот, к примеру, квантовый гейт, который называют «контролируемое отрицание» или CNOT. Для его работы нужно уже как минимум два кубита. Гейт инвертирует второй кубит, если первый кубит равен единице. При этом мы уже получаем не изолированные кубиты, а систему запутанных кубитов, когда изменение в одном влияет на другие.
Контролируемое отрицание может быть представлено в еще более сложных версиях (CCNOT, CSWAP) когда в операции участвует больше кубитов, как обычных, так и контролирующих. На таких гейтах можно создавать серьезные вычислительные устройства, а не только баловаться!
Так как же всё это использовать на благо человечества?
Из кубитов и операций над ними собираются вычислительные алгоритмы, которые должны иметь преимущество перед обычными компьютерами. Обращаем внимание, что не все вычисления будут работать быстрее, а лишь некоторые, вроде поиска делителя числа, когда требуется выяснить простое у нас число или составное. Квантовый компьютер найдет решение значительно быстрее, чем классический компьютер. В системе запутанных кубитов вычисление происходит не по одному числу, а сразу по