✏️ ️Посты 🌍 Путешествия Подписаться 👍 Донат
🔍
👤
Квантовый Компьютер
Как устроен? Как программировать? Уже?
16 марта 2021 — 85 комментариев — 225472 просмотра — 7514 слов

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

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

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

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

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

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

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

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

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

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

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

Погнали. Сегодня будет сложно, но интересно.



Комментировать

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

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

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

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

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

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

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

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

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

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



Комментировать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



Комментировать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



4 комментария
56
Sergey Shmelev

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

56
Anton Tsislitsky

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

37
Борис Калинин

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

15
Евгений Богданов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



1 комментарий
38
Михаил Галуза

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

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

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

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

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

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

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



7 комментариев
63
Mikhail Korobko

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

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

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

9
Dmitry Vozzhaev

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

9
Mikhail Korobko

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

5
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
Но ничего не вышло, тамошняя математика чуток за гранью моих когнитивных способностей :(

1
Gleb Kudriavtcev

Не вставилось. Неравенство Белла

27
Ярослав Мирошников

«Русская терминология лажает,» → Entanglement → Переплетение. Ну эц самое… «всё переплетено, море нитей но, потяни за нить, за ней покажется клубок, этот мир веретено…». Термин «запутанность» реально запутывает. А вот переплетение… ну хз, то ли недосып сказывается, то ли это заговорщицкое слово реально лучше объясняет суть.

20
Siarhei Kazlou

как судоку, когда осталось 2 цифры определить)

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

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

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

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

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

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

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

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



2 комментария
40
Александр Котов

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

46
Nikita Galaiko

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

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

В них мы тоже принимаем за 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



3 комментария
35
Egor Suvorov

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

8
Михаил Галуза

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

22
Veaceslav S

ору с картинки

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

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

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

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

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

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

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

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

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

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

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

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



4 комментария
3
Dmitry Kochkin

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

11
Mikhail Korobko

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

122
LexsZero

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

16
murnatty

В чем разница между стрелочкой в правой половине циферблата и аналогичной стрелочкой в левой половине? 30% 0, 70% 1 можно выразить двумя рисунками на циферблате.

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

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

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

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



2 комментария
32
Я слушал реактора гу

Сложна но можна

17
roman bednarskiy

Охренеть.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



1 комментарий
27
Veaceslav S

уахах . про резюме прям орнул

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



3 комментария
34
Alexander Buyanov

А можно пояснение по картинке с алгоритмом (деревом)? Там слева 20% за 0, 80% за единицу, а справа наоборот. Хотя мне казалось, мы складываем с одним и тем же кубитом. Или они связаны?

16
Реваз Габелая

Пока всё понятно, кроме увеличения мощности через добавление кубита.

4
roman bednarskiy

пахнет бутстрапом! :)

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

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

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

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

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

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

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

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

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

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

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

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

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


2 комментария
29
Mikhail Korobko

Кстати, вот классная иллюстрация работы водного компьютера: https://twitter.com/page_eco/status/1188749430020698112

и вот еще: https://www.youtube.com/watch?v=2Ckytxq0OWc

8
Miron Kizesov

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

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

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

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



3 комментария
8
Евгений Бурмистров

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

44
Gleb Markin

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

22
Евгений Бурмистров

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

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

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

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

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

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

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



2 комментария
2
Орхан Мамедов

Рисунок мне непонятнее простой аналогии с арифметикой

0
Igor

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

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

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

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



4 комментария
16
Alex Slepenkov

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

6
Somebodyonce

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

13
Anton Kushnikov

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

4
Михаил Галуза

Anton Kushnikov, в кошмарах?

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

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

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

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

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



Комментировать

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

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

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

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



3 комментария
6
Орхан Мамедов

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

6
Орхан Мамедов

Хм, cnot 🤔

18
Ринат Диев

Но нихель пихель говорила, что стрелочка не поворачивается...

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

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

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

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

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

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

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

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



Комментировать

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

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

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

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

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



1 комментарий
12
Орхан Мамедов

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

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

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

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



1 комментарий
1
Lar Bewcen

