Решение RMQ с помощью разреженной таблицы — различия между версиями
| Smolcoder (обсуждение | вклад)  (→Разреженная таблица) |  (→Разреженная таблица) | ||
| Строка 7: | Строка 7: | ||
| Простой метод построения таблицы заключён в следующем реккурентном соотношении:   | Простой метод построения таблицы заключён в следующем реккурентном соотношении:   | ||
| + | |||
| <tex> ST[i][j] =   | <tex> ST[i][j] =   | ||
| \left\{    | \left\{    | ||
| − |             \begin{array}{ | + |             \begin{array}{rcl}    | 
|               \min\left(ST[i][j-1], ST[i+2^{j-1}][j-1]\right), j > 0 \\    |               \min\left(ST[i][j-1], ST[i+2^{j-1}][j-1]\right), j > 0 \\    | ||
|               A[i], j = 0 \\    |               A[i], j = 0 \\    | ||
Версия 00:16, 15 апреля 2012
Разреженная таблица (англ. sparse table) позволяет решать задачу online static RMQ за на запрос, с предподсчётом за и использованием памяти.
Содержание
Постановка задачи RMQ
Дан массив действительных чисел. Поступают запросы вида , на каждый запрос требуется найти минимум в массиве , начиная с позиции и заканчивая позицией .
Разреженная таблица
Разреженная таблица — двумерная структура данных , для которой выполнено следующее: . Иначе говоря, в этой таблице хранятся минимумы на всех отрезках, длины которых равны степеням двойки. Объём, занимаемый таблицей, равен , и заполненными являются только те элементы, для которых .
Простой метод построения таблицы заключён в следующем реккурентном соотношении:
.
Идемпотентность
Такая простота достигается за счет идемпотентности операции минимум: . Это один из ключевых моментов этого метода, так как она позволяет нам корректно считать минимум в области пересечения отрезков.
Таким образом мы получаем целый класс задач, которые могут решаться разреженной таблицей: вместо минимума может быть любая идемпотентноя бинарная операция , где — некое множество, над которым задан массив .
Применение к задаче RMQ
См. также
Источники
- Bender, M.A., Farach-Colton, M. et al. — Lowest common ancestors in trees and directed acyclic graphs. — J. Algorithms 57(2) (2005) — с. 75–94.

