Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ]

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

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

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

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

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

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

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

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

Сегодня я попробую свой путь, которым я объясняю это своим интересующимся друзьям.

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

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

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

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


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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

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

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

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

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

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

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

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

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

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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

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

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

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

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

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

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

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

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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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


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

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

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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

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

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

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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

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

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

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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

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

Бежиииим...


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


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

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

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

Кубит


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

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

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

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

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

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


🌚 Обычный бит


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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

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

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

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

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

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

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


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

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

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

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

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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

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

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

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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

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

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

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

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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

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

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

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

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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

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

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

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

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

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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

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

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

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

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

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

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

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

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

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

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

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

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

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

The Алгоритм

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

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

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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

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

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

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

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

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

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



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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

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

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


Итак, нам нужна схема из 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


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

qc.measure(0, 0) # read qubit 0 -> bit 0

qc.measure(1, 1) # read qubit 1 -> bit 1

qc.draw(output="mpl")


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

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 раза и замеряет результат каждого эксперимента. Получается вот такая картинка:

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

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

if "11" in result.get_counts():

print("РЕШКА")

else:

print("ОРЁЛ")


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

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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

Конец.


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

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

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())


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

Квантовый Компьютер Как устроен? Как программировать? Уже? [ДЛИННОПОСТ] Разработка, Программирование, Картинка с текстом, Квантовая физика, Квантовая механика, Квантовый компьютер, Квантовая запутанность, IT, Длиннопост

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

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

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


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



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

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

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

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

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

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


Источник, не обрезанный

https://vas3k.ru/blog/quantum_computing/

Лига программистов

1.5K постов11.4K подписчиков

Добавить пост

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

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

Вы смотрите срез комментариев. Показать все
41
Автор поста оценил этот комментарий

Так, стоп.

Если мы можем влиять на вероятность выпадения 1 и 0 у запутанных частиц - мы имеем по-настоящему полноценную сверхсветовую передачу информации.

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

Но если мы сможем целенаправленно прочитать "0101" - то на альфе лебедя получат уже осмысленное сообщение "1010".

Охуеть. "Так человек приближается к Богу - и подбирает к нему пароль." (С)

раскрыть ветку (50)
29
Автор поста оценил этот комментарий
Имхо, это не так работает. Влиять можно в процессе запутывания, разделили систему - всё. А я ещё не понимаю весь кипишь - ну раскидал я пару носков по коробочкам не глядя, отправил одну за десять тысяч световых лет, как Бони М завещал. Носки в суперпозиции, ибо б/у, но какой где - неизвестно. Наступает понедельник, все носки в стиралке забыты, вскрываю коробку - а там ЛЕВЫЙ. Ну так ясен пень, что там далеко-далёко ПРАВЫЙ. И что? В чём проблема? Какое нахрен дальнодействие? Чушь собачья. Вот где лютые сомнения : https://ru.m.wikipedia.org/wiki/Неравенства_Белла
раскрыть ветку (6)
15
Автор поста оценил этот комментарий
Влиять можно в процессе запутывания, разделили систему - всё.

Чёрт. Опять не удалось наебать физику.

Жаль...

раскрыть ветку (4)
3
Автор поста оценил этот комментарий
С чего бы? Вот есть миллиарды миллиардов попарно запутанных частиц. Один чемодан частиц оставили на земле, второй чемодан улетел в Андромеду и всё. Всегда меняя частицы на Земле можно будет получить информацию в Андромеде
раскрыть ветку (3)
7
Автор поста оценил этот комментарий

Не меняя. Измерив состояние частицы, мы знаем  значение связанной, но изменив состояние частицы, мы теряем их связанность.

