Новый язык квантовых вычислений распутывает собственную запутанность
Квантовый компьютер способен решить некоторые задачи намного быстрее, чем классический. Например, запутанность кубитов позволяет достигнуть квантового ускорения вычислений. Однако реальные случаи такого ускорения крайне редки, и одна из причин этого – отсутствие подходящих программ.
На данный момент существует небольшой набор приложений, использующих алгоритмы и методы квантовых вычислений, а большинство квантовых языков программирования работают только с низкоуровневыми операциями. Но работа с квантовыми компьютерами требует понимания запутанности — явления, при котором результаты измерений кубитов коррелируют. Запутанность может определять правильность алгоритмов и пригодность шаблонов программирования.
Например, если на этапе составления программы не будет учитываться, что два кубита запутаны между собой, то данные на них могут быть уничтожены, а программа сработает неправильно.
В качестве аналогии классическому компьютеру можно привести ящик с множеством кабелей, каждый из которых можно вытащить или вставить обратно. Программа для такого компьютера будет набором инструкций, когда и как вытаскивать эти кабели.
Таким же образом можно представить себе квантовый компьютер, но если в этом ящике начать вытаскивать один кабель, то другой может, наоборот, втянуться внутрь, так как они незаметно переплетены между собой.
При составлении программы для такой системы необходимо научиться обнаруживать эти спутанные кабели, то есть, иными словами, находить запутанность между кубитами. Пока что квантовым программистам приходится делать это практически вручную.
Но недавно ученые из Массачусетского технологического института создали новый язык программирования квантовых вычислений под названием Twist. Он способен различать запутанные фрагменты данных в программе и описывать их языком, понятным классическому программисту.
Главная концепция этого языка – так называемая «чистота», то есть исключение лишних данных и более точная настройка программы, которая в идеале приведет к меньшему количеству ошибок в вычислениях.
Согласно языку Twist, существует чистое выражение, на оценку которого не влияют результаты измерения кубитов, не задействованные напрямую в вычислениях. Это подразумевает свободу от запутывания с любым другим выражением.
В Twist также есть операторы утверждения чистоты, которые заявляют об отсутствии запутанности на выходе квантовых вентилей. Чтобы надежно контролировать эти утверждения, Twist использует комбинацию статического анализа и проверки во время выполнения.
На языке Twist можно писать программы для известных квантовых алгоритмов (например, алгоритмов Шора или Гровера) и выявлять нарушения в их реализации. Например, ученые модифицировали программы, введя в них ошибку, и показали, что Twist может автоматически распознавать ошибки и отклонять такие программы.
Так, с помощью Twist можно определить, что временные данные, сгенерированные системой, не связаны с ответом, и их можно не учитывать. В целом, этот язык программирования позволяет создавать более безопасные и точные квантовые программы, в которых можно указать, когда кубиты не должны быть запутаны друг с другом. В дальнейшем ученые планируют создать на основе Twist квантовые языки программирования более высокого уровня.