Що складніше: перемішувати відсортовану колоду чи сортувати перетасовану?


18

У вас є масив з яти різних елементів. У вас є доступ до компаратора (функція чорної скриньки, яка бере два елементи a і b і повертає справжній iff a < b ) і справді випадкове джерело бітів (функція чорної скриньки не бере аргументів і повертає незалежно рівномірно випадковий біт). Розглянемо наступні два завдання:naba<b

  1. На даний момент масив відсортований. Виробляють рівномірно (або приблизно рівномірно) випадково вибрану перестановку.
  2. Масив складається з певної перестановки, вибраної рівномірно за характером. Створити відсортований масив.

Моє запитання

Яке завдання вимагає більше енергії асимптотично?

Я не в змозі визначити це питання точніше, тому що я недостатньо знаю про зв’язок між теорією інформації, термодинамікою чи іншим необхідним, щоб відповісти на це питання. Однак я думаю, що питання можна зробити чітко визначеним (і сподіваюся, що хтось допоможе мені у цьому у відповіді!).

Тепер, алгоритмічно, моя інтуїція полягає в тому, що вони рівні. Зауважте, що кожен вид є перетасуванням у зворотному напрямку, і навпаки. Для сортування потрібен порівнянь під час переміщення, оскільки він вибирає випадкову перестановку з n ! вибір, вимагає журналу n ! n журналу n випадкових біт. Як переміщення, так і сортування вимагають приблизно n змін.logn!nlognn!logn!nlognn

Однак я відчуваю, що слід відповісти, застосовуючи принцип Ландауера , який говорить про те, що йому потрібно енергії, щоб трохи "стерти". Інтуїтивно, я думаю, що це означає, що сортувати масив складніше, тому що він вимагає "стирання" бітів інформації, переходячи від низькоенергетичного, основного стану розладу до високопорядкованого. Але з іншого боку, для будь-якого обчислення сортування просто перетворює одну перестановку в іншу. Оскільки я тут неповний експерт, я сподівався, що хтось із знаннями про зв'язок з фізикою може допомогти "розібратися" в цьому!nlogn

(Питання не отримало відповідей на math.se , тому я його повторно розміщую тут. Сподіваюся, що це нормально.)


Я взагалі не замислювався над цим, тому застережую лектор. Якщо ми починаємо з відсортованого масиву, то використовуємо сортування злиття, але замість порівняння ми використовуємо випадкові біти для злиття (тому замість повернення true iff ми повертаємо true iff, випадковий біт дорівнює 1 ). Базовий випадок, коли ми маємо два масиви розміром один, створює два можливі масиви розміром два з однаковою ймовірністю. Я більше нічого від цього не дістав. a<b1
Люк Матхісон

2
Я думаю, що для того, щоб відповісти на це питання, спочатку потрібно визначити відносні витрати на експлуатацію; скільки коштує читання даних, запис даних та генерування / отримання випадкового числа?
mitchus

@mitchus: Мені цікаво в основному фізичні межі, якщо ми припускаємо "оптимально ефективні" комп'ютери. Моє грубе розуміння полягає в тому, що існує фізична нижня межа кількості енергії, необхідної для "стерти" трохи інформації, в той час як інші операції вимагають набагато менше енергії. Тож мені цікаво, чи ця інтуїція є правильною та формалізованою, щоб дати відповідь.
usul

Що ви маєте на увазі, трохи стершись? Переписувати його? Наскільки я знаю, комп'ютери зазвичай нічого не стирають (за винятком причин конфіденційності), а просто «забувають» про це, виділяючи пов'язану область пам’яті. Але, можливо, я тут неправильно не
розумію

2
@ Patrick87 На жаль, однакова енергетична модель занадто далека від істини, щоб її використовувати; див. Оцінка алгоритмів відповідно до їх енергоспоживання Fudeus née Bayer та Nebel (2009).
Рафаель

Відповіді:


6

nlogn!nlog2n(nlnn)kTnlog2n

Зауважте, що це лише теоретичні нижні межі. Енергія, яка в даний час споживається цими процесами на фактичному цифровому комп'ютері, не має відношення до вищезазначеного аналізу.


Дуже дякую! Чи можу я попросити можливого наївного спостереження? Припустимо, я змінюю формулювання запитання, щоб алгоритм сортування давав деяку фіксовану перестановку елементів і повинен сортувати їх. Тепер, якщо ви підписалися на байєсівську філософію і маєте єдине переконання щодо цього вкладу, здається, відповідь має бути однаковою. Але за філософією, що у вході немає випадковості (хоча я не знаю, що це таке), аргумент здається невдалим. Як вирішити парадокс? Знову дякую!!
usul

@usul: у такому випадку ви все ще видалили біти, тому алгоритм все одно приймає (nlnn)kT

3

Ні. Будь-яку схему можна зробити оборотною , відстежуючи вхід, а розсіювання енергії оборотних обчислень можна зробити довільно малим .


але зробити його оборотним може зробити це неефективним. Яке співвідношення оптимальних алгоритмів. До речі, я не думаю, що вони порівнюють. Перемішування по суті вимагає випадковості (і будь-яка інша випадковість дасть різний результат). Сортування може бути детермінованим. "Повернення" сортування буде переміщуватися детерміновано.
Ран Г.

1
Під "ефективним" ви маєте на увазі час, простір чи якусь комбінацію обох? Зробити обчислення оборотним не обов'язково додає асимптотичну складність часу, і існують оборотні версії кожного обчислення, які використовують не більше місця, ніж оригінали [Vitányi05] .
rphv

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