Немножк по теме квантового клонирования — MinutePhysics поясняет. Коли есть столько одинаковых объектов, сколько свойств этого класса объектов надо узнать — можно сделать ещё один!

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

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

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

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

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



4 комментария
8
Орхан Мамедов

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

8
Орхан Мамедов

Это именно write или add?

6
Timofey Balashov

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

9
Вастрик

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

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



Комментировать

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

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

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

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



Комментировать

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

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

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

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



1 комментарий
26
Nikolai Gaiduchenko

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

Шаг 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())

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



1 комментарий
11
murfel

Было бы экспрессивнее сделать if '01' или '10': print("wtf")

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

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

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

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



Комментировать

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



4 комментария
10
Egor Suvorov

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

1
Jovan

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

10
Вастрик

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

9
Mikhail Korobko

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

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

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

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

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

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

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

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

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



Комментировать

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

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

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

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

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

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

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

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



Комментировать

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

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

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

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

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

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

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

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

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

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

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



1 комментарий
1
Орхан Мамедов

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

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

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

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

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

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



Комментировать

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

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

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

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



Комментировать

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

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

А вот мешаться и правда будет. Как и современные процессоры упёрлись в эту стену уменьшения техпроцесса.



3 комментария
18
Nikolai Gaiduchenko

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

3
Dmitriy Bader

Прочитал Единую Россию🤦

3
Рустам Каримов

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

Да))0)))

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

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

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



Комментировать

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

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

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

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



Комментировать

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

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

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

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

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

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



Комментировать

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

Техдиректор европейского центра метеорологии (ECMWF) даже прислал мне уточку за этот пост, которая заняла почётное место на моей полке жизненных достижений.

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

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

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

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

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

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



Комментировать

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

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

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

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

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



Комментировать

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

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

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

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

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



1 комментарий
11
Mikhail Korobko

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

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

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

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

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

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

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

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



Комментировать
Комментарии 👇
Lantos 14 марта 2021 в 15:55 #
23

Надо бы рассчитать на квантовом компьютере с какой вероятностью мы создадим стабильный квантовый компьютер к 2121 🤔

Alexander 14 марта 2021 в 19:26 #
16

Как всегда охрененно

Mikhail Korobko 14 марта 2021 в 23:03 #
58

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

Vladimir Bodrov 15 марта 2021 в 17:48 #
6

Я в квантовых вычислениях понимал на уровне Котов, сейчас кажется, немного понял.

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

Alex Antipov 16 марта 2021 в 09:39 #
3

Всех сгоняет с патреона, но в то же время дает патронам ранний доступ. Кто же после такого с него уйдет?

Вастрик 16 марта 2021 в 09:41 #
3

Alex Antipov, дык с патреона только однодолларовых сгоняют из-за комиссий, для бояр же с ранним доступом патреон всё-так же ван лав (им даже цены понизили)!

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

Марк Стручков 16 марта 2021 в 09:50 #
1

Как всегда збс

Марк Стручков 16 марта 2021 в 09:50 #
0

А что у меня с аватаром, почему он не подгружается из клуба, WTF @vas3k

Dmitry Kizilov 16 марта 2021 в 11:35 #
5

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

Например, если взять обычного мужика и увеличить в 10^20 раз (42 размера Млечного Пути), нас он тоже сможет наблюдать только как некие облака, в которых мы находимся с некоторой вероятностью в некотором состоянии, все из-за ограничений скорости его восприятия.

Довольно наглядно для облегчения понимания кмк, не приходится запоминать "потому что вот потому"

Dmitry Kuznetsov 16 марта 2021 в 14:18 #
7

Про Патреон не понял, я что, просто так что ли доллар плачу?!

Dmitry Kuznetsov 16 марта 2021 в 14:19 #
0

Про квантовый компклюктер понял, про Патреон — не понял. Что за дела?

Lar Bewcen 16 марта 2021 в 14:58 #
9

