Як перестановити (змінити) n-бітний вхід?


14

Мене цікавить квантовий алгоритм, який отримує як вхід n-бітну послідовність і який видає як вихід перестановлену (перестановлену) версію цієї n-бітної послідовності.

Наприклад, якщо вхід 0,01,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 великий.(n2)

Примітка:

  • Будь ласка, не надайте класичний алгоритм без будь-якого пояснення того, як кроки класичного алгоритму можуть бути відображені на універсальному квантовому комп'ютері.
  • для мене є 2 хороших способу інтерпретації "випадково вибраних серед усіх можливих хороших результатів" : (1) кожен можливий хороший результат має рівні шанси бути обраним. (2) кожен можливий хороший результат має шанс вибору> 0.

1
Вхід - це двійковий рядок довжиною де k з бітів дорівнює 1, а вихід - будь-який з ( nnkможлива перестановка цього? Це можна зробити на класичному комп’ютері з 1 кроком. Ви хочетеALLLможливих виходів? (nk)1
користувач1271772

Ні, повинен бути створений лише один вихід, який вибирається випадковим чином серед усіх можливих результатів.
JanVdA

Чи був би класичний алгоритм досить хорошим? (Ви все ще можете запустити його на квантовому комп'ютері.) Або вам потрібна що-небудь. який перевершує найкращий класичний алгоритм?
Норберт Шуч

1
@JanVdA: Чому б просто не вибрати будь-який 1 і будь-який 0 і замінити два на класичному комп'ютері?
користувач1271772

1
Оскільки ви не вказали випадковий розподіл, який ви хочете, я просто залишу їх тут: Ділберт і XKCD ;)
Алі,

Відповіді:


4

Це можна зробити за допомогою додаткових кубітів по цих рядках:logn

  1. Перетворіть додаткові кубіти так, щоб вони кодували число вибране рівномірно.k{0,,n1}

  2. Циклічно зсунь вхідних кубітів разів.k

  3. Нехай останні вихідні вхідні кубіти фіксуються як вихід і повторюються на решті з них.n1

Це класичний алгоритм, але ви можете запустити його на квантовому комп'ютері, звичайно, як запропонував Норберт у коментарі. (Аспект, який суперечить тому, що алгоритм є квантовим, мені все ще не зрозумілий, тому якщо запустити класичний алгоритм, такий як той, який я запропонував на квантовому комп'ютері, недостатньо, було б корисно питання уточнити.)

Зауважте, що оскільки питання вимагає випадкового виводу, алгоритм повинен буде генерувати ентропію в якийсь момент, імовірно, шляхом вимірювань або виконання інших не унітарних операцій на кубітах (таких як ініціалізація їх). В алгоритмі, наведеному вище, це перший крок, який генерує ентропію: незалежно від стану додаткових кубітів до виконання операції на етапі 1, вони повинні мати стан після виконання кроку 1 (зk,закодованим у двійковій, скажімо).

1nk=0n1|kk|
k

дякую за відповідь. Мене цікавить власне квантовий алгоритм для проблеми - якщо ви зможете відобразити вище класичного алгоритму квантову програму, то це також добре, але я не маю поняття, як це зробити.
JanVdA

2
Думаю, зараз питання приходить у фокус: ти не дуже шукаєш алгоритм, ти шукаєш код. Те, що я описав, - це алгоритм, і завдання, що залишається, - це реалізувати цей алгоритм (або інший) як код якоюсь мовою або як низькорівневий опис квантового кола. Я пропоную вам переглянути питання, щоб зробити це більш зрозумілим - але пам’ятайте, що ви просите когось зробити нудну і концептуально нецікаву роботу для вас. Альтернатива того, як навчитися робити це самостійно, може здатися страшною, але в кінцевому рахунку може стати кращим рішенням.
John Watrous

Я додав записку до запитання. Я думаю, що ми по- різному інтерпретували поняття квантовий алгоритм . Для мене a_classical алгоритм_ не є квантовим алгоритмом, але може бути відображений у квантовий алгоритм .
JanVdA

HY

Квантовий алгоритм - це алгоритм, який можна відобразити (на кроковому рівні) до програми для універсального квантового комп'ютера. Вхід і вихід кроків квантового алгоритму - це кубіти (або можуть бути відображені в серії кубітів). Останній крок квантового алгоритму = зчитування (спостереження) значень кубітів (таким чином кубіти перетворюються на фактичні біти) Немає обмежень для набору затворів. Ідея полягає в тому, що повний алгоритм може працювати на універсальному квантовому комп'ютері.
JanVdA

3

13(|001+|010+|100)001010100

|001|31=13(|001+|010+|100)|010|100

Один трюк створення квантової перестановки відсортованого введення полягає в тому, щоб спочатку підготувати "стан перестановки", застосувавши сортувальну мережу до списку значень насіння, кожне в єдиному суперпозиції. Мережа сортування виведе кубіти, що містять відсортовані насіння, а також кубіти, що містять порівняння мережі сортування. Стан перестановки - це лише кубіти порівняння. Щоб застосувати його до свого вводу, ви просто запустите вхід через систему сортування в зворотному порядку. Зауважте, що тут є деякі хитрі деталі; дивіться статтю " Удосконалені методики готування власних станів ферміонних гамільтонів ". Вам потрібно було б узагальнити цю техніку для роботи над входами з повторними значеннями, а не лише унікальними значеннями.

|nknk

|000114|41|0011|4216


13(|001+|010+|100)|00113(|001|010+i.|100)

1
@JanVdA Правильно, можна використовувати фази, щоб зробити різні виходи ортогональними. Я читав ваше запитання, що ви хотіли однакової фази у всіх випадках.
Крейг Гідні

0

Квантовий комп'ютер може робити класичні обчислення. Оптимальним алгоритмом було б:

  1. Виберіть будь-який біт (найшвидший, до якого ви можете отримати доступ).
  2. Знайдіть біт, який має протилежне значення (якщо на кроці 1 ви отримали 0, знайдіть 1)
  3. Переключіть їх (0 стає 1, а 1 стає 0).

NO(N)nthO(N)


Дякую, але алгоритм перемикав би лише 2 біти (тому він не генерує всіх перестановок), і це все ще класичний алгоритм, хоча я хотів би бачити квантовий алгоритм.
JanVdA
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.