Алгоритм Тарьяна поиска «мостов» в графе: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Teplov (обсуждение | вклад) |
Elijah (обсуждение | вклад) |
||
Строка 42: | Строка 42: | ||
=== Последовательная сложность алгоритма === | === Последовательная сложность алгоритма === | ||
− | Последовательная сложность алгоритма составляет <math>O( | + | Последовательная сложность алгоритма составляет <math>O(|E|)</math>. |
=== Информационный граф === | === Информационный граф === |
Версия 14:19, 15 августа 2017
Содержание
- 1 Свойства и структура алгоритма
- 1.1 Общее описание алгоритма
- 1.2 Математическое описание алгоритма
- 1.3 Вычислительное ядро алгоритма
- 1.4 Макроструктура алгоритма
- 1.5 Схема реализации последовательного алгоритма
- 1.6 Последовательная сложность алгоритма
- 1.7 Информационный граф
- 1.8 Ресурс параллелизма алгоритма
- 1.9 Входные и выходные данные алгоритма
- 1.10 Свойства алгоритма
- 2 Программная реализация алгоритма
- 2.1 Особенности реализации последовательного алгоритма
- 2.2 Локальность данных и вычислений
- 2.3 Возможные способы и особенности параллельной реализации алгоритма
- 2.4 Масштабируемость алгоритма и его реализации
- 2.5 Динамические характеристики и эффективность реализации алгоритма
- 2.6 Выводы для классов архитектур
- 2.7 Существующие реализации алгоритма
- 3 Литература
1 Свойства и структура алгоритма
1.1 Общее описание алгоритма
Алгоритм Тарьяна [1] находит мосты в неориентированном графе за время O(m).
Пусть T – дерево в одной из компонент связности графа G.
Выберем корневую вершину и введём обозначения:
• v-\gt w, если в дереве имеется e=(v,w), и вершина находится дальше от корня r, чем вершина v. Далее будем считать дерево T направленным графом, содержащим рёбра указанного вида.
• v=\gt w, если в ориентированном дереве T имеется направленный путь от v к w.
• v***w, если в графе G существует ребро e=(v,w), не принадлежащее дереву T.
• N(v) – нумерация вершин в обратном порядке обхода вершин (post-order). • D(v) – количество потомков вершины v в ориентированном дереве T, то есть . • S(v)={w | v =\gt w \or \exist u(v =\gt u \and u***w}
• L(v) = \min S(v), H(v) = \max S(v).
Алгоритм Тарьяна основан на следующем свойстве: ребро является мостом тогда и только тогда, когда v-\gt w, H(w) \lt = N(w), L(w) \gt N(w) - D(w)
1.2 Математическое описание алгоритма
1. Для каждой компоненты связности графа найти какое-либо остовное дерево T. 2. Перенумеровать вершины T в порядке обратного обхода.
3. В порядке возрастания номера вершины выполнить следующие действия:
a. D(v) := 1+ \sum_{v \rightarrow w}D(w)
b. L(v) := \min { \{N(v) - D(v)+1 \} \cup \{ L(w) | v \rightarrow w \} \cup \{ N(w) | v \cdots w \} }
c. H(v) := \max { \{ N(v) \} \cup \{ H(w) | v \rightarrow w \} \cup \{ N(w) | v \cdots w \} }
d. Пометить ребро v \rightarrow w мостом, если H(w)\lt =N(w) и L(w)\gt N(w)-D(w).
1.3 Вычислительное ядро алгоритма
1.4 Макроструктура алгоритма
1.5 Схема реализации последовательного алгоритма
1.6 Последовательная сложность алгоритма
Последовательная сложность алгоритма составляет O(|E|).
1.7 Информационный граф
1.8 Ресурс параллелизма алгоритма
Алгоритм Тарьяна может работать с любым остовным деревом, поэтому можно применить эффективно параллелизуемый поиск в ширину. Последующие вычисления также могут быть параллелизованы.
Параллельный алгоритм Тарьяна-Вишкина[2] основан на аналогичных вычислениях и может быть адаптирован для поиска мостов.
1.9 Входные и выходные данные алгоритма
1.10 Свойства алгоритма
2 Программная реализация алгоритма
2.1 Особенности реализации последовательного алгоритма
2.2 Локальность данных и вычислений
2.2.1 Локальность реализации алгоритма
2.2.1.1 Структура обращений в память и качественная оценка локальности
2.2.1.2 Количественная оценка локальности
2.3 Возможные способы и особенности параллельной реализации алгоритма
2.4 Масштабируемость алгоритма и его реализации
2.4.1 Масштабируемость алгоритма
2.4.2 Масштабируемость реализации алгоритма
2.5 Динамические характеристики и эффективность реализации алгоритма
2.6 Выводы для классов архитектур
2.7 Существующие реализации алгоритма
3 Литература
- ↑ Tarjan, R Endre. “A Note on Finding the Bridges of a Graph.” Information Processing Letters 2, no. 6 (April 1974): 160–61. doi:10.1016/0020-0190(74)90003-9.
- ↑ Tarjan, Robert Endre, and Uzi Vishkin. “An Efficient Parallel Biconnectivity Algorithm.” SIAM Journal on Computing 14, no. 4 (1985): 862–74.