Сто лет недосказанности: Квантовая механика для всех в 25 эссе - Алексей Михайлович Семихатов
Десять кубитов позволяют закодировать числа от нуля до 1023, что все еще совсем не много, но сто кубитов – от нуля до числа, в котором уже 31 знак, и оно несколько больше тысячи миллиардов миллиардов миллиардов. Тысяча кубитов отвечает большому числу, в котором 302 знака.
Каждый кубит превращается в обычный бит (принимающий одно из двух значений А и Б) в результате финального измерения. Волновая функция со всеми ее внутренними числами тогда погибает, потому что каждый кубит вынужден «определиться», кем ему стать: состоянием «А» или «Б». «Возникновение чисел» в конце квантового вычисления, таким образом, – работа многократно нам уже встречавшегося коллапса волновой функции (который, как всегда, или постулируется без пояснений, или же объясняется тем или иным образом, как мы видим из других глав). Если угодно, коллапс превращает кубиты в биты.
Но что с индетерминизмом? Мы ведь не властны над результатами измерения: состояние «(А, А) плюс 2 (Б, Б)», например, может показать при измерении результат АА (число 0), а может и ББ (число 3). Заметим, впрочем, что в данном случае измерение заведомо не способно дать результаты АБ и БА (числа 1 и 2) – что уже может иметь некоторый смысл, если обсуждаемое состояние возникло как результат какого-то квантового вычисления. А неопределенность между ответом 0 и ответом 3 мы в состоянии разрешить, повторяя вычисление достаточное число раз, чтобы надежно увидеть, какой ответ возникает с большей вероятностью. В итоге мы бы заключили, что ответ – число 3.
Этот способ действий и применяется в настоящих квантовых вычислениях: нужно добиться, чтобы одно состояние – скажем, «Б, А, А, А, Б, А, Б, Б, Б, А, Б, А, А, А, А, Б, Б, А, А, А, Б, Б, Б, Б, А, А», если у вас 26 кубитов, – кодирующее правильный ответ (36 603 452 в данном случае), оказалось выделено среди всех остальных: выделено сопровождающим его внутренним числом, которое по правилу Борна определяло бы самую высокую вероятность коллапса к этому состоянию при финальном измерении. Другими словами, в ходе эволюции волновой функции при выполнении квантового алгоритма самое большое внутреннее число должно «накопиться» у правильного ответа{80}.
Изобрести последовательность преобразований, которая это обеспечивает, и означает придумать квантовый алгоритм для решения какой-либо задачи. Никаких готовых рецептов для создания квантовых алгоритмов нет, это скорее искусство; тем не менее некоторое количество квантовых алгоритмов придумать удалось, а главная причина внимания к ним в том, что при увеличении объема данных они ведут себя иначе, чем классические алгоритмы.
Вычисление в обычном компьютере, как правило, требует выполнения большого количества операций, и критический вопрос – как это количество операций растет по мере того, как увеличивается объем входных данных. В целом ряде задач оно растет так быстро, что скоро даже суперкомпьютеру требуются годы вычислений. Актуальным примером является задача разложения чисел на множители – актуальным потому, что на ее сложности для обычных компьютеров основаны распространенные схемы шифрования. Число 15 мы разлагаем на множители (3 и 5) в уме, разложение числа 323 потребует от вас небольших усилий, а машина сделает это шутя, но перед серьезными числами, в несколько сотен знаков, компьютер уже практически бессилен: ему придется перепробовать так много вариантов, что ответ появится только тогда, когда давно уже перестанет представлять интерес. Квантовый же алгоритм разложения на множители обходится без лавинообразного роста числа операций. Требуется только достаточное количество кубитов – а как мы видели, уже тысяча кубитов позволяет оперировать с очень значительными числами.
Причина, по которой квантовый компьютер исполняет некоторые избранные алгоритмы несравненно быстрее, чем обычный компьютер решает ту же задачу с помощью доступных ему методов, – как раз в том, что волновая функция всех кубитов вместе взятых, подчиняясь уравнению Шрёдингера, эволюционирует во времени как единое целое.
Дело даже не в том, что, как часто можно услышать, «каждый кубит является нулем и единицей одновременно» (эта фраза означает попросту, что состояние кубита может быть какой-то комбинацией «a А плюс b Б» с любыми числами a и b). Сила квантового компьютера происходит не столько отсюда, сколько из запутывания различных кубитов и комбинирования состояний, относящихся к группам кубитов. Например, волновая функция группы из четырех кубитов может выражаться как комбинация состояний «А, А, А, А», «Б, Б, Б, Б» и «А, Б, А, Б» (наугад выбранных мною для иллюстрации из 16 возможностей), каждое с каким-то сопровождающим его внутренним числом. Ни про один кубит из четырех при этом нельзя сказать, что он «представляет собой ноль и единицу одновременно». Эволюционирует же во времени, как всегда в квантовой механике, вся комбинация целиком, т. е. «a (А, А, А, А) плюс b (Б, Б, Б, Б) плюс c (А, Б, А, Б)». Собственно говоря, эволюционируют «внутренние» числа a, b, c и так далее – изменяются таким образом, чтобы к концу вычисления самое большое из них сопровождало правильный ответ (если правильный ответ – АБАБ, т. е. число 5, то больше других должно стать число c).
Конечно, эволюционируя в ходе выполнения алгоритма, волновая функция может представлять собой комбинацию всех состояний: всех 16 в только что приведенном примере четырех кубитов, всех 1024, если кубитов десять, или всех 126765060022822-9401496703205376, если кубитов сто. Перед каждым состоянием в результате исполнения квантовой схемы вычислений появится какое-то внутреннее число, определяющее вероятность при финальном измерении. При желании можно думать, что квантовый компьютер пробует все «ответы», правильный наряду со всеми неправильными, но для правильного алгоритм «выращивает» внутреннее число, дающее самую большую вероятность.
Все это неплохо в принципе, но на практике деликатные физические системы легко выходят из-под контроля. Теоретическая схема работы квантового компьютера исключает обмен информацией с окружающей средой в процессе исполнения алгоритма, но на практике полностью исключить взаимодействие с ней нельзя, и в результате среда так и норовит внести неконтролируемые изменения в состояния кубитов. Кроме того, какие-то из преобразований, составляющих схему квантовых вычислений (упомянутый выше CNOT и его друзья), могут выполняться неточно. У каждого физического устройства есть показатель надежности, и это никогда не сто процентов. Финальное измерение также может произойти с ошибкой. Наконец, кубит может втянуться в «разговор» (взаимодействие) с соседним кубитом, в результате чего возникнут непредусмотренные изменения в их состоянии.
При этом ошибки, случающиеся в квантовых компьютерах, более разнообразны, чем в обычных. Там сбой может состоять только в неконтролируемой замене 0 на 1 или наоборот. Средства борьбы с этим развиты чрезвычайно хорошо (в том числе, конечно, из-за необходимости постоянного использования в интернете) и сводятся тем или иным образом к передаче избыточной информации. Иллюстрацией может служить самая незамысловатая схема утроения: вместо 0 вы передаете 000, а вместо 1, понятно, 111. Если в таком случае принимающая сторона получила, скажем, сигнал 010, то в предположении, что произошла одна ошибка (а не две, что менее вероятно), его следует воспринимать как 000, т. е. попросту 0{81}.
Квантовый аналог этой единственной классической ошибки – случайная замена в кубите состояния «А» на состояние «Б» или наоборот. Но кроме этого с кубитом может случиться что-то совсем другое, не имеющее классического аналога: замена состояния «А плюс Б» на «А минус Б» (это два различных состояния, дальнейшая эволюция которых приведет к различным финальным волновым функциям всей системы){82}.
Мало того, что квантовых ошибок больше, исправление их на первый взгляд кажется невыполнимой задачей. Проблема возникает уже с избыточностью: нельзя создать копию квантового состояния, не разрушив оригинал (теорема о запрете клонирования, упоминавшаяся в предыдущей главе). Поэтому отправить три (да