Три новых правила игры

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Наверняка вы слышали о квантовых компьютерах.

Время от времени в новостях проскакивают заголовки о том, что очередная компания наконец-то достигла «квантового превосходства» над кожаными мешками с их глупыми цифровыми калькуляторами.

Но так как в физике, в отличии от политики, не может разбираться каждый человек в интернете, скорее всего вы (как и я) вообще не понимаете что происходит. Но слово «квантовый» вроде звучит круто и из него получаются отличные мемы.

Не стоит винить себя в невежестве. Даже Эйнштейн в своё время ничего не понял, разволновался, стал над всеми вокруг смеяться, забрасывая парадоксами и мемами про кости, а потом умер.

Типичный твиттерский.

С тех пор прошло почти сто лет и мы начали что-то понимать. Квантовая механика стала передовым разделом физики со своими моднейшими подходами к решению проблем типа:

«Если использовать вот эти законы — вроде всё норм работает, мы даже можем это доказать. Правда, мы понятия не имеем почему оно так, ну и хрен с ним пока, там не все ещё с теорией относительности разобрались, у нас тут есть время подумать»

В старших классах любой современной школы квантовой механике обязательно уделяют пару лекций, хотя и объясняют всё на уровне 60-х годов прошлого века, с Котами Шредингера и прочей магией. Обидно.

Сегодня я буду немножечко сдвигать эту парадигму.

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

Сегодня поговорим о квантовых компьютерах. Даже напишем свой Hello World и запустим его на настоящем (!) квантовом компьютере

Три новых правила игры

Квантовая механика — это такой же набор законов природы только для мира очень маленьких частиц — электронов, протонов, фотонов, альтронов... хотя нет, это из Мстителей.

Короче, всех тех штук, из которых мы все состоим.

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

Но мы здесь сегодня не для этого.

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

К сожалению, эти два мира так пока и не дружат, потому как всё это правильно объяснять простым людям никто не придумал. Каждый изобретает свой подход как ввести человека в новые правила игрового мира и выдержать тонкий баланс между «ученые засмеют» и «читатели ничего не поймут».

Здесь все либо впадают в упрощения с котами, которые «как будто одновременно и там и сям», либо в научную заумь с матрицами прямо на лицо.

Сегодня я попробую свой путь, которым я объясняю это своим интересующимся друзьям. ? Как обычно, ничего «моего» во всём этом нет — это лишь компиляция того, как умные люди объясняли тему мне самому. Но я же не могу вот взять и признаться в этом на публике!

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

Начнём с первого.

1

Частицы теперь волны, а не мячики

Время каминг-аута.

Мне 30 лет, а я до сих пор при слове «атомы» и «электроны» представляю их себе как мячики. Молекулы в учебнике по химии всегда были набором мячиков и палочек между ними, а кристаллическая решетка — это когда целая стена из мячиков!

В целом, это неплохо работало.

Электрический ток я представлял себе как толпу таких мячиков, несущихся по проводу-трубе. Больше мячиков — значит больше ампер (силы тока), быстрее бегут — больше вольт (напряжение), шире труба — значит меньше сопротивление.

Сам я тоже сделан из таких атомов-мячиков, которые по неведомой мне причине решили притянуться друг другу и образовать такую вот причудливую форму меня. Ну круто же!

Я так на физтех поступил :D ? Я действительно сначала поступил в универ на лазерную физику и лишь впоследствии перевёлся на факультет программистов и программирования. Физика всю жизнь была моим хобби (спасибо топовым учителям) и именно поэтому я могу сейчас писать этот пост.

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

Мячики, вы лучшие, мы еще вспомним о вас!

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

Волны — это новые мячики

Срач о том, реально ли всё это волны или мы просто натянули имевшиеся для волн уравнения и сказали «опа, а вроде подходит» — один из самых громких споров современных физиков. Там рвут глотки и делятся на лагеря, так что давайте не будем и просто примем, что тот же самый мячик может ВЖУХ и быть посчитан как волна.

Так нам удобно и всё.

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

Главный же прикол в том, что кроме волн больше нет ничего. Вообще ничего. Никаких скрытых параметров, по крайней мере локальных. ? То есть воля божья всё еще возможна, но внутренние свойства системы тут точно не при чём.

Абсолютно любое свойство объекта отныне можно описать одной такой жирной функцией взаимодействия этих волн друг с другом.

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

Но реален ли сам Олег?

ДА, И ТЫ ТОЖЕ ВСЕГО ЛИШЬ НАБОР ВОЛН

Дам вам время подумать над этим. Тут лучше не торопиться. Можете вернуться к посту вечером.

Sergey Shmelev Я один виже логотипы сони-эриксона?

Anton Tsislitsky Никогда не представлял себе напряжение как скорость. Самое большое мое открытие с тех времен, когда понял что такое производная

Борис Калинин По работе автоматизирую гидравлические системы (а по образованию радиофизик) и всегда использую похожую аналогию для расчётов. Только ток это расход жидкости, а напряжение — перепад или разность давлений на куске трубы. Очень удобно

Евгений Богданов **Борис Калинин**, ну так и напряжение - разница потенциалов в оригинале )

2

Суперпозиция — всего лишь вероятность

Объясняя, что за фигня такая ваша «суперпозиция», все вспоминают байку с Котом Шредингера, закрытого в коробке со случайно взрывающейся колбой смертельного яда.

Пока мы не откроем коробку, кот для нас как бы ОДНОВРЕМЕННО мертв и жив, потому мы говорим «находится в суперпозиции жизни и смерти».

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

Пора прекратить шутить шутку 100-летней давности. Люди в 21 веке могут себе позволить среднее образование и понять тему чуть глубже.

Предлагаю поговорить о суперпозиции как будто мы люди с айфонами, а не крепостным правом.

Потому вместо кота мы возьмем монетку :D

Когда мы раскручиваем или подбрасываем её в воздух — она находится в суперпозиции орла и решки. Да, «как бы» одновременно. Только поймав монетку мы получаем один из результатов нашего измерения. Не поймаем — не узнаем. Всё.

В чем же драматическая разница с так нелюбимым нами котом?

