antihydrogen: (spherical wave)
[personal profile] antihydrogen
Про квантовый компьютер все слышали. Кто-то боится, что он лишит работы всех современных программистов (особенно этого почему-то бояться php-программисты),  кто-то отрицает, что он когда-нибудь будет создан. Чтобы развеять опасения и подготовить широкие программистские массы к новому стилю программирования я пишу этот пост.

Собственно, дальнейшее есть изложение модели квантового компьютера на классическом. Оперативная память квантового компьютера – массив из 2N комплексных чисел (N – число кубитов). Набор кубитов – набор индексов массива (или же набор цифр в двоичном представлении сквозного индекса массива, если желаете). Операции с массивом не произвольны, а ограничены следующими правилами:

I.    Возможны только операции по маске, над целыми блоками массива. Однокубитные операции – это на самом деле операции над половинками массива, двухкубитные – над четвертушками, трехкубитные – ну вы поняли. Например, операция «квантовое NOT» – это просто обмен двумя половинками массива:
Anew(****0***) = A(****1***)
Anew(****1***) = A(****0***)
Здесь Anew – новое состояние массива, звездочка – произвольное состояние индекса, запятые между индексами опущены, операция выполняется над четвертым кубитом справа.

Двухкубитная операция «контролируемое NOT» - обмен двух четвертушек с оставлением остальной части неизменной:
Anew(*1**0***) = A(*1**1***)
Anew(*1**1***) = A(*1**0***)
В примере седьмой кубит справа – контролирующий.

II.    Что бы вы не делали, сумма квадратов модулей элементов массива должна равняться единице. Из-за этого, простое сложение и вычитание не относяться к базовыми операциям, вместо них есть т.н. преобразование Адамара, сложение и вычитание двух половинок массива с делением на корень из двух:
Anew(****0***) = ( A(****0***) + A(****1***) ) / √2
Anew(****1***) = ( A(****0***) - A(****1***) ) / √2
А вместо умножения на число – умножение половинки массива на фазовый множитель:
Anew(****1***) = exp(iδ) A(****1***)

III.    Инициализируется массив присвоением единицы одному из элементов, и нуля всем остальным.

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

Для выполнения любого алгоритма достаточно перечисленных выше однокубитных и одной двухкубитной команды - контролируемого NOT. Мудреность низкоуровневого программирования компенсируется потенциальной огромностью доступной оперативной памяти (при 270 кубитах число элементов массива превышает число атомов в видимой части Вселенной) и тем, что операции над массивом выполняются за один такт.

Существует куча библиотек для разных языков для эмуляции квантового компьютера, где вышеописанные операции уже реализованы. Есть и специализированные языки для управления квантовыми компьютерами, за неимением последнего управляющие его моделью, реализованной с помощью одной из помянутых библиотек. Достоинства квантового компьютера являются проблемами при его эмуляции: при числе кубитов N > 30 (для мощного домашнего компьютера) или N > 50 (если у вас есть суперкомпьютер) массив не поместиться в оперативной памяти.

Что касается советов соискателям грядущих рабочих мест в сфере квантового компьютинга: к собеседованию надо будет выучить, что такое квантовое преобразование Фурье – оно понадобится как в криптографии, так и в индустрии легкого молекулостроения (про квантовое моделирование квантовых систем я планирую написать отдельный пост). 1С-программистам, лишившимся работы из-за грядущей квантовой революции в бухучете (вероятностный бюджет, мнимые активы… ну собственно ничего существенно не изменится), можно посоветовать учить алгоритм Гровера. А вот что делать php-программистам, не знаю – даже в шутку не могу представить применения квантового компьютера в веб-дизайне.

Date: 2014-11-03 08:28 pm (UTC)
From: [identity profile] livejournal.livejournal.com
Здравствуйте! Ваша запись попала в топ-25 популярных записей LiveJournal волжского региона. Подробнее о рейтинге читайте в Справке (https://www.dreamwidth.org/support/faqbrowse?faqid=303).

Date: 2014-11-03 11:17 pm (UTC)
From: [identity profile] koptchick.livejournal.com
Ой, да не беспокойтесь. До революции этой дожить - дело большой удачи! )

Date: 2014-11-03 11:45 pm (UTC)
From: [identity profile] antihydrogen.livejournal.com
Я то не беспокоюсь, я жду ) А вот широкая программистская общественность волнуется. Ну как широкая - видел однажды в чьих то каментах пхп-программиста, который как бы шутя и играя выражал некоторые опасения... Я блогер, мне можно преувеличивать.

Date: 2014-11-04 08:24 am (UTC)
From: [identity profile] koptchick.livejournal.com
Шутка такая у физиков есть: чтобы создать квантовый компьютер, нам необходим квантовый компьютер.

