18

Что погибает, сообщив ответ

Сто лет недосказанности: Квантовая механика для всех в 25 эссе - i_025.png

Квантовый компьютер – не компьютер, а квантовая система специальной структуры, которую совсем просто описать в принципе, но очень непросто реализовать на практике.

«Вычисление» в квантовом компьютере – не вычисление, а эволюция волновой функции этой системы. Волновая функция живет своей внутренней квантовой жизнью под управлением уравнения Шрёдингера; она ненаблюдаема, но мы «подталкиваем» течение этой жизни в определенном направлении. Делать это следует «деликатно», избегая измерения, которое разрушает волновую функцию, заставляя ее сколлапсировать.

При этом требуется, чтобы такая эволюция откликалась на задачу, подлежащую решению: чтобы волновая функция пришла к виду, из которого мы могли бы извлечь правильный ответ. Для этого в самом конце мы все-таки выполняем измерение, чем «вычисление» и завершается. Способ «подталкивания» волновой функции в сторону правильного (и, разумеется, заранее неизвестного) ответа и составляет содержание квантового алгоритма. Его надо изобретать для каждой отдельной задачи так, чтобы погибающая при измерении волновая функция передавала нам ответ как часть накопившегося в ней знания (информации).

Все это должно звучать загадочно уже по причине индетерминизма: измерения над тождественными системами (с одной и той же волновой функцией) раз от разу дают различные результаты. Как же мы намереваемся считывать ответ? А кроме того, ответы мы почти всегда хотим иметь в виде чисел; как они здесь возникают?

«Ячейкой» квантового компьютера является кубит – квантовая система с двумя опорными состояниями. В принципе подошел бы электрон со своими спиновыми состояниями «вверх» и «вниз» – и, разумеется, бесконечным числом состояний, получаемых в виде комбинаций этих двух с произвольными числами: «a (вверх) плюс b (вниз)». Электроны, впрочем, надо как-то удерживать, что непросто; на практике применяется немало различных квантовых систем с как минимум двумя состояниями: захваченные ионы, фотоны, квантовые точки{77}, а также колебательные контуры в сверхпроводниках; единой и «общепринятой» технологии здесь нет (отдельно стоит отметить реализации кубитов за счет согласованного квантового поведения столь большого числа электронов, что эти объекты можно уже разглядеть в микроскоп; они представляют собой пример проявления квантовых свойств, включая запутанность, на мезоскопическом масштабе – промежуточном между «макро» и «микро»). Возможно даже, что «лучший кубит будущего» еще не изобретен; во всех же теоретических построениях кубиты остаются абстрактным понятием. Это одинаковые системы, каждая с двумя состояниями «А» и «Б». Такие обозначения никто, кроме меня, не использует, но они, конечно, ничем и не запрещены{78}.

Чем больше кубитов, тем мощнее квантовый компьютер.

Все, что происходит с состояниями/волновыми функциями кубитов, происходит в согласии с уравнением Шрёдингера – все, кроме финального измерения{79}. Схема вычислений состоит из последовательных преобразований, применяемых к состояниям одного или нескольких кубитов. Например, кубит, бывший в состоянии «А», может оказаться в комбинации состояний «А» и «Б» с какими-то числами, скажем «А плюс 2 Б».

Преобразования, выполняемые над двумя кубитами, реализуют тот или иной вид взаимодействия между ними. Они производят в том числе запутанные состояния. Например, из состояния двух кубитов «(А плюс 2 Б, А)» (где перед запятой указано состояние первого кубита, а после запятой – второго) можно сделать состояние «(А, А) плюс 2 (Б, Б)», используя уже встречавшееся нам (и вообще очень популярное) преобразование CNOT. Это вид взаимодействия, при котором состояние первого кубита влияет на состояние второго: если первый – в состоянии «А», то со вторым ничего не происходит, но если первый – в состоянии «Б», то второй меняет свое «А» на «Б», а свое «Б» на «А».

Как и в случае с телепортацией, основа успеха в том, что все преобразования кубитов выполняются с самими состояниями «А» и «Б», а не с сопровождающими их числами. Числа же, вроде появившейся выше двойки, изменяются в ходе эволюции и в момент финального измерения определяют вероятности различных исходов: в серии измерений, проводимых раз за разом над состоянием «(А, А) плюс 2 (Б, Б)» (которое надо каждый раз создавать заново), результат ББ обнаружится примерно в четыре раза чаще, чем результат АА; чем длиннее серия измерений, тем точнее будет соблюдаться это соотношение. Но никаким прямым способом присутствующую здесь двойку, как и все подобные числа внутри волновой функции, «увидеть» невозможно. На всякий случай я буду временно называть эти числа внутренними; они отвечают за вероятности, но не выражают ответа.

О числах, которые выражали бы интересующий нас ответ, необходимо позаботиться отдельно. Они кодируются тем, что может получиться в результате измерения, – значениями, связанными с опорными состояниями кубитов. Если кубитов всего два, то такому несложному квантовому компьютеру доступны числа 0, 1, 2, 3. Мы можем договориться, что 0 – это результат АА, 1 – результат АБ, 2 – результат БА и 3 – результат ББ. При наличии трех кубитов можно закодировать восемь чисел:

Сто лет недосказанности: Квантовая механика для всех в 25 эссе - i_026.png

Десять кубитов позволяют закодировать числа от нуля до 1023, что все еще совсем не много, но сто кубитов – от нуля до числа, в котором уже 31 знак, и оно несколько больше тысячи миллиардов миллиардов миллиардов. Тысяча кубитов отвечает большому числу, в котором 302 знака.

Каждый кубит превращается в обычный бит (принимающий одно из двух значений А и Б) в результате финального измерения. Волновая функция со всеми ее внутренними числами тогда погибает, потому что каждый кубит вынужден «определиться», кем ему стать: состоянием «А» или «Б». «Возникновение чисел» в конце квантового вычисления, таким образом, – работа многократно нам уже встречавшегося коллапса волновой функции (который, как всегда, или постулируется без пояснений, или же объясняется тем или иным образом, как мы видим из других глав). Если угодно, коллапс превращает кубиты в биты.

Но что с индетерминизмом? Мы ведь не властны над результатами измерения: состояние «(А, А) плюс 2 (Б, Б)», например, может показать при измерении результат АА (число 0), а может и ББ (число 3). Заметим, впрочем, что в данном случае измерение заведомо не способно дать результаты АБ и БА (числа 1 и 2) – что уже может иметь некоторый смысл, если обсуждаемое состояние возникло как результат какого-то квантового вычисления. А неопределенность между ответом 0 и ответом 3 мы в состоянии разрешить, повторяя вычисление достаточное число раз, чтобы надежно увидеть, какой ответ возникает с большей вероятностью. В итоге мы бы заключили, что ответ – число 3.

Этот способ действий и применяется в настоящих квантовых вычислениях: нужно добиться, чтобы одно состояние – скажем, «Б, А, А, А, Б, А, Б, Б, Б, А, Б, А, А, А, А, Б, Б, А, А, А, Б, Б, Б, Б, А, А», если у вас 26 кубитов, – кодирующее правильный ответ (36 603 452 в данном случае), оказалось выделено среди всех остальных: выделено сопровождающим его внутренним числом, которое по правилу Борна определяло бы самую высокую вероятность коллапса к этому состоянию при финальном измерении. Другими словами, в ходе эволюции волновой функции при выполнении квантового алгоритма самое большое внутреннее число должно «накопиться» у правильного ответа{80}.

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