В том, что внутри монетки всегда есть чёткие вероятности её падения орлом или решкой. В жизни мы принимаем их за 50% на 50%. Но если мы зададимся целью немного «подкрутить» фокус себе на пользу — мы можем сделать монетку из разных сплавов или как-то притягивать одну из сторон магнитом.

В теории мы можем сделать такую монетку, у которой вероятности выпадания орла и решки будут, скажем, 60% на 40%, что поможет нам чаще побеждать (наверное).

Отныне всегда, когда слышите про суперпозицию, представляйте себе именно такую подброшенную монетку.

Суперпозиция – не загадочный феномен «одновременности», а чёткое и простое отношение двух вероятностей

Находясь в «суперпозиции», монетка не просто для нас «как бы одновременно орел и решка», она имеет две вполне стабильные и известные нам вероятности выпадения одного и другого.

Да, мы не знаем 100% исход, но можем чётко влиять на него, например, направляя на монетку магнит.

Всё это уже намного удобнее использовать на практике, не правда ли?

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

Поэтому и дальше, когда мы будем говорить о квантовых битах, про которые все говорят, что они «одновременно 1 и 0», забейте на это и представляйте себе их как монетки. Каждый бит-монетка имеет строгую вероятностью быть прочитанным как 1 и строгую вероятность 0. Компьютер же может управлять этими вероятностями прямо в полёте пока не прочитает сам бит.

Прочитали бит — поймали монетку. Очень удобно.

Если вы поняли монетки — вы уже наполовину поняли квантовый компьютер, поздравляю.

3

Запутанность — квантовый IF

Чтобы объяснить квантовую запутанность я продолжу аналогию с монеткой, чтобы вас не ЗАПУТАТЬ. Простите, я должен был использовать этот каламбур.

Представим себе, что мы распилили нашу монетку вдоль. Как печеньки Oreo.

Получилось две монетки — одна только с орлом, вторая только с решкой. Пустая сторона разреза нас щас не интересует.

Не подглядывая где какая, мы подбрасываем обе новых монетки в воздух (переводим в суперпозицию, как мы теперь знаем). Монетки начинают вертеться в воздухе и не падают (потому что они теоретические!)

Тут квантовый физик скажет, что между монетками создана запутанность. Русская терминология лажает, потому лучше дополнительно запомнить английское слово — Entanglement. Оно встречается чаще.

Всё это означает некую «зависимость», «спутанность» или просто «связь» состояний двух монеток.

Как видите, никакой магии пока нет, законы физики мы не нарушали, на митинг не выходили.

Мы упаковываем одну из наших новых прикольных крутящихся монеток в коробку и отправляем её своему знакомому в другой город. А еще лучше на другую планету или в соседнюю галактику.

Теперь мы оба имеем по монетке, но понятия не имеем орел нам достался или решка. Кажется, пришло время посмотреть.

И вот тут обнаруживается ПАРАДОКС.

Следите за руками: в тот момент, когда один из нас открывает коробку, ловит свою монетку и видит, что на ней орёл — вторая монетка за много тысяч километров МОМЕНТАЛЬНО оказывается решкой.

Звучит тупо, да? Но мы на 100% в этом уверены.

Вот только Эйнштейн не был доволен такой фигнёй.

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

Бежиииим... ? Впоследствии мы доказали, конечно, что никакой новой информации на самом деле мы не передали (и не можем), так что СТО не нарушается, но Эйнштейн очень волновался.

Это полиция релятивизма. На этот раз без штрафа, но я выпишу вам предупреждение.

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

? С котом и ядом аналогия тоже прокатит. Если не глядя разнести кота и колбу по двум разным коробкам и открыть ту, которая была с ядом, то если колба разбита — кот автоматически станет мёртв, потому что кот и яд были запутаны друг с другом в самом начале. Но в этом посте коты отныне запрещены!

Мы называем такие половинки «запутанными» друг с другом.

Оказывается, в нашем квантовом компьютере мы тоже можем так «запутывать» между собой биты, что если один покажет 0, второй 100% всегда примет значение 1 и наоборот. Такой вот физически нерушимый IF.

Mikhail Korobko Тут все правильно написано, я просто укажу на сложный момент, который очень часто ошибочно интерпретируется:

> Теперь мы оба имеем по монетке, но понятия не имеем орел нам достался или решка. Кажется, пришло время посмотреть.

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

Dmitry Vozzhaev Я много раз пытался понять, почему из 86% следует что ботинок не знает, левый он или правый пока ты не открыл коробку. Тщетно.

Mikhail Korobko **Dmitry Vozzhaev**, совершенно бессовестно дам ссылку на свой пост, где я разбираю на пальцах (целыми двумя способами!), почему мы точно знаем, что квантовые состояния не обладают определенным значением до измерения (ака почему скрытые параметры не существуют): https://postnauka.ru/longreads/156114

Gleb Kudriavtcev Опровержение гипотезы о скрытых параметрах - самая мозговыносящая из самых важных физических теорий.
Когда я узнал, что стройная аналогия из запутанных носков в реальном квантовом мире не работает, то честно его нагуглил и пытался его понять. https://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D1%80%D0%B0%D0%B2%D0%B5%D0%BD%D1%81%D1%82%D0%B2%D0%B0_%D0%91%D0%B5%D0%BB%D0%BB%D0%B0 Но ничего не вышло, тамошняя математика чуток за гранью моих когнитивных способностей :(

