Кристаллы времени. Микроволны. Бриллианты. Что общего у этих трех несопоставимых вещей?
Квантовые вычисления. В отличие от традиционных компьютеров, использующих биты, квантовые компьютеры используют кубиты для кодирования информации в виде нулей, единиц или того и другого одновременно. В сочетании с коктейлем сил квантовой физики эти машины размером с холодильник могут обрабатывать огромное количество информации, но они далеко не безупречны. Как и нашим обычным компьютерам, нам нужны правильные языки программирования для правильных вычислений на квантовых компьютерах.
Программирование квантовых компьютеров требует понимания чего-то, называемого «запутанностью», вычислительного множителя для кубитов, что приводит к большой мощности. Когда два кубита запутаны, действия над одним кубитом могут изменить значение другого, даже если они физически разделены, что приводит к характеристике Эйнштейна «призрачного действия на расстоянии». Но эта сила в равной степени является источником слабости. При программировании отказ от одного кубита без учета его запутанности с другим кубитом может уничтожить данные, хранящиеся в другом, что поставит под угрозу правильность программы.
Ученые из Массачусетского технологического института по компьютерным наукам и искусственному интеллекту (CSAIL) решили немного разобраться, создав собственный язык программирования для квантовых вычислений под названием Twist. Twist может описать и проверить, какие фрагменты данных запутаны в квантовой программе, с помощью языка, понятного классическому программисту. В языке используется концепция чистоты, которая обеспечивает отсутствие запутанности и приводит к более интуитивным программам с в идеале меньшим количеством ошибок. Например, программист может использовать Twist, чтобы сказать, что временные данные, сгенерированные программой как мусор, не связаны с ответом программы, что позволяет безопасно их выбрасывать.
В то время как зарождающаяся область может показаться немного кричащей и футуристической, когда на ум приходят образы гигантских проволочных золотых машин, квантовые компьютеры обладают потенциалом для вычислительных прорывов в классически неразрешимых задачах, таких как криптографические и коммуникационные протоколы, поиск и вычислительная физика и химия. Одна из ключевых проблем в вычислительных науках связана со сложностью проблемы и объемом необходимых вычислений. В то время как классическому цифровому компьютеру потребовалось бы очень большое экспоненциальное количество битов, чтобы обработать такую симуляцию, квантовый компьютер потенциально мог бы сделать это, используя очень небольшое количество кубитов — если бы были нужные программы.
«Наш язык Twist позволяет разработчику писать более безопасные квантовые программы, явно указывая, когда один кубит не должен быть запутан с другим», — сказал доктор философии Массачусетского технологического института. студент Чарльз Юань, ведущий автор статьи о Twist. «Поскольку для понимания квантовых программ требуется понимание запутанности, мы надеемся, что Twist проложит путь к языкам, которые сделают уникальные задачи квантовых вычислений более доступными для программистов».
Распутывание квантовой запутанности
Представьте себе деревянный ящик, из которого с одной стороны торчит тысяча кабелей. Вы можете полностью вытащить любой кабель из коробки или полностью вставить его.
После того, как вы проделаете это некоторое время, кабели образуют набор битов — нулей и единиц — в зависимости от того, находятся ли они внутри или снаружи. Эта коробка представляет собой память классического компьютера. Программа для этого компьютера представляет собой последовательность инструкций о том, когда и как тянуть за кабели.
Теперь представьте себе вторую, точно такую же коробку. На этот раз вы дергаете кабель и видите, что, когда он появляется, пара других кабелей протягивается внутрь. Понятно, что внутри коробки эти кабели как-то перепутаны друг с другом.
Второй блок представляет собой аналогию квантового компьютера, и для понимания смысла квантовой программы необходимо понимать запутанность, присутствующую в ее данных. Но обнаружить запутанность не так-то просто. Вы не можете заглянуть внутрь деревянного ящика, поэтому лучшее, что вы можете сделать, это попытаться потянуть за кабели и тщательно проанализировать, какие из них запутались. Точно так же квантовым программистам сегодня приходится вручную рассуждать о запутанности. Именно здесь дизайн Twist помогает массировать некоторые из этих переплетенных частей.
Ученые разработали Twist так, чтобы он был достаточно выразительным, чтобы писать программы для известных квантовых алгоритмов и выявлять ошибки в их реализации. Чтобы оценить дизайн Twist, они модифицировали программы, чтобы ввести какую-то ошибку, которую программист мог бы относительно незаметно обнаружить, и показали, что Twist может автоматически идентифицировать ошибки и отклонять программы.
Они также измерили, насколько хорошо программы работали на практике с точки зрения времени выполнения, которое имело накладные расходы менее чем на четыре процента по сравнению с существующими методами квантового программирования.
Для тех, кто настороженно относится к «захудалой» репутации квантовых компьютеров из-за их способности взламывать системы шифрования, Юань говорит, что до сих пор не очень хорошо известно, в какой степени квантовые компьютеры на самом деле смогут достичь своих обещаний производительности на практике. «В постквантовой криптографии проводится много исследований, которые существуют потому, что даже квантовые вычисления не всемогущи. Пока что существует очень специфический набор приложений, в которых люди разработали алгоритмы и методы, с помощью которых квантовый компьютер может превосходят классические компьютеры».
Важным следующим шагом является использование Twist для создания квантовых языков программирования более высокого уровня. Большинство квантовых языков программирования сегодня по-прежнему напоминают язык ассемблера, объединяя низкоуровневые операции, не обращая внимания на такие вещи, как типы данных и функции, а также на то, что типично для классической разработки программного обеспечения.
«Квантовые компьютеры подвержены ошибкам и их сложно программировать. Вводя и рассуждая о «чистоте» программного кода, Twist делает большой шаг к упрощению квантового программирования, гарантируя, что квантовые биты в чистом фрагменте кода не могут быть изменены. битами, которых нет в этом коде», — говорит Фред Чонг, профессор компьютерных наук Сеймура Гудмана в Чикагском университете и главный научный сотрудник.
Теги: ИИ, Интернет, квант, программист