Теорема: каждый детерминированный алгоритм для этой задачи проверяет Ω(log2 n) ячейки памяти в худший случай.
Доказательство (полностью переписано в более формальном стиле):
Пусть k > 0 — нечетное целое число, и пусть n = k2. Мы описываем противника, который заставляет (log2 (k + 1))2 = Ω(log2 n) зондов.
Мы называем максимальные подпоследовательности одинаковых элементов группами. Возможные входные данные злоумышленника состоят из k длины-k сегментов x1 x2 … xk. Для каждого отрезка xj существует целое число bj ∈ [0, k], такое что xj состоит из bj копий j - 1, за которыми следуют k - bj копий j. Каждая группа перекрывает не более двух сегментов, а каждый сегмент перекрывает не более двух групп.
Group boundaries
| | | | |
0 0 1 1 1 2 2 3 3
| | | |
Segment boundaries
Везде, где есть увеличение на два, мы условно предполагаем двойную границу.
Group boundaries
| || | |
0 0 0 2 2 2 2 3 3
Утверждение: Расположение jй границы группы (1 ≤ j ≤ k) однозначно определяется отрезком xj.
Доказательство: сразу после ((j - 1) k + bj)th ячейки памяти и xj sub> однозначно определяет bj. //
Мы говорим, что алгоритм обнаружил границу группы jth, если результаты его проверки xj однозначно определяют xj под>. По соглашению всегда соблюдаются начало и конец ввода. Алгоритм может однозначно определить местоположение границы группы, не наблюдая за ней.
Group boundaries
| X | | |
0 0 ? 1 2 2 3 3 3
| | | |
Segment boundaries
Учитывая только 0 0 ?, алгоритм не может точно сказать, является ли ? это 0 или 1. Однако в контексте ? должно быть 1, иначе было бы три нечетных группы, и можно вывести границу группы в точке X. Эти выводы могут быть проблематичными для противника, но оказывается, что они могут быть сделаны только после того, как рассматриваемая групповая граница станет «неактуальной».
Требование: В любой момент выполнения алгоритма следует рассмотреть набор наблюдаемых границ группы. Ровно одна последовательная пара находится на нечетном расстоянии, а нечетная группа лежит между ними.
Доказательство: каждая следующая пара ограничивает только четные группы. //
Определите подпоследовательность нечетной длины, ограниченную специальной последовательной парой, как релевантную подпоследовательность.
Утверждение: Ни одна граница группы внутри соответствующей подпоследовательности не определена однозначно. Если существует хотя бы одна такая граница, то идентичность нечетной группы не определяется однозначно.
Доказательство: без ограничения общности предположим, что каждая ячейка памяти, не входящая в соответствующую подпоследовательность, была исследована и что каждый сегмент, содержащийся в соответствующей подпоследовательности, имеет ровно одну неисследованную ячейку. Предположим, что граница группы jth (назовем ее B) лежит внутри соответствующей подпоследовательности. Согласно гипотезе, запросы к xj определяют местоположение B до двух последовательных возможностей. Мы называем один на нечетном расстоянии от левой наблюдаемой границы нечетным-левым, а другой нечетным-правым. Для обеих возможностей мы работаем слева направо и фиксируем расположение каждой оставшейся внутренней границы группы, чтобы группа слева от нее была четной. (Мы можем сделать это, потому что у каждого из них также есть две последовательные возможности.) Если B находится в нечетном левом положении, то группа слева от него является единственной нечетной группой. Если B нечетно справа, то последняя группа в соответствующей подпоследовательности является уникальной нечетной группой. Оба являются допустимыми входными данными, поэтому алгоритм однозначно не определил ни местоположение B, ни нечетную группу. //
Пример:
Observed group boundaries; relevant subsequence marked by […]
[ ] |
0 0 Y 1 1 Z 2 3 3
| | | |
Segment boundaries
Possibility #1: Y=0, Z=2
Possibility #2: Y=1, Z=2
Possibility #3: Y=1, Z=1
Как следствие этого утверждения, алгоритм, независимо от того, как он работает, должен сузить соответствующую подпоследовательность до одной группы. Поэтому по определению он должен соблюдать некоторые групповые границы. Теперь перед противником стоит простая задача — сохранить как можно больше возможностей.
В любой заданный момент выполнения алгоритма злоумышленник внутренне привязан к одной возможности для каждой ячейки памяти за пределами соответствующей подпоследовательности. В начале релевантной подпоследовательностью являются все входные данные, поэтому первоначальных обязательств нет. Всякий раз, когда алгоритм проверяет незафиксированное местоположение xj, противник должен зафиксировать одно из двух значений: j - 1 или j. Если он может избежать наблюдения за границей jth, он выбирает значение, которое оставляет по крайней мере половину оставшихся возможностей (относительно наблюдения). В противном случае он выбирает так, чтобы сохранить по крайней мере половину групп в соответствующем интервале и фиксирует значения для остальных.
Таким образом, противник заставляет алгоритм соблюдать как минимум log2 (k + 1) групповых границ, а при соблюдении jй границы группы алгоритм вынужден сделать не менее log2 (k + 1) проб.
Расширения:
Этот результат напрямую распространяется на рандомизированные алгоритмы путем рандомизации входных данных, замены «в лучшем случае вдвое» (с точки зрения алгоритма) на «в лучшем случае вдвое в ожидании» и применения стандартных неравенств концентрации.
Это также распространяется на случай, когда никакая группа не может быть больше s копий; в этом случае нижняя граница равна Ω(log n log s).
person
user382751
schedule
05.07.2010