раскрыть ветку (2)
1
Автор поста оценил этот комментарий
Облом (
раскрыть ветку (1)
Автор поста оценил этот комментарий

^/

5
Автор поста оценил этот комментарий

Эти носки выросли из попыток в популизм. Суть не в телеграмах по галлактике.


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

5
Автор поста оценил этот комментарий

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

раскрыть ветку (7)
5
Автор поста оценил этот комментарий

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

раскрыть ветку (5)
1
Автор поста оценил этот комментарий
А, понял, видимо в научпопе не акцентируют на этом внимание, что суперпозиция разрушается одновременно для обеих частиц вне зависимости от расстояния, так? Т.е. получается запутанные атомы можно использовать как двоичные биты - если на другом конце вселенной разрушили суперпозицию, она разрушится и у тебя, и это будет единица. Если одновременно не разрушили суперпозицию для других атомов - это ноль. Как то так?
раскрыть ветку (4)
1
Автор поста оценил этот комментарий

Да  об этом то и речь. Суперпозиция рушится в момент измерения для обоих частиц. Но т.к мы не можем взаимодействовать с другим концом вселенной от этой информации фактически нет никакого смысла о чем и речь то я вел. Вот условно есть у вас на альфа центавре коробка с частицами  запутанными с коробкой с частицами на земле. Вы в какой то момент времени проводите измерение, разрушаете суперпозицию. И получаете 101010. На земле проводят измерение (допустим что они не провели его раньше вас хотя это тоже возможно) и получили 010101 и какой вывод из этого можно сделать? Да никакого. Да они знают что если вы провели измерение то у вас будет 101010. Но провели вы это измерение? Неизвестно. А если вы не провели а на земле провели раньше вас  и разрушили суперпозицию? Влиять как то на то будет 1 или 0 вы тоже не можете (это фактически случайное значение, хотя вроде бы слабые квантовые измерения позволяют путем многократных попыток выбить нужный результат) Но так или иначе без какого либо еще канала связи эта информация просто набор случайных чисел и фактически бесполезна.

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

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

И допустим если можно повлиять на вероятность (как в статье написано) - берём отправляем на Альфу центавру 2 контейнера - в одном запутанные нули, во втором запутанные единицы. На Альфацентавре ставим следить комп за процессом разрушения суперпозиций и просто по порядку разрушения записываем 0 и 1, получаем инфу на выходе.

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

Не получится) Ведь измерение как раз и разрушает суперпозицию для обоих запутанных частиц) Т.е. как только вы включите этот комп что должен наблюдать за частицами то усе. Автор же вполне себе неплохо описал в статье - суперпозиция это не какое то там мистическое состояние вещества. Это просто термин - обозначение всех возможных вероятностей измерения. Ну вот условно вы утром встали на весы: есть вероятность что весы покажут 91кг 90кг или 89 кг. Т.е. пока вы на весы не встали и измерение не провели вы находитесь в суперпозиции. Как только измерили и узнали что ваш вес 90кг то все суперпозиция разрушена. Суперпозицию нельзя как то измерить, или отследить ведь ее по факту не существует, это просто математическая операция. Измерить вы можете только какие то параметры частиц, импульс координаты, зряд, спин и т.д. А говорить об отслеживании супепозиции это все равно что "давайте измерим вычитание"

2
Автор поста оценил этот комментарий

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

4
Автор поста оценил этот комментарий

Не можем) В любом случае не получится так передать информацию. Смотрите мы прочитали допустим 10001 не важно случайные или целенаправленные. И что? И ничего. А на альфа лебеде в этот момент что то читали? Или например оператор проспал? Или устройство сломалось? Или часы отстали?

Так что закон том что нельзя передать информацию быстрее скорости света пока нерушим)
раскрыть ветку (5)
Автор поста оценил этот комментарий

Да, спасибо, мне уже пояснили, что оно так не работает.

Автор поста оценил этот комментарий

Быстрее. От Альфы Центавры свет идет 10 световых лет. Оператор максимум сутки проспит, потом почитает. Или как?

раскрыть ветку (3)
Автор поста оценил этот комментарий

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

раскрыть ветку (2)
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
Автор поста оценил этот комментарий

Постоянное считывание невозможно, ведь первое же измерение разрушит суперпозицию и уничтожит запутанность)))

1
Автор поста оценил этот комментарий

Это так не работает. На другом конце реально ничего не меняется, и им нужно узнать, что намеряли на другом. Самая лучшая для понимая аналогия, как ни странно - пара носков. Один из них левый, другой правый. Но пока они не на ногах - неизвестно, который из них какой. Но, как только мы надели один носок, допустим, на правую ногу - другой автоматически и мгновенно становится левым. И наоборот. Теперь берём и отвозим один из носков на альфу Центавра, и там космонавт надевает его на правую ногу. Второй носок автоматически и мгновенно становится левым. Но в ЦУПе на Земле с другим носком ничего не происходит, хотя формально он уже левый. И наблюдатель на земле сможет узнать, что носок стал левым только тогда, когда ему придёт сообщение с альфы Центавра о том, что другой носок стал правым.

