Квантовая суперпозиция тигра и медведя

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

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

Биты также можно комбинировать для создания битовых строк, например 0001 или 0010. Это мощный способ кодирования практически любой информации. Простейший пример - использование их для чисел: 1 - 1, 10 - 2, 100 - 4 и т. Д. Для всех степеней 2 и всего, что между ними.

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

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

Итак, давайте напишем некоторые вещи с кубитами!

Легче всего писать цифры, но они немного скучные. Итак, давайте вместо текста. Стандарт ASCII обеспечивает способ назначения строк букв, цифр и знаков препинания в строки битов. Это означает, что мы можем использовать 16-битное облачное устройство IBM для кодирования некоторых смайликов.

Вот пара битовых строк смайликов, которые мы могли бы использовать.

;) = 00111011 00101001 8) = 00111000 00101001

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

В некотором смысле, эти операции могут позволить кубиту быть одновременно и 0, и 1: квантовая суперпозиция. Квантовые компьютеры могут затем использовать эти суперпозиции для создания интерференционных эффектов, точно так же, как мы видим, когда волны накладываются. Затем эти эффекты можно использовать в наших квантовых программах, что позволяет нам находить более короткие маршруты между входом и выходом.

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

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

Теперь давайте использовать тот же принцип, но сделаем что-то более сложное, чем просто смайлики. Давайте наложим фотографии!

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

Атрибуция по адресу https://github.com/decodoku/Quantum_Programming_Tutorial/blob/master/image-superposer/images/License

Я решил использовать кучу фотографий животных из Викисклада. С помощью простых (но не слишком простых) строк из четырех битов мы можем получить 16 разных изображений.

Теперь все, что нам нужно сделать, это выбрать два изображения для наложения. Например, я пошел на 0010 (медведь) и 0001 (тигр). Как только этот выбор сделан, мы знаем, какие битовые строки нам нужны для создания квантовой суперпозиции.

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

Большая часть программирования уже настроена для вас в блокноте Jupyter. Это настраивает задание и отправляет его на одно из квантовых устройств IBM, используя квантовый SDK QISKit.

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

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

Режим наложения изображений этой игры позволит вам выбирать имена файлов и вести вас через процесс их наложения.

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

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

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