Обчислення парності перестановки в потоковому способі


16

Я шукаю однопрохідний алгоритм, який обчислює паритет перестановки. Я припускаю, що перехідна перестановка задається потоком . Вихід повинен бути паритетом перестановки. Мене цікавить питання, скільки пам'яті повинен використовувати детермінований алгоритм. Чи існує якийсь рандомізований алгоритм проблеми?π[1],π[2],,π[н]

Я знаю, що для обчислення кількості інверсій за один прохід використовується пам'ять. Верхню межу можна легко отримати за допомогою будь-якої BST. Нижня межа представлена ​​тут: http://citeseerx.ist.psu.edu/viewdoc/versions?doi=10.1.1.112.5622Θ(н)

На жаль, доказ нижньої межі в роботі не може бути поширений на паритетну справу (або це не так очевидно для мене).

Також я знаю, що обчислення парності в невеликому просторі з випадковим доступом до перестановки може бути виконано за часу та пам'яттю за допомогою детермінованого алгоритму або в пам'ять часу та шляхом рандомізованої. Дивіться http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.29.2256O ( log 2 n ) O ( n log n ) O ( log n )О(нжурналн)О(журнал2н)О(нжурналн)О(журналн)

Основна ідея полягає в тому, що парність перестановки можна обчислити за формулою , де - кількість циклів, а - розмір. Автори роблять цикл розкладання перестановки. Таким чином, можна легко обчислити кількість циклів. c nсгн(π)=(-1)н-ccн

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


Це цікаво. Чи можете ви накреслити доказ або назвати проблему, яку ви зведете до паритету?
Всеволод Опарін

4
@ András: Чи не працює алгоритм простору O (n) просто, відстежуючи, які елементи вже були помічені (скажімо, у бітвекторі), а потім для кожного нового елемента x додаючи парність числа # все ще до- видні елементи розміром менше x?
Ласло Козьма

1
@laszlo ваша верхня межа здається мені більш переконливою, ніж мій аргумент щодо більшої нижньої межі. O(n)
Андрас Саламон

Один негативний результат для нижньої межі. Автори першої статті передбачає перестановки на основі двох множин і . Вони використовують його для обчислення того, чи перетинаються іОбчислювальний паритет перестановки займає лише 3 біти одностороннього зв'язку. Це можна легко отримати, обчисливши ранг відповідної матриці. A B A Bπ=А0¯Б1А0Б1¯АБАБ
Всеволод Опарін

Відповіді:


2

Я хотів би попросити усіх не підтримувати це, оскільки це не відповідь, а розширений коментар, в якому я хотів би заперечити, чому на це запитання не отримано жодної відповіді. Моя головна думка полягає в тому, що нижня межа складності зв'язку не працюватиме. Під цим я маю на увазі, що як би ми не розрізали вхід на дві частини і дали його двом гравцям, A і B, A може перенести один біт на B, з якого він може обчислити паритет перестановки. (Це випливає просто з огляду на інверсії.)

Докази, що використовують інший зв’язок, важкі. Дивіться цей коментар тут Ноам Нісан (для недетермінованої версії): Обмежує розмір найменшого NFA для чітко визначених L_k ,

На це відповідне запитання особисто я відповів Герман Грюбер, який свідчить про те, що нижня межа складності спілкування може бути дуже далекою від істини (знову ж таки в недетермінованій версії) Нижня межа для NFA, що приймає 3-літерну мову .

Також пов'язане з тим, що вирішити, чи перестановка є одним циклом, здається, важко, дивіться цей документ про FOCS Ран Різ та Борис Шпікер: http://www.computer.org/csdl/proceedings/focs/1993/4370/00 /0366870-abs.html .

Отже, мені також дуже цікаво дізнатися відповідь на це питання.


Коли ви говорите, що "як би ми не розрізали дані на дві частини", ваш аргумент також виключає скорочення, коли перестановка розбита на більш ніж дві частини? Наприклад, у зв'язаному документі про підрахунок кількості інверсій спостерігається зменшення від заданої неперервності, де Аліса і Боб мають входи , і вони утворюють перестановки і . Індекс 0 або 1 відноситься до перетворень і , а штрих - до доповнення. Іншими словами, що робити, якщо спілкування може бути багатогранним? ¯ A 0 B 1 A 0 ¯ B 1 ¯ A 1 B 0 A 1 ¯ B 0 2 x 2 x + 1А,Б[н]А0¯Б1А0Б1¯А1¯Б0А1Б0¯2х2х+1
Ласло Козьма

@laszlo: У цій проблемі насправді не має значення, як ви вирізаєте вхід, доки ви дасте його лише двом гравцям, оскільки паритет перестановки визначається кількістю його циклів (тому воно відрізняється від числа інверсій).
domotorp

Чи легко зрозуміти, як A може обчислити трохи з її вводу, використовуючи, який B може обчислити паритет? Я бачу, як і А, і Б знають кількість циклів "всередині їх частин". Але як вони знаходять парність циклів "перетину"?
Ласло Козьма

2
@laszlo: Припустимо, вхід A - це щось на зразок 1-> 7, 2-> 5, 3-> 8, 4-> 6. Це має таку ж кількість інверсій, як 1-> 5, 2-> 6, 3-> 8, 4-> 7. Більш загально, Б знає, на які числа відображаються числа А. Використовуючи парну кількість інверсій, A може переставити ці числа в порядку зростання, за винятком останніх двох. Співвідношення цих двох останніх чисел - це один біт, який вона надсилає.
domotorp

@ domotor: наступне запитання - якщо A отримує , B отримує , C отримує перестановок з , вони можуть встановити парність з бітів зв'язку? а1,,анан+1,,а2на2н+1,,а3на[3н]о(н)
Ласло Козма
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.