раскрыть ветку (2)
Автор поста оценил этот комментарий

А если на земле носок тоже оденут на правую ногу? Получится два правых носка?

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

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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

5
Автор поста оценил этот комментарий

Если так все просто, то где эксперименты? Где реальное использование, ведь это же прорыв? На деле: реальных физических экспериментов, подтверждающих теорию, нет; есть теория и совсем уж фантастичные домыслы; есть теория о том, что у эл.частицы имеется спин, нет достоверных экспериментов с научной выкладкой, которые бы это подтверждали.


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

раскрыть ветку (16)
8
Автор поста оценил этот комментарий

Когда-то деление ядра было теорией, "на бумаге и в формулах".

Потом - лабораторным экспериментом. Примерно, столь же практически полезным.

А потом военные влили в это дело бабла - и получилась Хиросима.

раскрыть ветку (12)
3
Автор поста оценил этот комментарий

Теория теории рознь. Вспоминается известная фраза: "Вот убьют, тогда приходите"

раскрыть ветку (2)
2
Автор поста оценил этот комментарий

Hic Rhodus, hic salta.

(На латыни, как в Симпсонах, есть всё =)

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Хорошее высказывание, спасибо. Подходит, заберу себе копию :)

Автор поста оценил этот комментарий

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

раскрыть ветку (8)
2
Автор поста оценил этот комментарий

А что бы вы назвали "реальным делением ядра"?

раскрыть ветку (7)
1
Автор поста оценил этот комментарий

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

раскрыть ветку (6)
Автор поста оценил этот комментарий
Реализация принципа деления ядра без использования спонтанного деления

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

получения на этом фоне энергии напрямую

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

раскрыть ветку (5)
1
Автор поста оценил этот комментарий

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

"Так энергия и сейчас получается напрямую: тепловая." Ну тогда и пещерный человек пользовался электричеством напрямую.

раскрыть ветку (4)
1
Автор поста оценил этот комментарий
Критическая масса не нужна, но бомба имплозивного типа. Что-то друг с другом не вяжется.

Что не вяжется-то? Имплозия уплотняет расщепляющийся материал и препятствует его расширению в ходе цепной реакции. А цепная реакция запускается с помощью нейтронного инициатора, который в нужный момент "выстреливает" в сборку пучок нейтронов, начинающих цепную реакцию. А для пущей пущести ещё и тритиевый бустер нейтроны подкидывает. И вся эта мегасложная херня нужна именно чтобы взорвать кусочек РВ, весом в долю критической массы, с очень высоким кпд.

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

пещерный человек пользовался электричеством напрямую

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

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

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

раскрыть ветку (2)
2
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Гаспада,  в этом году как раз 100 лет опыту Штерна и Герлаха по определению спина частиц, аднако

DELETED
Автор поста оценил этот комментарий

Понятно, а спиндетекторы мне, наверное приснились:) и магнетизма не существует

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

Скорость интернета станет бесконечной?

раскрыть ветку (7)
3
Автор поста оценил этот комментарий

Это как фура, гружёная ССДшками. В теории, скорость передачи данных стремится к приемлемой, а на практике...

5
Автор поста оценил этот комментарий
Немножко рушит представление о мире, правда?)
раскрыть ветку (4)
3
Автор поста оценил этот комментарий

Получается, что любая информация может находиться в любой точке пространства в любом объёме? Тогда ssd можно будет не покупать?

раскрыть ветку (3)
4
Автор поста оценил этот комментарий
Хотя какое-то локальное хранилище наверное должно же быть. Если всё не будет в облаке, конечно.
2
Автор поста оценил этот комментарий
В теории – да)
но мы не доживём
раскрыть ветку (1)
Автор поста оценил этот комментарий

Как повезёт уж.

Орвилл Райт успел увидеть B-29 Superfortress.

Автор поста оценил этот комментарий
Бесконечно долгой
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку