Я ищу однопроходный алгоритм, который вычисляет четность перестановки. Я предполагаю, что входная перестановка задается потоком . Выходными данными должно быть соотношение перестановок. Вопрос, который меня интересует, сколько памяти должен использовать детерминированный алгоритм. Есть ли какой-либо рандомизированный алгоритм для задачи?
Я знаю, что для вычисления числа инверсий за один проход используется память . Верхняя граница может быть легко получена с помощью любого 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.2256.
Основная идея состоит в том, что четность перестановки может быть вычислена по формуле , где - число циклов, а - размер. Авторы делают цикл разложения перестановки. Таким образом, можно легко вычислить количество циклов.
Кто-нибудь знает эффективный алгоритм или нижнюю границу памяти для вычисления четности в потоковой модели? Рандомизированные алгоритмы лучше случайной монеты мне тоже интересны.
источник
Ответы:
Я хотел бы попросить всех не высказывать это, так как это не ответ, а расширенный комментарий, в котором я хотел бы обсудить, почему на этот вопрос не было получено никаких ответов. Главное, что нижняя граница сложности общения не будет работать. Под этим я подразумеваю, что независимо от того, как мы разделим входные данные на две части и дадим их двум игрокам, A и B, A может передать один бит в B, из которого он может вычислить четность перестановки. (Это следует просто из рассмотрения инверсий.)
Доказательства, использующие другую границу, сложны. См. Этот комментарий здесь от Ноама Нисана (для недетерминированной версии): Ограничения по размеру самого маленького NFA для L_k-отчетливого ,
На этот связанный вопрос я сам ответил Германом Грубером, который показывает, что нижняя граница сложности общения может быть очень далека от истины (опять же в недетерминированной версии) Нижняя граница для NFA, принимающего трехбуквенный язык .
Также связано с тем, что решить, является ли перестановка одним циклом, кажется трудным, см. Этот документ FOCS Ран Раза и Бориса Шпикера: http://www.computer.org/csdl/proceedings/focs/1993/4370/00 /0366870-abs.html .
Поэтому мне также очень интересно узнать ответ на этот вопрос.
источник