Учимся программировать квантовый компьютер на основе игры «Морской бой»
«Квантовые компьютеры — довольно интересный новый вид вычислительной техники. Они словно мчатся через немыслимое количество параллельных вселенных, чтобы быстрее запускать программы. В их работе используются принципы, вводившие в заблуждение даже Эйнштейна. Это волшебные коробки, из-за которых ваши блоки с транзисторами будут храниться в пыли», — вероятно, такой текст вы увидите в популярных научных статьях. Они, несомненно, внесли свой вклад в то, чтобы новая технология звучала здорово. Однако они же, авторы подобных статей, могут превратить квантовые вычисления в какое-то оккультное искусство, заниматься которым позволено только самым умным учёным. Но несмотря на то, что это не так, большая часть программистов не увлекается квантовыми вычислениями.
Такие компании, как IBM и Google, занимаются созданием квантовых устройств. Это значит, что время игры с кубитами уже настало.
На начальном этапе программирования квантовых компьютеров вам ничего сверхъестественного делать не нужно будет. Ведь можно начать своё путешествие в мир квантового программирования с того же, с чего начинается и стандартное программирование — с создания игр.
Не беспокойтесь, для этого не нужно иметь собственное квантовое вычислительное устройство. Запуск простых квантовых программ можно симулировать на обычном компьютере благодаря сервисам IBM.
Примечание Обратите внимание, что код на Python, приведённый в статье, далёк от идеала и служит лишь для объяснения принципов работы квантового компьютера.
Рассматриваемая игра относится к самым первым играм для квантовых компьютеров. Для полного понимания её работы в статье будут показаны блоки кода, так что можете экспериментировать по ходу статьи.
После прочтения статьи у вас будет базовое понимание принципов работы квантовых устройств, а так же вы научитесь с ними взаимодействовать.
Квантовые вычисления – что это такое
Идея квантовых вычислений была впервые предложена в начале 1980-х годов Ричардом Фейнманом и Юрием Маниным. Фейнман и Манин считали, что квантовый компьютер может моделировать данные способами, которые недоступны ламповым и транзисторным компьютерам. Лишь в конце 1990-х годов исследователи создали первые подобия квантовых компьютеров.
Квантовые вычисления используют принципы квантовой механики, такие как суперпозиция и запутывание, для выполнения вычислений. Квантовая механика – это раздел физики, который изучает законы взаимодействия на уровень мельчайших частиц энергии.
Основной блок обработки квантовых вычислений – это квантовые биты или кубиты. Кубиты образуются в квантовом компьютере с использованием квантово-механических свойств отдельных атомов, субатомных частиц или сверхпроводящих электрических цепей.
Кубиты похожи на биты, используемые в стандартном компьютере, тем, что кубиты могут находиться в квантовом состоянии 1 или 0. Но, кубиты отличаются тем, что они также могут находиться в суперпозиции состояния 1 и 0, то есть кубиты могут представлять как 1, так и 0 одновременно.
Когда кубиты находятся в суперпозиции, два квантовых состояния складываются вместе и приводят к другому квантовому состоянию. Суперпозиция означает, что несколько вычислений обрабатывается одновременно. Таким образом, два кубита могут представлять четыре числа одновременно. Обычные компьютеры обрабатывают биты только в одном из двух возможных состояний – 1 или 0, а вычисления обрабатываются по очереди.
Квантовые компьютеры также используют эффект запутывания для обработки кубитов. Когда кубит запутан, это означает, что состояние одного кубита влияет на состояние другого кубита, независимо от расстояния.
Показать больше
Искусственный интеллект и «три закона роботехники» из Швейцарии
Этот контент был опубликован 18 мая 2020 года 18 мая 2020 года Недавние дебаты на тему мобильной программы, отслеживающей цепочки заражения коронавирусом, вновь выводят на первый план вопросы научной этики.
По словам М. Вечева, «остается еще много открытых вопросов». Тем не менее, язык «Silq — это крупный прорыв в области оптимизации программирования квантовых компьютеров, пусть он и не является завершающим этапом разработки и совершенствования этого языка».
Но поскольку он проще своих аналогов, то М. Векеев надеется, что «Silq поможет стимулировать процесс инноваций в области компьютерных языков и в сфере алгоритмов квантового программирования».
Статья в этом материале
В соответствии со стандартами JTI
Комментарии к этой статье были отключены. Обзор текущих дебатов с нашими журналистами можно найти здесь. Пожалуйста, присоединяйтесь к нам!
Если вы хотите начать разговор на тему, поднятую в этой статье, или хотите сообщить о фактических ошибках, напишите нам по адресу russian@swissinfo.ch.
LIQUi (Language-Integrated Quantum Operations)
Платформа LIQUi, созданная командой Quantum Architectures and Computation Group в Microsoft Research, включает язык программирования, алгоритмы оптимизации и планирования, а также несколько квантовых симуляторов. LIQUi может использоваться для перевода квантового алгоритма, написанного в виде программы высокого уровня на языке F# из семейства .NET Framework, в низкоуровневые команды для квантового компьютера.
LIQUi позволяет моделировать до 30 кубитов на одной машине с 32 ГБ оперативной памяти. Платформу можно использовать для определения, выполнения и отображения в различных графических форматах квантовых схем. С помощью LIQUi можно имитировать простую квантовую телепортацию, алгоритм факторизации Шора, квантовую ассоциативную память, квантовую линейную алгебру.
Как можно заметить по примеру выше, LIQUi очень похож на Q#.
Несколько кубитов
До сих пор мы определяли только состояние одного кубита. Что объединяетсостояние множественных кубитоввыглядит как?
Комбинированное состояние кратных кубитов является тензорным произведением всех кубитов.
Не беспокойтесь, если вы не знаете, что такое тензорный продукт; мы рассмотрим пример (⊗ — символ операции с тензорным произведением).
В общем случае мы можем тензорным произведением любых двух матриц выполнить следующие два шага:
- Скалярное умножение каждого элемента в первой матрице на всю вторую матрицу
- Объедините полученные матрицы в соответствии с исходным положением их элементов.
Вот второй пример того, как это работает для двумерных матриц:
Мы также можем обозначить множественные кубиты в обозначениях Брэкет как ∣0⟩⊗∣1⟩ , например. В качестве краткости мы можем опустить ⊗ и просто написать ∣0⟩∣1⟩ , Если коротко, мы можем написать только один кет, ∣01⟩ ,
Python
Python остается номером один: простой в использовании, доступный, универсальный язык подойдет каждому, кто интересуется программированием. Даже люди, плохо знакомые с написанием кода, могут с ним сдружиться.
К нашему счастью, многие программные пакеты написанные для симуляции квантовых компьютеров или связи с ними устроены так, чтобы их можно было использовать с Python. Таким образом, понимание основ языка будет чрезвычайно полезно для квантового программирования.
Таким образом, для тех, кто хочет изучать квантовое программирование, Python — хороший способ начать. Из-за его популярности уже существует множество обучающих ресурсов. Python удобен для новичков, что делает его подходящим языком для понимания основных концепций информатики.
Литература
1. J. D. Hidary. Quantum Computing: An Applied Approach. New York: Springer, 2019.
2. Quantum Software Manifesto. URL: https://www.qusoft.org/quantum-software-manifesto (дата обращения: 20.06.2021).
3. C. Ebert, B. Tavernier. Technology trends: Strategies for the new normal // IEEE Software. — 2021. — Vol. 38, N. 2. — P. 7–14. doi: 10.1109/MS.2020.3043407.
Хосе Луис Эвиа (jluis.hevia@alhambrait.com) — директор по квантовым технологиям, Гвидо Петерсен (guido.peterssen@alhambrait.com) — главный инженер по квантовым технологиям, Alhambra IT; Кристоф Эберт (christof.ebert@vector.com) — старший научный сотрудник IEEE; Марио Пьяттини (mario.piattini@uclm.es) — директор по исследованиям в области квантовой механики Alarcos Research Group.
Jose Luis Hevia, Guido Peterssen, Christof Ebert, Mario Piattini, Quantum Computing. IEEE Software, September/October 2021, IEEE Computer Society. All rights reserved. Reprinted with permission.
Квантовые технологии, Программная инженерия, Разработка ПО, Quantum Technologies, Software Engineering, Software Development