Як перестановити (змінити) 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

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

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

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

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

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

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

1n∑k=0n−1|k⟩⟨k|
k

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

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

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

HY

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

3

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

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

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

|nk⟩nk

|0001⟩14|41⟩|0011⟩|42⟩16


13(|001⟩+|010⟩+|100⟩)|001⟩13(|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.