Как стать автором
Обновить
37
0

Пользователь

Отправить сообщение

Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 7 — Заключительная

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров11K

Алгоритм Шора

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

Читать далее

Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 6

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров9.7K

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

Читать далее

Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 5

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров5K

В прошлых частях мы рассмотрели семейство квантовых гейтов: Инвертор, C-NOT, Адамара, инверсия фазы. Но, согласитесь, как-то не похожи они на привычные нам гейты классических компьютеров: AND, OR, XOR, NOT. Ну, ладно, с NOT это я хватил лишку, NOT это вполне тоже самое, что квантовый инвертор, который мы рассмотрели самым первым гейтом в прошлых частях.

А как быть с остальными? Можем ли мы как-то сделать, к примеру, квантовый AND?
И да, и нет. Как вы помните из второй части, квантовая операция обязана обладать двумя важными свойствами:

• свойство обратимости, которое мы рассматривали, что если применить операцию к квантовому регистру повторно, то регистр вернется в исходное состояние.

• свойство сохранения нормы, которое заключается в том, что сумма вероятностей всех возможных состояний должна быть 1. А значит сумма квадратов всех амплитуд должна быть 1.

Как вы, может, помните с первым свойством я в прошлых частях приврал. На самом деле, свойство обратимости заключается в том, что для каждой квантовой операции существует обратная квантовая операция, которую можно вычислить из исходной определенными математическими действиями. Нам просто до сих пор везло, что обратные операции для гейтов Адамара, инвертора, C-NOT и инверсии фазы являлись теми же самыми операциями. Поэтому я и приврал тогда, что обратимость операции, примененная дважды возвращает в исходное состояние. Нет, забудьте, это неправда. Теперь обратимость сформулируем следующим образом.

Читать далее

Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 4

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров4.5K

В прошлой части мы рассмотрели двухкубитные гейты и построили какие то элементарные программы на двухкубитных гейтах.
Разберем некоторые полезные программы, которые состоят из двух или более разъединенных удаленных друг от друга частей, связанных между собой только предварительно запутанными кубитами и классическими средствами связи: телефоном, телеграфом, бумажным письмом и т.п. Например, один запутанный кубит отправляется на Луну, другой остается на Земле. Основной результат действия таких программ заключается в том, что предварительно запутанные кубиты, разделенные расстоянием, участвуют во взаимодействии с другими независимыми кубитами (взятыми уже на месте - на Луне и Земле), запутывая их в свою очередь, что в итоге такого взаимодействия получается общая связанная запутанная система, несмотря на разделенность расстоянием.

Читать далее

Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 3

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров4.6K

В прошлой части мы рассмотрели однокубитные гейты и построили какие то элементарные программы на однокубитных гейтах. Пришло время перейти к многокубитным преобразованиям.

Квантовые гейты в случае многокубитных операций

Можно также рассмотреть каждый гейт с точки зрения матрицы преобразования. Но такое описание слишком громоздко. Например состояние из двух кубит:

Читать далее

Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 2

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров7.4K

В прошлой части мы рассмотрели базовые понятия в квантовых вычислениях: кубиты, вероятности состояний, измерения.

Квантовые гейты

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

Читать далее

Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 1

Время на прочтение8 мин
Количество просмотров17K

Квантовые компьютеры. С точки зрения традиционного программиста-математика.
Часть 1. Основы. Квантовый регистр.

О чем эта публикация

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

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

Многие теоретические курсы очень долго подводят к сути, накачивая нужной, но очень сложной теорией. Я попытался сократить этот период и как можно скорее перейти к сути, раскрывая нужную теорию по мере необходимости.

Читать далее

Разделяй и властвуй. Повышение эффективности алгоритмов. Часть 3

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров2.5K

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

Читать далее

Разделяй и властвуй. Повышение эффективности алгоритмов. Часть 2

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров5.7K

Ссылка на первую часть.

Мастер‑теорема

На примере из прошлой части, попробуем сформулировать и обобщить принцип «Разделяй и властвуй». Мы беремся за проблему, размера n, делим эту проблему на подзадачи размером n/b. Количество таких подзадач обозначим числом a. И еще имеется задача скомпоновать результаты выполнения этих a задач размером n/b в итоговый результат для задачи размера n, который будем считать задачей полиномиальной сложности степени c, O(nc) . Если задача компоновки будет не полиномиальной, то все изложение резко усложнится. Поэтому, давайте позволим задаче компоновки быть полиномиальной, тем более в это попадает очень большое количество алгоритмов.

Читать далее

Разделяй и властвуй. Повышение эффективности алгоритмов. Часть 1

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров11K

Да, мы привыкли, что перемножение двух байт, или двух LONG это операция, которая происходит за константное время и не требует какого то особого алгоритма. Даже в школе мы учили наизусть таблицу умножения, что позволяло нам за константное время получить любой результат умножения двух чисел размером от 1 до 10.

Но, что если нам надо перемножить два числа любой длины? Не LONG, не байт, не число от 1 до 10, а любые два числа, которое, имеют в общем случае длину n бит, а результат умножения может иметь длину 2n бит.

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

Давайте применим его к нашей задаче.

В двоичной системе все выглядит проще, чем то, чему нас учили в школе для десятичных чисел. Берем два числа x и y в двоичном представлении. Чтобы получить произведение, нам надо сложить несколько раз числа x сдвинутые влево на позиции всех ненулевых битов y.

Читать далее

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Fullstack Developer, Application Developer
Lead
От 800 000 ₽
Java
Spring Boot
Maths
JavaScript
React
PostgreSQL
C++
Groovy
Kubernetes
Linux