Изменения

Перейти к: навигация, поиск

Обсуждение участника:Shovkoplyas Grigory

91 байт добавлено, 14:56, 16 июня 2015
Нет описания правки
'''Алгоритм Фарака-Колтона, Бендера (алгоритм Фарах-Колтона, Бендера)''' — применяется для решения за <tex>\langle O(N),O(1) \rangle</tex> времени специального случая задачи RMQ (поиск минимума на отрезке), в котором соседние элементы входной последовательности различаются на ±1. Может быть использован также для [[Сведение задачи LCA к задаче RMQ|решения задачи LCA]].
'''Вход:''' последовательность <tex>a_i</tex> длины {{Задача|definition = Дан массив <tex>A[1 \ldots N]</tex>целых чисел, соседние элементы которой отличаются на ±1.Поступают онлайн запросы вида <tex>(l, r)<br/tex>'''Выход:''' ответы на онлайн запросы вида «позиция минимума на отрезке , для каждого из которых требуется найти минимум среди элементов <tex>A[l], A[l + 1], \ldots, A[i:jr]</tex>».}}
== Алгоритм ==
[[Файл:F-C_B_algo.png|right|thumb|Части, из которых состоит ответ на запрос RMQ]]
Данный алгоритм основывается на методе решения задачи RMQ с помощью [[Решение RMQ с помощью разреженной таблицы|разреженной таблицы (sparse table, ST)]] за <tex>\langle O(N \log N),O(1) \rangle</tex>.
# минимум от начала блока, содержащего <tex>j</tex>, до <tex>j</tex>.
Ответом на запрос будет позиция меньшего из эти трёх элементов.
 
[[Файл:F-C_B_algo.png|500px|center|Части, из которых состоит ответ на запрос RMQ]]
Второй элемент мы уже умеем находить за <tex>O(1)</tex> с помощью <tex>b_i</tex> и ST. Осталось научиться находить минимум по отрезку, границы которого не совпадают с границами блоков.
Анонимный участник

Навигация