Да и, насколько мне известно, именно как компьютер, эта вещь необходима будет лишь для решения довольно-таки узкого спектра задач, например, реализации алгоритмов Шора, Гровера... Впрочем, наверняка, есть и куча других, но, как физику, уверенности в существовании хотя бы пары квантовых алгоритмов мне достаточно, чтобы считать достаточной мотивацию к созданию этого компьютера.

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

Date: 2014-11-04 12:28 pm (UTC)
From: [identity profile] antihydrogen.livejournal.com
Я, как физик и числомоделист в области квантовой механики, квантовым компьютером интересуюсь именно как орудием численного решения уравнения Шредингера. То о чем вы пишите во втором абзаце - физическое моделирование - дело конечно перспективное и полезное, но я от этого далек.

Date: 2014-11-05 08:38 am (UTC)
From: [identity profile] koptchick.livejournal.com
О, а какие задачи вы моделируете численно?

Date: 2014-11-05 04:34 pm (UTC)
From: [identity profile] antihydrogen.livejournal.com
В основном few particles systems. Самое крупное по количеству размерностей на сегодняшний момент - ионизация молекулы водорода путем прямого решения шестимерного Шредингера.

Date: 2014-11-06 12:55 pm (UTC)
From: [identity profile] koptchick.livejournal.com
Шестимерного - в смысле количества пространственных координат?
А что у вас считается ионизирующим воздействием? Не лазерный импульс?

Мне как раз недавно довелось слушать доклад одного товарища - большого специалиста по плазме. Правда, рассказывал он о том, как сверхмощный лазер высокозарядную плазму создаёт, т.е. ионизируются (чуть ли не все электроны теряя) атомы не водорода, а с большим Z, типа Fe или Au.

Date: 2014-11-07 08:20 pm (UTC)
From: [identity profile] antihydrogen.livejournal.com
Да, пространственных координат. Внешним воздействием может быть лазерный импульс, фотон синхротронного излучения, удар быстрой частицы и т.д. Плазмой мы (в смысле то комьюнити, в котором я варюсь) не занимаемся, интегральные сечения ионизации - это как бы давным давно пройденный этап, нас интересуют более тонкие вещи - многократные дифференциальные сечения ионизации, с некоторых пор time delay-и, управление состояниями в простых молекулах и т.д.

Date: 2014-11-03 11:44 pm (UTC)

Date: 2014-11-03 11:47 pm (UTC)
From: [identity profile] antihydrogen.livejournal.com
Я граммар-антифашист

Date: 2014-11-04 03:59 am (UTC)
From: [identity profile] fregimus.livejournal.com
Жуть. В голове не укладывается, как можно этот ящик с пользой для человечества задействовать. Наверное, 60 лет назад так же чесали репу, пытаясь постичь вычислитель с программой, хранимой в памяти…

Date: 2014-11-04 01:06 pm (UTC)
From: [identity profile] antihydrogen.livejournal.com
Цитата из "Quantum Programming in QCL":

In classical information theory, the concept of the universal computer can be represented by several equivalent models, corresponding to different scientific approaches. From a mathematical point of view, a universal computer is a machine capable of calculating partial recursive functions, computer scientists often use the Turing machine as their favorite model, an electro-engineer would possibly speak of logic circuits while a programmer certainly will prefer a universal programming language.
As for quantum computation, each of these classical concepts has a quantum counterpart.

Короче говоря, если сравнивать с упомянутым вами временем, к двум неудобным концепциям вычислений, заимствованным с предыдущих этапов развития вычислительной техники, добавилась третья заимствованная, столь же неудобная для работы с новой машиной. Впрочем, поскольку реальной машины на данный момент нет и неизвестно когда будет, сея проблема малоактуальна.
From: [identity profile] livejournal.livejournal.com
Пользователь [livejournal.com profile] simsun сослался на вашу запись в своей записи «Квантовый компьютер для классических программистов (http://simsun.livejournal.com/1712980.html)» в контексте: [...] там, не знаю – даже в шутку не могу представить применения квантового компьютера в веб-дизайне. [...]

Date: 2014-11-04 08:36 pm (UTC)
From: [identity profile] sozidatel-lesa.livejournal.com
вы такой умный пожалуй добавлю

Date: 2014-11-06 11:18 pm (UTC)
From: [identity profile] simsun.livejournal.com
кстати для прикладных задач очень даже подойдёт!

лочить что нибудь, области памяти, файлы, оно конечно из пушки по воробушкам

From: [identity profile] livejournal.livejournal.com
Пользователь [livejournal.com profile] kcp_frm сослался на вашу запись в своей записи «Квантовый компьютер для квантовых химиков (http://kcp-frm.livejournal.com/3612.html)» в контексте: [...] виртуальный массив памяти квантового компьютера, про который я писал в предыдущем посте на эту тему [...]

Date: 2016-11-21 06:44 pm (UTC)
From: [identity profile] stealthy-shadow.livejournal.com
Компьютер, на котором нет php - не компьютер!
Page generated Sep. 26th, 2017 07:19 am
Powered by Dreamwidth Studios