Вторник, 08.07.2025, 19:52

Приветствую Вас Гость | RSS
Мой сайт
ГлавнаяРегистрацияВход
Меню сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » 2015 » Июль » 6 » Задача RMQ €� 1. Static RMQ : Реализация разреженного массива на C++
23:50
Задача RMQ €� 1. Static RMQ : Реализация разреженного массива на C++

5 марта 2011 в 21:20

Задача RMQ — 1. Static RMQ из песочницы

Введение



Задача RMQ весьма часто встречается в спортивном и прикладном программировании. Удивительно, что на Хабре ещё никто не упомянул эту интересную тему. Попробую восполнить пробел.

Аббревиатура RMQ расшифровывается как Range Minimum (Maximum) Query – запрос минимума (максимума) на отрезке в массиве. Для определённости мы будем рассматривать операцию взятия минимума.

Пусть дан массив A[1..n]. Нам необходимо уметь отвечать на запрос вида «найти минимум на отрезке с i-ого элемента по j-ый».



Рассмотрим в качестве примера массив A = {3, 8, 6, 4, 2, 5, 9, 0, 7, 1}.
Например, минимум на отрезке со второго элемента по седьмой равен двум, то есть RMQ(2, 7) = 2.

В голову приходит очевидное решение: ответ на каждый запрос будем находить, просто пробегаясь по всем элементам массива, лежащим на нужном нам отрезке. Такое решение, однако, не является самым эффективным. Ведь в худшем случае нам придётся пробежаться по O(n) элементам, т.е. временная сложность этого алгоритма – O(n) на один запрос. Однако, задачу можно решить эффективнее.

дерево отрезков
  • интервальная модификация
  • двумерное дерево отрезков
  • смежная задача RSQ
  • дерево Фенвика
  • задача LCA
  • персистентная постановка задачи RMQ
  • …много чего интересного…
  • и самая прелесть: алгоритм Фараха-Колтона и Бендера и преобразование RMQ -> LCA -> RMQ±1, позволяющее решать задачу RMQ за (O(n), O(1))

  • За подробностями можно обращаться, например, в умную книжку Т. Кормена, Ч. Лейзерсона, и Р. Ривеста «Алгоритмы: построение и анализ».

    В последующих темах будут появляться другие источники.

    Благодарю за внимание.

    Просмотров: 553 | Добавил: supoinclus | Рейтинг: 0.0/0
    Всего комментариев: 0
    Вход на сайт

    Поиск

    Календарь
    «  Июль 2015  »
    Пн Вт Ср Чт Пт Сб Вс
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031

    Архив записей

    Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz


  • Copyright MyCorp © 2025Бесплатный хостинг uCoz