Dmitry Kizilov, нет, нет, нет, нет! Не надо туда смотреть. Это объяснение ложно — нам не приходится их рассматривать так потому что они малы и быстры. Как волны мы их рассматриваем только потому, что эти явления (электрон и его взаимодействия) лучше всего (пока что) описываются волновыми уравнениями. Волны — это тоже абстракция. То, что электроны малы и быстры, не является основанием рассматривать их как волны. Нельзя так "потому что" говорить.

Bohdan Rudkivskyi 16 марта 2021 в 16:19 #
6

Ууух - каеф! И научно и популярно :)
Единственное - напряжение на CPU - далеко не 5В. В современных процессорах - около 0.8-1.5В

Evgenii Bukhtin 16 марта 2021 в 16:32 #
1

Ухх как мы на зачёте по квантовым алгоритмам скрипели мозгами стряхивает песок

Каеф, пойду вращать квантовые деревья

Anton Kurudinov 16 марта 2021 в 20:39 #
11

Хочется еще описания "железа". На какой элементной базе гугл и ibm подкидывают свои монетки? Какие элементарные частицы при взаимодействии дадут кубит при абсолютном нуле? Или там совсем утонуть можно?

Roman Savinkov 17 марта 2021 в 06:26 #
6

Преимущество квантовых алгоритмов в решении некоторых задач понял. Не понял приемущество симулятора квантового компьютера перед настоящим. Неужели выполнение разложения на простые множители в симуляторе квантового компьютера всё так же потребует миллиарды лет? Это из-за необходимости делать миллиарды прогонов?

Roman Savinkov 17 марта 2021 в 06:31 #
0

Как вообще работает симулятор квантового компьютера?)

Roman Savinkov 17 марта 2021 в 07:02 #
0

Наверное тут нужно вводить инструменты оценки сложности квантовых алгоритмов и оценки сложности их симуляции.

Dmitry Kizilov 17 марта 2021 в 08:35 #
0

Lar Bewcen,

Это объяснение ложно — нам не приходится их рассматривать так потому что они малы и быстры.
Ну почему же? Тут поинт в том, что мы ограничены своими технологиями и измерительными приборами (+ немножко физикой), поэтому приходится работать с тем что есть (натягивать волновые уравнения на элементарные частицы)
Я совсем не против, работает - не лезь, хоть это и немножко утиная типизация.

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

Dmitry Kizilov 17 марта 2021 в 08:40 #
0

делиться, аррр

Lar Bewcen 17 марта 2021 в 10:09 #
2

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

А комикс именно что пытается натянуть привычное понимание макромира на микромир. Это как зная ПДД пытаться ими же объяснить детонацию топливно-воздушной смеси в ДВС, ну не работает заимствование тут

Egor Suvorov 17 марта 2021 в 10:12 #
2

Roman Savinkov,

Неужели выполнение разложения на простые множители в симуляторе квантового компьютера всё так же потребует миллиарды лет? Это из-за необходимости делать миллиарды прогонов?

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

Как вообще работает симулятор квантового компьютера?)

Один из вариантов, как я понимаю: в каждый момент времени для любой комбинации нулей/единиц (коих экспонента) храним вероятность её получения. С фазой и прочими делами. Хранить просто независимо вероятность для каждого кубита нельзя — запутанность потеряем, а в ней весь прикол.

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

Anatoly Shipitsin 17 марта 2021 в 16:13 #
6

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

Андрей Серов 17 марта 2021 в 21:10 #
6

Господи, как же охуенно-то, а.
Последнее время редко случаются такие вот инсайты, когда ХОБА и вдруг понял. Одно из лучших ощущений ever.

Maksym Kramarenko 22 марта 2021 в 12:05 #
4

Когда уже можно будет клонировать Вастрика, чтобы он и клоны могли больше областей этого мира изучить, переживать и таким текстом рассказать 💁‍♂️. А потом клонировать себя, чтобы это все прочитать 🤔 Ну что-то такое...

Egor Popelyaev 22 апреля 2021 в 06:50 #
0

Вастрик, уж не по мотивам ли твоей статьи написано?)
https://lambdafaktorie.com/how-to-write-your-first-quantum-program/

Еще? Тогда вот