Gleb Kudriavtcev Не вставилось. [Неравенство Белла](https://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D1%80%D0%B0%D0%B2%D0%B5%D0%BD%D1%81%D1%82%D0%B2%D0%B0_%D0%91%D0%B5%D0%BB%D0%BB%D0%B0)

Кубит

Подойдём к настоящим квантовым вычислениям.

Другие статьи в интернете сразу начинают с объяснения кубитов, но мне показалось, что зная три правила выше, нам будет намного проще разговаривать и действительно понять суть кубитов, а не «магию». Теперь можно раскидать всё прямо на пальцах.

Кубит (qubit) — это квантовый бит

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

Прямая бочка пошла... ТУЦ-ТУЦ-ТУЦ-ТУЦ-ТУЦ!

Не, в смысле кумплюктерный бит.

Александр Котов Кстати, спасибо за картинку с мячиками, силой тока, сопротивлением и напряжением - теперь закон Ома стал интуитивно понятен!

Nikita Galaiko Как говорил мой учитель по физике: Не знаешь Ома - сиди дома!

? Обычный бит

Бит — это любой выключатель, который может принимать значение 0 или 1.

Когда таких выключателей на стене много, мы даже можем закодировать в них какую-то информацию, чтобы сосед её увидел.

Восемь битов 01000001, например, будут буквой A, причём что в ASCII, что в Юникоде.

Набор букв АААА, переданных по сети как 01000001 01000001 01000001 01000001, сообщит собеседнику, что вы орёте над его мемом.

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

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

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

Цепочка таких битов и инструкций что с ними делать даёт нам Машину Тьюринга. Так появились компьютеры. Привет.

Egor Suvorov Не в юникоде, а в UTF-8, если уж по проводам передаём.

? Квантовый бит

Я так подробно разжёвывал выше про биты, чтобы всем стало понятно — в квантовых битах (кубитах) всё то же самое.

В них мы тоже принимаем за 0 или 1 какое-то их свойство, которое можем писать и читать, и так же можем делать их из разных материалов — просто теперь вместо механических реле мы используем частицы. ? Точнее их свойства — спин электрона, поляризацию фотона, и.т.д.

В чём же разница?

Кубит можно еще и подбросить как монетку! Перевести в суперпозицию, из которой он будет выпадать 0 (орлом) или 1 (решкой) с чёткой и нужной нам вероятностью.

Это открывает нам третье весёлое состояние, ради которого мы тут и собрались вообще.

Любое чтение кубита уничтожит нашу суперпозицию. Он схлопнется в 0 или 1, то есть монетка будет поймана, а стрелочка на нашей картинке повернётся к |0? или |1?.

Циферблатики со стрелочками — это стандартная форма записи, привыкайте.

До чтения же у нас есть четкая вероятность того и другого исхода. Скажем, 70% на 30%. Мы не можем предсказать результат, но вероятности вот они, пожалуйста.

Мы можем спокойно нарисовать вероятности нашего кубита на картинке. Они не изменятся без нашего вмешательства.

В бульварных газетах тут любят говорить, что кубит как бы ОДНОВРЕМЕННО принимает значение 0 и 1. Думаю, после моего хейта в сторону Кота, вы понимаете почему мне не нравится это слово.

Оно отвратительно бесполезно! Щас еще параллельные миры плодить будем, ну уж нет.

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

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

Никакой магии, просто вероятность.

Мы можем направить на нашу монетку магнит, чтобы замедлить её вращение, инвертировать её в другую сторону или вообще заморозить, чтобы орёл был строго вверх. В этом случае он будет выпадать в 100% случаев, если вдруг нам это нужно.

В классических битах мы могли в любое время записать в него 0 или 1, а в кубитах мы можем записать в него вероятность быть 0 или 1 в конечном счёте.

Мы имеем право сколько угодно шалить с вероятностями внутри кубита, но когда мы читаем его значение — он всегда схлопывается в 0 или 1 с заданной вероятностью, превращаясь по сути в обычный бит. ? Здесь я хотел пошутить «это ведь вам не квантовая физика какая-нибудь» и что-то замешкался

Да, мы можем имитировать им обычный бит, просто записывая 100% вероятность за один из вариантов кубита.

Это легально, однако обычный бит справится с этим лучше и быстрее, а всё квантовое веселье таится именно между состояниями 1 и 0.

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

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

Напоследок вот вам пара фоток одного кубита в реальности:

и

.

? Мы правда пока не знаем какая частица будет самой удобной чтобы стать кубитом. Каждая компания сегодня изобретает свой велосипед — кто-то фигачит электроны в сверхпроводник и замеряет их спин, другие пускают фотоны света по оптоволокну и смотрят поляризацию. Лично мне фотоны кажуются перспективнее хотя бы потому что для них не нужно охлаждать компьютер до -270°C :D

Dmitry Kochkin Но есть ещё высокотемпературная сверхпроводимость, и вроде в этой теме постоянно прогресс идёт..

Mikhail Korobko **Dmitry Kochkin**, такие низкие температуры нужны не только для сверхпроводимости, а еще и для уменьшения тепловых шумов, которые разрушают квантовые состояния. Поэтому высокотемпературные сверхпроводники скорее всего не очень будут полезны.

LexsZero есть еще аналогия с носками - если надеть один на левую ногу, то второй автоматически становится правым

Сфера Блоха [PRO MODE]

Это необязательный раздел. Он рассказывает почему у кубитов-волн на самом деле есть третья ось (фаза), но если вы не планируете писать код, а просто пришли сюда покекать — можете смело пропустить его и перейти сразу к квантовому компьютеру ниже.

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

Амплитуда — как высоко волна прыгает, частота — как далеко, а фаза — откуда начинает. Объяснение для настоящих интеллектуалов.

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

. Проще принять их как одинаковые и отдать это физикам. Остальное же имеет место быть.

Вспомним наши циферблатики выше, где вероятность бегала между |0? и |1? по окружности. ? (Чтобы в сумме давать единицу)

Они абсолютно верны (даже сам IBM использует такую визуализацию), но они показывают только одно число — амплитуду. А что делать с фазой? Её ведь тоже можно двигать туда-сюда и получать разный результат.

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

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

Вот и всё. Кубит по сути два float'а.

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

Hello, World'ы можно писать пока так, а когда уже станете квантовым сеньором — сами будете над всеми смеяться и говорить «хо-хо-хо, как же можно это не знать, это же база»!

? О, раз уж мы тут разговорились, на самом деле частицы не являются волнами сами по себе. Каждая их характеристика — спин, поляризация, или даже местоположение — это отдельная волна (мы говорим «волновая функция»). Настолько отдельная, что частицы могут быть «запутаны» по одной из волновых функций, но независимы по другой. Теперь вы понимаете почему мне всё приходится упрощать? Смысл не теряется, а мозгом понимать волну как частицу сразу проще.

Я слушал реактора гу Сложна но можна

Квантовый компьютер

Много кубитов + алгоритм

Итак, что у нас есть на данном этапе:

  • Кубиты, которые похожи на обычные биты, только вместо 0 или 1 они хранят вероятность выпадения 0 или 1, которую мы можем как-то корректировать «в полёте» чтобы прочитать нужный результат в конце.
  • Как только мы «читаем» кубит, он всегда схлопывается в 0 или 1 как та монетка, которая в итоге выпадает только орлом или решкой. Кубит после этого уничтожается, потому чтение логичнее делать в самом конце.
  • Два кубита можно запутать между собой — тогда они всегда будут выдавать противоположный друг другу результат. Даже если мы специально изменим один кубит — второй изменится на ту же величину, только наоборот.
  • Нарастающее стрёмное ощущение, что всё вокруг волна — даже небо, даже кубит. Появляющиеся сомнения в объективности наблюдаемой реальности и своей роли в этом мире.

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

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

В квантовом компьютере у нас такая же лента, только теперь мы кладём на неё кубиты. Список операций тоже остался, но сами операции чуть изменились.

Решительно очевидно, что мы имеем полное право писать и читать наши кубиты как обычные биты. Записали в кубит 100% вероятность выпадения 1 — получили в итоге 1. Вау.

Но смысла в этом ноль. Как колоть орехи микроскопом — никто не запретит, но это достаточно медленно и бессмысленно. Обычный компьютер справится с этим лучше.

Сила же квантового компьютера именно в том, что мы берём несколько кубитов, которые как вы помните можно представлять как крутящиеся монетки, и взаимодействуем именно с вероятностями их выпадения в 0 (орел) или 1 (решка), а не самими результатами 0 и 1.

Вот это уже куда более интересно. Квантово!

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

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

Добавление всего лишь одного кубита увеличивает мощность компьютера сразу в два раза, а не на +1 бит как в обычном. Это и даёт нам вот ту самую экспоненциальную скорость вычислений в квантовом компьютере.

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

Если хотите более подробного разбора дерева по шагам, рекомендую вот эту годную статью.

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

Условно говоря, мы подкручиваем наши монетки и говорим как им вращаться друг относительно друга, чтобы в итоге они выпали на стол в комбинацию, например, «орел-решка-орел» (010).

Это и будет правильный ответ алгоритма.

И да, как вы уже догадались, вероятность правильного ответа на выходе квантового алгоритма бывает не 100%. Ну вот не получилось у нас связать все кубиты-монетки так, чтобы в 100% случаях они выдавали «орел-решка-орел», получилось только в 90%.

Тогда в 1 случае из 10 квантовый компьютер будет вполне легально нам врать, выдавая неправильный ответ. Тогда мы просто запускаем алгоритм много-много раз как настоящие боги инженерии! :)

