Меня интересует квантовый алгоритм, который получает в качестве входных данных n-битную последовательность и который выдает в качестве выходных данных перетасованную (переставленную) версию этой n-битной последовательности.
Например, если входное значение равно 0,0,1,1 (в данном случае n = 4), то возможные ответы:
- 0,0,1,1
- 0,1,0,1
- 0,1,1,0
- 1,0,0,1
- 1,0,1,0
- 1,1,0,0
Обратите внимание, что должен генерироваться только один выход, который выбирается случайным образом из всех возможных допустимых выходов.
Как это лучше всего реализовать в квантовом алгоритме ?
Решение для этого уже предложено как часть одного из ответов на вопрос Как создать квантовый алгоритм, который производит 2 n-битные последовательности с равным количеством 1-бит? , Но проблема с этим решением состоит в том, что для этого требуется около справочных кубитов, которые быстро становятся большими, если n большое.
Замечания:
- Пожалуйста, не предоставляйте классический алгоритм без какого-либо объяснения того, как этапы классического алгоритма могут быть сопоставлены с универсальным квантовым компьютером.
- для меня есть 2 хороших способа интерпретировать «случайно выбранный среди всех возможных хороших выходов» : (1) каждый возможный хороший выход имеет равные шансы быть выбранным. (2) каждый возможный хороший выход имеет шанс> 0 быть выбранным.
Ответы:
Это можно сделать с помощью дополнительных кубитов по этим направлениям:⌈logn⌉
Это классический алгоритм, но вы, конечно, можете запустить его на квантовом компьютере, как предложил Норберт в комментарии. (Аспект вопроса, который непреклонен в отношении того, что алгоритм является квантовым, до сих пор мне неясен, поэтому, если недостаточно выполнить классический алгоритм, такой как предложенный мною на квантовом компьютере, было бы полезно, чтобы вопрос быть уточненным.)
Обратите внимание, что, поскольку вопрос требует случайного вывода, алгоритм должен будет генерировать энтропию в некоторой точке, предположительно, посредством измерений или выполнения других неунитарных операций над кубитами (таких как их инициализация). В приведенном выше алгоритме это первый шаг, который генерирует энтропию: независимо от состояния дополнительных кубитов перед выполнением операции на шаге 1 они должны иметь состояние после выполнения шага 1 (скажем,сk,закодированным в двоичном виде).
источник
Примечание: этот ответ предполагает, что вы хотите, чтобы перестановка была последовательной , т.е. вы хотите вместо 1/3 шанса001, 1/3 шанса010и 1/3 шанса100.13√(|001⟩+|010⟩+|100⟩) 001 010 100
Будьте внимательны при определении этой задачи, потому что это может быть очень просто невозможно из-за ограничений обратимости. Например, для ввода вы хотите вывести государственный GHZ | 3|001⟩ . Но если вы также хотите вывести состояние GHZ для входа| 010⟩и| 100⟩, что не будет работать. Вы не можете отправить несколько состояний ввода в одно и то же состояние вывода (без декогеренции). Пока вы говорите: «Я забочусь только о отсортированных восходящих входах, таких как 0000111, но не 1110000 или 0010110; вы можете делать с ними все, что захотите», это будет хорошо.∣∣31⟩=13√(|001⟩+|010⟩+|100⟩) |010⟩ |100⟩
Один из способов получения квантовой перестановки отсортированного ввода состоит в том, чтобы сначала подготовить «состояние перестановки», применяя сортировочную сеть к списку начальных значений, каждое из которых находится в равномерной суперпозиции. Сортировочная сеть будет выводить кубиты, содержащие отсортированные начальные числа, а также кубиты, содержащие сравнения сортирующей сети. Состояние перестановки - это просто кубиты сравнения. Чтобы применить его к своему вводу, вы просто запускаете ввод через сеть сортировки в обратном порядке. Обратите внимание, что здесь есть некоторые хитрые детали; см. статью « Усовершенствованные методы приготовления собственных состояний фермионных гамильтонианов ». Вам придется обобщить эту технику для работы с входами с повторяющимися значениями, а не только с уникальными значениями.
источник
Квантовый компьютер может выполнять классические вычисления. Оптимальным алгоритмом будет:
источник