Как распутать собственную запутанность

На модерации Отложенный

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

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

 

Часть 53-кубитного квантового компьютера Google Sycamore. Квантовому компьютеру требуются специальные программы, учитывающие суперпозицию и запутанность. В этом случае он сможет справляться с очень сложными вычислениями, используя небольшое количество кубитов. Изображение: Google

 

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

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

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

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

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

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

 

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

 

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

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

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

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

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

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