? «Водный» компьютер

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

Классический компьютер можно представить как перекладыватель камешков. Квантовый — как трубы, по которым волнами течет вода

Мы все видели волны на воде.

Теперь представьте, что два потока воды волнами приходят навстречу друг другу из двух труб. Если волны столкнулись вершинами (пришли в одной фазе) — они усиливают друг друга и получается еще более мощная волна (это называется интерференция). Если же волны пришли в противофазе — они уничтожаются, наступает тишь и гладь.

? Вы наверняка сразу подумали о шумоподавляющих наушниках, которые гасят внешние шумы, складывая с их инвертированной версией. Аналогия с ними получается даже лучше с точки зрения закона сохранения энергии, но с водой как-то веселее :)

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

Вот из таких труб мы строим (aka. программируем) сложную сеть перекрёстков и отрезков нужной длины.

Наша цель — чтобы в результате всех этих столкновений, взаимных усилений и самоуничтожений, вода из нужной нам выходной трубы вылилась с максимально волнистым усилием, а из остальных так, вяленько, или совсем никак.

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

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

Но мы не можем читерить, ставить брейкпоинты и подсматривать что там сейчас внутри трубы — ведь для этого придётся вскрыть её и уничтожить волну.

Прям как кубит!

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

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

Любители микросхем могут заметить схожесть наших труб с ножками микроконтроллеров. Там мы тоже подаем какой-то импульс на входы и получаем какие-то сигналы на нужных нам выходах.

Вот представьте всё то же самое, только аналоговое. Не только +5V и 0V, но и все напряжения между ними. Вот это и будет квантовый компьютер! (почти)

Сначала такое программирование «на волнах и вероятностях» взрывает мозг, а потом кажется каким-то даже более органичным, чем классическое перекладывание единичек и ноликов.

Mikhail Korobko Кстати, вот классная иллюстрация работы водного компьютера: https://twitter.com/page_eco/status/1188749430020698112 и вот еще: https://www.youtube.com/watch?v=2Ckytxq0OWc

Miron Kizesov Если волны столкнулись вершинами (пришли в одной фазе) — они усиливают друг друга и получается еще более мощная волна (это называется интерференция). Если же волны пришли в противофазе — они уничтожаются, наступает тишь и гладь (это ведь тоже называется интерференция?)

Квантовое превосходство

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

Сейчас за достижение квантового превосходства бьются Google, IBM, и главные исследовательские институты всех уважающих себя стран. Побеждают, как обычно, китайцы.

Белые же европейцы в это время воюют за запрет термина «превосходство» потому что оно оскорбительно и нетолерантно.

Лет через пять меня точно отменят за этот пост. Сохраняйте.

На практике же момент «квантового превосходства» не означает ничего, кроме того, что можно будет открыть шампанское и выпить за технологический прогресс.

Сейчас объясню.

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

Читеры вставляют палки в колёса, короче, и всё равно не могут догнать. Разве что иногда.

Именно поэтому квантовое превосходство интересно журналистам и историкам, но точно не инженерам.

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

Сейчас с этим всё плохо. С текущим количеством шумов они попросту бесполезны для практических задач. Компьютер, который считает быстро, но постоянно врёт — разве это годится? Превосходство у них, блин.

Случайно подняться на гору легко — куда сложнее подниматься на неё каждый день. Можно использовать эту фразу как кредо по жизни.

Список доступных для исследователей квантовых компьютеров от IBM, их мощность и поддерживаемые операции

