Меня интересует квантовый алгоритм, который получает в качестве входных данных 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 быть выбранным.