Аноним

Полностью динамический алгоритм достижимости с единственным источником: различия между версиями

Материал из WEGA
м
Строка 9: Строка 9:




Определение 1 (Полностью динамическая задача достижимости). Задача заключается в поддержке ориентированного графа и выполнении последовательности следующих операций в различном порядке:
'''Определение 1 (Полностью динамическая задача достижимости'''). Задача заключается в поддержке ориентированного графа и выполнении последовательности следующих операций в различном порядке:


• insert(u,v): вставка дуги (u, v) в граф;
''insert(u,v)'': вставка дуги (u, v) в граф;


• delete(u,v): удаление дуги (u, v) из графа;
''delete(u,v)'': удаление дуги (u, v) из графа;


• reachable(x,y): возвращает true, если существует ориентированный путь между вершинами x и y, и false в противном случае.
''reachable(x,y)'': возвращает true, если существует ориентированный путь между вершинами x и y, и false в противном случае.




Строка 21: Строка 21:




Определение 2 (Полностью динамическая задача достижимости с единственным источником). Задача заключается в поддержке ориентированного графа и выполнении последовательности следующих операций в различном порядке:
О'''пределение 2 (Полностью динамическая задача достижимости с единственным источником)'''. Задача заключается в поддержке ориентированного графа и выполнении последовательности следующих операций в различном порядке:


• insert(u,v): вставка дуги (u, v) в граф;
''insert(u,v)'': вставка дуги (u, v) в граф;


• delete(u,v): удаление дуги (u, v) из графа;
''delete(u,v)'': удаление дуги (u, v) из графа;


• reachable(x,y): возвращает true, если существует ориентированный путь между вершиной-источником s и вершиной y, и false в противном случае.
''reachable(y)'': возвращает true, если существует ориентированный путь между вершиной-источником s и вершиной y, и false в противном случае.




Строка 34: Строка 34:




Еще одним простым решением является ответ на запросы путем поточечного вычисления достижимости, без необходимости сохранении явной информации о достижимости после каждой вставки или удаления. Это можно выполнить за время O(m + n) при помощи любого алгоритма обхода графа. Подобный подход позволяет давать ответы на запросы за время O(m + n) и выполнять обновления за константное время. Заметим, что при использовании обоих подходов время выполнения самой медленной операции составляет O(m + n), что для плотных графов доходит до O(n2).
Еще одним простым решением является ответ на запросы путем поточечного вычисления достижимости, без необходимости сохранении явной информации о достижимости после каждой вставки или удаления. Это можно выполнить за время O(m + n) при помощи любого алгоритма обхода графа. Подобный подход позволяет давать ответы на запросы за время O(m + n) и выполнять обновления за константное время. Заметим, что при использовании обоих подходов время выполнения самой медленной операции составляет O(m + n), что для плотных графов доходит до <math>O(n^2) \;</math>.




Первым улучшением по сравнению с двумя базовыми решениями стал алгоритм Деметреску и Итальяно, которые показали, как поддерживать операции обновления за время O(n1,575), а запросы о достижимости – за время O(1) [ ] в ориентированном ациклическом графе. Их результат основывается на простой редукции решения для задачи с единственным источником до задачи для всех пар. Используя результат Санковски [ ], можно расширить вышеприведенные границы для общего случая ориентированных графов.
Первым улучшением по сравнению с двумя базовыми решениями стал алгоритм Деметреску и Итальяно, которые показали, как поддерживать операции обновления за время O(n^{1,575}), а запросы о достижимости – за время O(1) [1] в ориентированном ациклическом графе. Их результат основывается на простой редукции решения для задачи с единственным источником до задачи для всех пар. Используя результат Санковски [2], можно расширить вышеприведенные границы для общего случая ориентированных графов.


== Основные результаты ==
== Основные результаты ==
4824

правки