Евгений Бурмистров К последней картинке: про количество кубитов довольно интуитивно, а вот про [https://en.wikipedia.org/wiki/Quantum_volume](Quantum volume) на вики пришлось почитать. TL;DR - "крутость" инстанса, потому что не все кубиты одинаково хороши.

Gleb Markin Смотрите все на него! Он не смог вставить картинку!

Евгений Бурмистров И это даже не картинка, просто ссылка :D
Попытка #2:
https://en.wikipedia.org/wiki/Quantum_volume

The Алгоритм

Время программировать программы!

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

Программисты знают их почти наизусть: NOT, AND, OR, XOR и производные NOR, NAND, XNOR, и.т.д.

Орхан Мамедов Рисунок мне непонятнее простой аналогии с арифметикой

Хитро соединив проводами пару-тройку вентилей можно получить сумматор или простейшую память — всё это базовые элементы любого процессора.

В этот процессор можно вшить язык ассемблера, на котором программисты смогут складывать и умножать настоящие числа типа 25 + 48 вместо перекладывания единичек и ноликов.

Потом они соберут из этих операций жирные высокоуровневые языки программирования.

Начнется бум кремния, крах доткомов, курсы «профессия Data Scientist за неделю» и вот уже даже бездомные пишут на React за еду.

Короче, в квантовых компьютерах всё то же самое!

Только уровень развития тут пока плавает где-то до изобретения ассемблера. Представляете сколько всего еще впереди?

Alex Slepenkov Про перекладывание камней напомнило: https://xkcd.ru/505/

Somebodyonce Вспомнился гидравлический интегратор Лукьянова, тоже водяной компьютер.

Anton Kushnikov Снится ли квантовому Тьюрингу квантовый реакт?

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

Суть та же, что и у обычных гейтов. Только мы помним, что не имеем права читать наши кубиты не уничтожив — значит AND, OR и другие «читающие» друзья сразу выходят из зала.

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

Из старых друзей в зале пока остается лишь NOT.

NOT

Гейт NOT или X — отрицание.

В классическом программировании он менял значение бита с 0 на 1 и наоборот.

В квантовом он делает то же самое — инвертирует вероятность. Была у нас 60% вероятность выпадания 1, стала 40%, то есть теперь 60% будет у 0. И наоборот. Стрелочка была вверх, стала вниз. Всё просто.

На самом деле гейтов NOT в квантовом компьютере не один, а три. Если посмотреть на сферу Блоха можно догадаться, что «развернуть» стрелочку на 180° можно тремя разными способами.

Потому версии гейта NOT так и называются — X, Y, Z. В реальном программировании в подавляющем большинстве случаев нам достаточно одного. NOT = X.

Орхан Мамедов А как устроен такой гейт? Судя по статье, кажется, что через связь кубита с другим кубитом.

Орхан Мамедов Хм, cnot ?

CNOT

Controlled NOT, CNOT или CX — контролируемое отрицание.

Применяется к двум кубитам. Как некий IF. Если первый из кубитов выпадёт в 1, ко второму автоматически применится гейт NOT. Если нет — ничего не изменится.

Короче, если у бати плохое настроение, он даст леща сыну когда придёт с работы, а если нет — ничего не произойдёт. Детство многих из нас научило понимать ВЕРОЯТНОСТИ!

Можно сказать, CNOT похож на классический XOR, только реализованный с помощью физических законов.

H

Hadamard Gate или HAD — вентиль Адамара. Неудачное название, никогда не могу запомнить.

Кубит можно инициализировать как 0 (по-умолчанию), можно перевести в 1 (с помощью NOT), а можно перевести в суперпозицию — когда вероятности выпадания 0 или 1 будут 50/50%.

Вот гейт H делает как раз последнее. Обычно его фигачат в самом начале на рабочие кубиты чтобы потом играть с их вероятностями.

На сфере же Блоха это эквивалентно простому развороту на 90°.

Теперь представьте что будет если сделать H, а потом наложить CNOT с соседним кубитом. Получится та самая запутанность, когда состояние второго кубита будет подчиняться непонятному результату первого!

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

Так даже удобнее — мы можем наворачивать гейты дальше и дальше, можем запутывать результат с другими кубитами, тем самым программируя систему любой сложности!

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

Орхан Мамедов На выходе получим что-то из короткометражки "Beyond the aquila rift"

SWAP

SWAP гейт — обмен вероятностями двух кубитов.

Очевидная операция, которая пригождается чтобы скопировать куда-то состояние кубита, потому что в квантовом мире нельзя создавать копии частиц.

Как и в случае с гейтом CNOT можно сделать гейт CSWAP — когда в зависимости от значения первого кубита он свапает второй и третий, либо оставляет всех в покое.

Такой фокус в алгоритмах пригождается даже чаще, чем обычный SWAP.

В качестве забавного инсайда еще могу рассказать, что гейт SWAP может быть реализован с помощью 3 CNOT или 2 H + 1 CNOT подряд. Можете на досуге подумать как (или подсмотреть подсказку).

Lar Bewcen Немножк по теме квантового клонирования — [MinutePhysics поясняет](https://www.youtube.com/watch?v=owPC60Ue0BE). Коли есть столько одинаковых объектов, сколько свойств этого класса объектов надо узнать — можно сделать ещё один!

READ и WRITE

Не всем это сразу очевидно (мне вот не было), но мы правда можем в любой момент записать любую нужную нам вероятность в наш кубит. Всё норм. Сдвинуть стрелочку на 0.123 вполне легально.

Операция чтения кубита, или как говорят физики «измерения», нам уже известна. Она схлопывает кубит в одно из значений — 0 или 1. Как выпадающая монетка, вы помните.

Шутки ради, но если задуматься, операция READ уникальна тем, что она единственная во всём квантовом компьютере возвращает случайный результат. Всё остальное квантовое программирование очень даже детерминистично :)

 

Орхан Мамедов Write в смысле как подкинуть дров в костёр или подналить воды?

Орхан Мамедов Это именно write или add?

Timofey Balashov а как там с точностью/погрешностью?

Другие гейты

Более полный список гейтов можно посмотреть в доке IBM, но даже он еще не устоялся и их названия меняются от книжки к книжке. Мы напридумывали их целую кучу, но пока не знаем какие реально пригодятся в алгоритмах.

Есть даже I-гейт (он же id), который делает ничего. Noop. И даже он иногда пригождается! Прям как я.

Кроме этого, я намеренно опустил все гейты, изменяющую фазу. Это уже следующий уровень, инфа для квантовых сеньоров, а мы пока ещё квантовые джуны и можем обойтись и без них.

Фаза полезна для сложных вычислений и через фазовые вентили можно собрать того же Адамара (H) на современных квантовых компьютерах (они не умеют в него чистого), но нам пока хватит имеющихся.

Хотя кто-то строит альтернативные объяснения сразу на фазе — тут уже кому как удобнее.

Квантовая схема

Quantum Circuit

Для визуальной записи квантовых алгоритмов стали стандартом вот такие квантовые схемы:

Их можно читать как ноты — просто слева направо подряд.

Обычно в самом начале мы инициализируем наши кубиты, потом собираем какую-нибудь схему из них, а в конце замеряем и выгружаем результат в «классические» неквантовые биты, которые внизу с двумя полосочками.

Как-то так, пока ничего лучше нет. Реально перекладываем биты хуже ассемблера.

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

 

Nikolai Gaiduchenko Программирование квантовых вычислений – это как писать музыку в квантовом ключе (вместо скрипичного). Жду не дождусь квантового дабстепа! Интересно, можно ли как-либо адаптировать музыкальные приёмы и методы для составления подобных схем, ведь и те, и другие оперируют волнами для создания чего-то осмысленного.

ПИШЕМ. КВАНТОВЫЙ. КОД.

Я обещал вам квантовый Hello, World — держите. И да, он НА ПИТОНЕ.

Как и любой Hello World, он абсолютно бесполезен. Он лишь подбрасывает две монетки, связывает одну с другой и говорит орлами они упали или решками.

С другой стороны, мне очень нравится этот пример, потому что в нём сразу есть и суперпозиция, и квантовая запутанность двух кубитов, ну и самое главное — сраный if'чик на питоне!

Разберём всё подробно по шагам.

Шаг 1. Устанавливаем себе Qiskit.

Это опенсорсный SDK для ньюфагов от IBM, который абсолютно прекрасен своей простотой и человеческой документацией, но при этом позволяет при желании запустить свой код на настоящем квантовом компьютере через облако.

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

Хотя, конечно, есть и другие варианты. Берите какой нравится.

pip install qiskit 

Шаг 2. Собираем квантовую схему.

Я использую Jupyter Notebook просто потому что мне так быстрее и я сразу вижу результат. Вы же можете делать это хоть в терминале, а самые ленивые могут просто тыкать «Run» на страничке документации Qiskit.

Держите ссылку на мой ноутбук: Quantum Vas3k.ipynb

Итак, нам нужна схема из 2 кубитов и 2 обычных битов. Импортируем все нужные тулзы и начинаем рисовать.

from qiskit import QuantumCircuit  qc = QuantumCircuit(2, 2)   # 2 qubits + 2 bits 

Все наши биты и кубиты по умолчанию инициализируются в 0.

Дальше накидываем гейты. Потому что можем. Я хочу перевести первый кубит в суперпозицию гейтом H, то есть «подбросить» эту монетку. Если сразу после этого H наш кубит прочитать — мы получим идеальный генератор случайных чисел, в 50% выдающий 0, в 50% — 1.

Физически обоснованный!

Но мы не хотим читать 0 или 1, мы хотим программировать на вероятностях.

Потому вторым гейтом я наложу условие CNOT. Если наш кубит выпадает в 1 — он автоматически перевернёт и соседний кубит. То есть сделает из 0 в 1. Если нет — ничего не изменится. Оба наших кубита остаются по нулям.

qc.h(0)         # gate H for qubit 0 qc.cnot(0, 1)   # gate CNOT between 0 -> 1 qubits 

Шаг 3. Читаем значения.

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

qc.measure(0, 0)   # read qubit 0 -> bit 0 qc.measure(1, 1)   # read qubit 1 -> bit 1  qc.draw(output="mpl") 

Последняя строчка нарисует нам нашу великолепную квантовую схему.

Шаг 4. Достаём симулятор.

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

from qiskit import assemble, Aer from qiskit.visualization import plot_histogram  simulator = Aer.get_backend("qasm_simulator") result = simulator.run(assemble(qc)).result() plot_histogram(result.get_counts()) 

Имитируя вероятности квантового компьютера, наш симулятор выполняет код 1024 раза и замеряет результат каждого эксперимента. Получается вот такая картинка:

Как можно заметить, вероятности близки к 50/50, но даже за 1024 броска монетки наш глупый цифровой рандом не приблизился к идеалу. Но жить вроде можно.

Дальше дело за малым — прочитать результат и сделать с ним что-то полезное в реальном мире. Тут уже можно наговнокодить if'чик на питоне и никто нас не осудит.

if "11" in result.get_counts():     print("РЕШКА") else:     print("ОРЁЛ") 

Он говорит «если оба кубита выпали в 11 — скажи решка, если в 00 — орел». Вариантов 01 и 10 у нас быть не может, иначе всю эту квантовую лавочку можно просто закрывать.

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

Конец.

Нет, стойте, не конец.

Я же обещал выполнить это на реальном квантовом компьютере. С симуляторами ощущения не те. Придётся показать.

from qiskit import IBMQ  IBMQ.save_account("YOUR_API_KEY")  qpu = IBMQ.load_account().get_backend("ibmq_casablanca") result = qpu.run(assemble(qc)).result() plot_histogram(result.get_counts()) 

Ждём два часа в очереди и вуаля:

Ох-???ДАННЫЕ?УДАЛЕНЫ???-еть.

Как будто сам прикоснулся к вечности. Даже растрогался. Ну и немного кекнул над потерявшими когерентность экспериментами посередине.

Вот теперь точно конец.

Забирайте ноутбук.

 

Egor Suvorov А почему на реальном получили 01 и 10? Физические баги приползли? И наверняка будут накапливаться и расти, поэтому надо не просто вероятность максимизировать, а ещё и вероятность ошибок учитывать, чтобы что-нибудь посчитать?

Jovan @Vas3k, расскажи пожалуйста, почему на таком простом примере кубиты потеряли когерентность?

Вастрик **Jovan**, потому что кубиты вообще тяжело создать физически. Они живут очень мало и дохнут случайным образом (как хомяки в детстве). Короче, теряют когерентность просто потому что им так захотелось, а не потому что мы делали из них что-то сложное. Вся эта фигня отлично показывает в чем сейчас главная проблема квантовых компьютеров — мы тупо не можем сделать его нормально

Mikhail Korobko **Egor Suvorov**, на деле нужно использовать алгоритмы коррекции ошибок. С существующими сейчас алгоритмами на один логический кубит приходятся тысячи физических, которые обеспечивают исправление "багов".

Поздравляю, теперь вы квантовый программист

Да, наш хелловорд не очень полезен в жизни, но если вас вдохновило всё происходящее, я могу порекомендовать отличную книжку: Программирование квантовых компьютеров. Базовые алгоритмы и примеры кода (2021) — Мерседес, Хэрриган, Джонстон.

В ней собрана наиболее полная инфа как всё это квантовое безобразие программировать и использовать на практике. Полнее я пока не встречал.

Кажется, это первый раз в истории этого блога, когда я рекомендую книгу ЭТОГО года издания. Вот на такой передовой технологий мы с вами тут находимся, да.

А могли бы тик-токи снимать.

Напоследок наблюдение из практики: программы, работающие исключительно на квантовом процессоре, без привлечения обычного, в реальности не встречаются почти никогда. Только в учебниках.

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

Когда вы будете рассматривать примеры, вы обратите внимание, что почти всегда «квантовый код» составляет лишь малую часть программы на том же питоне.

Всё это очень похоже на использование GPU.

Зачем нам это все?

Наверное, стоило начинать с этого пост, но уже как-то поздновато :D

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

Тут действительно есть где посомневаться.

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

Даже самые топовые квантовые компьютеры гугла и IBM сегодня (март 2021) содержат по 53 и 65 физических кубитов, что вроде неплохо для начала, но работают они не ахти как и не всегда.

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

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

Можете докидывать вопросы в комментах.

 

Орхан Мамедов Как и было на заре компьютеров - Гейтс обещал сплошной глобальный онлайн (а потом появился твитор), так и будет потом - связь с далёкими далёкими галактиками без регистрации и смс, что только появится- хз, магометанство на Бетельгейзе?)

F.A.Q.

? Правда ли, что когда появится квантовый компьютер, вся криптография сломается и мир падёт?

В смысле, серьезно, я могу дать прямо ссылку на Jupyter Notebook, где квантовый алгоритм раскладывает число на простые множители, что по сути ломает шифр RSA. Это не мечты научных фантастов, это, блин, жупитер ноутбук!

Большинство современной криптографии, включая ту, которая делает «зелёный замочек» в любимом веб-браузере и охраняет денежки в вашем онлайн-банке, действительно превратится тыкву, так как алгоритм Шора поможет быстро раскладывать их ключи шифрования на множители, что до сих пор занимало десятки тысяч лет.

— Является ли это проблемой, которая может откинуть наш мир в каменный век?
— ДА!!!!!!!!)0))))))

— Есть ли у нас решение?
— К сожалению, тоже да — пост-квантовая криптография. Звучит как название модной пост-рок группы, но лучше!

У нас уже сразу несколько алгоритмов шифрования, устойчивых в постквантовом мире. Реализация ещё далека от продакшена, но в основном потому что всем пока насрать.

Как только на горизонте замаячит рабочий квантовый компьютер - их быстро допилят.

Настолько быстро, что на гитхабе уже есть прототипы либ от Open Quantum Safe, где ребята даже реализовали постквантовые (!) версии openssl и openssh.

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

Так что детишек взломом RSA пугать можно, но в реальности если бы была хотя бы малая вероятность приближающейся угрозы, все бы уже давно побежали переходить на постквантовые алгоритмы. Пока её даже близко нет.

Но криптоанархистов это не должны останавливать жалкие законы физики!

Прогресс-то идёт. Каждый сам решает когда начинать испытывать FOMO.

? Квантовые компьютеры заменят обычные? Игрушки-то мои любимые быстрее пойдут?

Вряд ли. Скорее всего произойдёт та же история, что с процессором и видеокартой — они станут расширениями друг для друга. Какие-то задачи быстрее считать на CPU, какие-то на GPU, а какие-то вот теперь будут считать на квантовом QPU.

Когда мы говорим, что квантовый компьютер экспоненциально быстрее решает какие-то задачи, мы забывает, что он очень туго решает все остальные

Так что GTAшечка на вашем игровом квантовом пека не будет бежать экспоненциально быстрее, но вот некоторые её части, например обсчет физики столкновений, вполне можно считать на квантовом сопроцессоре.

Квантовая-карта под PCI Express, прикиньте!

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

? То есть мы сами не до конца поняли что происходит, а уже строим компьютер?

А как же знаменитые цитаты из того умного паблика: «нельзя научить компьютер тому, что не знаешь сам © В.И.Ленин» или «если вы считаете, что поняли квантовую механику — вы её не поняли». Вы там совсем чтоле?

И да, отчасти это так. Мы не понимаем, но можем объяснить. Мы знаем, что свойства частиц ведут себя как волны, можем показать это в куче экспериментов, и даже использовать для расчетов, но все еще не понимаем ЭЭЭ ПОЧЕМУ.

Но это нам не мешает. Пфф.

Это в 19 веке ученые были уверены, что всё можно доказать и увидеть, люди же 20-21 века давно поняли, что живут в необъяснимой херне и надо уметь крутиться, а не держаться за Единую Истину.

[скрыть все] [развернуть все]  1 комментарий

Nikolai Gaiduchenko По аналогии, мы до сих пор не можем понять, что такое гравитация. Но можем объяснить, как она работает. И даже построить на этих закономерностях офигенные технологии.

? Транзисторы современных процессоров уже размером с несколько атомов, почему они не квантовые-то?

Разница между квантовыми и обычными CPU именно в архитектуре: квантовый процессор использует квантовые эффекты для вычислений, а обычный CPU от них наоборот страдает.

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

? То есть у нас есть три с половиной алгоритма и недостроенный компьютер, еле-работающий при абсолютном нуле — и это будущее?

Да))0)))

Как видно выше, даже наш симулятор справился с Hello World'ом лучше, чем настоящий квантовый компьютер.

Ну это ладно, с когерентностью разберутся ученые, а вот алгоритмов действительно мало. Здесь миру пригодилась бы помощь настоящих computer scientist'ов. Бонусом можно будет сделать себе бейджик «квантовый программист».

Правда, ну совсем беда. Тут даже языков выше ассемблера всё ещё нет. Памагити.

?

Какие же задачи квантовый компьютер сможет решать реально хорошо?

Повторим еще раз: квантовый компьютер решает задачи хорошо не потому что он быстрее обычного, а потому что он решает их по-другому.

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

  • Любая оптимизация и предсказание минимумов-максимумов. Датасаентисты могут выходить на улицы и ликовать! Антифрод, трейдинг, логистика, поиск аномалий и другая куча всего, за что мы так любим машинное обучение.
  • Симуляция процессов. Столкновения частиц газа, синтез белков, вычислительная химия, да даже предсказание погоды. Сейчас мы всё считаем на моделях с кучей упрощений, а сможем делать прям честно и по-настоящему.
  • Действительно не взламываемая криптография. Современные алгоритмы можно сломать за пару миллиардов лет, а квантовую криптографию нельзя вообще, без нарушения законов физики.
  • Фарма и лекарства. Берем симуляцию белков + задачу оптимизации — вуаля, можем автоматически искать лекарства от рака.

Разберём пару действительно близких нашим сердечкам примеров.

?

Пример 1: Расчёт более крутых батареек для смартфонов и автомобилей

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

Батареи — главный тормоз технологического прогресса сегодня, и каждая компания понимает: кто первый изобретет более ёмкую, быструю или просто безопасную батарейку — озолотится похлеще нефтяных гигантов.

Потому за батарейки сейчас бьются реально все.

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

Вычислительная химия в каждый дом!

То же самое можно делать на белках для поиска лекарства от рака или ковида.

 

Пример 2: Прогноз погоды

Я однажды рассказывал как машины предсказывают нам погоду.

Техдиректор европейского центра метеорологии (ECMWF) даже прислал мне

за этот пост, которая заняла почётное место на моей полке жизненных достижений.

TL;DR: они используют сложные гидродинамические модели, которые предсказывают движение атмосферы, учитывая даже волнение океана, высоту гор и плотность городской застройки.

Почему тогда наш прогноз погоды на завтра такой отвратительный?

Потому что расчёт движения всех потоков в гидродинамике настолько сложен, что даже огромный суперкомпьютер тратит на расчёт погоды на сегодня по 4-8 часов каждое утро.

И это по очень упрощенной модели!

Когда же вы слышите в новостях про «новый ураган во Флориде» — это значит, что эти ребята уже подогнали туда свои более точные модели и уже рассчитывают происходящее в сотни раз точнее, потому что от этого зависят жизни людей.

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

?

Пример 3: Квантовое машинное обучение

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

В квантовом мире уже есть свой алгоритм отжига, находящий глобальный максимум. Есть алгоритм HHL, который щёлкает системы линейных уравнений как орешки.

Даже есть специальная квантовая версия PCA (Principal Component Analysis), ёмко зовущаяся QPCA. Напомню, что именно PCA лежит в основе большинства систем рекомендаций, в том числе и в алгоритмических лентах.

А мы всем помним, что обучить модельку можно один раз на мощном (или даже квантовом) компьютере, а потом запаковать в архивчик на 400Кб и вставлять хоть в мобильные приложения.

Короче, вы поняли насколько всё красиво у этих ребят. Если не поняли — го читать мой старый пост.

[скрыть все] [развернуть все]  1 комментарий

Mikhail Korobko Любопытно, что для машинного обучения можно даже не иметь настоящего (универсального) квантового компьютера. В тех же машинах отжига от D-wave уже 5к кубитов. Они, конечно, заточены под одну конкретную задачу, зато делают ее быстро (хотя ученые спорят все еще, быстрее ли, чем классические алгоритмы). Так что тут будущее ближе, чем для "больших" КК.

Заключение

В конце хотелось бы выразить респекты Мише Коробко (Клуб, Твиттер, Хабр), который терпел мои дилетантские вопросы в 11 вечера типа «Миииш, а у частицы одна волновая функция или несколько?», всю дорогу подсказывал мне правильные аналогии, уберегал от устаревших понятий и сильно помог с вычиткой этого поста.

Чтобы вы понимали насколько далеко зашел рисёрч для этого поста, вот вам случайный скриншот прямо из Университета Гамбурга:

Надеюсь, этот пост хоть немного напомнит вам, ребята квантовые физики, насколько всё это важно.

Я по себе знаю как ежедневная рутина лабораторий может окутывать мозг туманом и насколько важно иметь вот такой вот взгляд с (дилетантской) стороны, который говорит, так, блять, вообще-то именно вы тут ответственны за наше будущее и жизнь чуваков в 2121 году.

Вы все лично прямо сейчас для меня являетесь представителями этого самого будущего. Не проебите его. Больше некому.

Фуф, вернёмся в реальность токсичных интернетов.

Отныне если кто-то будет пытаться вам рассказать, что квантовый компьютер (((как бы параллельно))) перебирает варианты событий и поэтому такой быстрый, вы будете знать на чей пост давать ссылку.

После этого можете показать ему один крутейших комиксов SMBC, где как раз объясняется то же самое. Тот момент когда комикс даёт больше понимания устройства мира, чем весь 11 класс физики советской школы.

Залетайте к нам в научный чат если в посте было что-то не понятно.

Напоследок вот вам задачка на дом: мы все знаем что такое вероятность. Она всегда между 0.0 — событие не произойдет никогда-никогда, и 1.0 — событие произойдет в любом случае. В квантовом мире вероятности бывают отрицательными (при их сложении может получиться ноль).

Но как это вообще можно себе представить мозгом?

Ответы пишите нам в чат, ну либо просто подумайте (погуглите) для себя. Это даст вам новый пинок к пониманию сложности и охуенности нашего мира. Удачи!


Источник: vas3k.ru

Комментарии: