Алгоритм Тарьяна

Алгоритм Тарьяна

Алгоритм Тарьяна — алгоритм поиска компонент сильной связности в орграфе, работающий за линейное время.

Этот алгоритм основан на том, что:

  1. Мы рассматриваем вершины в обратном топологическом порядке, поэтому, когда мы придем в конец рекурсивной функции для исходной вершины, мы не встретим ни одной вершины из той же сильной компоненты, так как все вершины, достижимые из этой, уже обработаны.
  2. Обратные связи в дереве дают второй путь из одной вершины в другую и связывают сильные компоненты.

Неформальное описание алгоритма

Algorithm Tarjan.gif

Алгоритм Тарьяна можно понимать как вариацию алгоритма поиска в глубину, в котором при посещении вершины и окончании обработки вершины выполняются дополнительные действия. Посещение вершины происходит при движении от корня к листьям, а окончание обработки вершины — на обратном пути. При посещении вершины она проталкивается во вспомогательный стек, а выталкивается при окончании обработки[1].

Индексы компонент связности всех вершин хранятся в векторе id, индексированном номерами вершин. Вектор low отслеживает вершину с наименьшим номером в прямом порядке обхода, достижимую из каждого узла через последовательность прямых связей, за которыми следует одна восходящая связь. Воспользовавшись поиском в глубину с тем, чтобы рассматривать вершины в обратном топологическом порядке, мы вычисляем для каждой вершины v максимальную точку, достижимую через обратную связь из предшественника (low[v]). Когда для вершины v выполняется pre[v]=low[v], мы выталкиваем ее из стека, а также все вершины выше ее и всем им присваиваем номер следующей компоненты[источник не указан 44 дня].

Время работы

Алгоритм имеет временну́ю сложность \mathrm{O}(|V|+|E|), где |V| — количество рёбер, а |E| — вершин графа[1].

Примечания

Ссылки

Литература

  • Tarjan R. E. Depth-first search and linear graph algorithms (англ.) // SIAM Journal on Computing. — 1972. — Т. 1. — № 2. — P. 146–160. — DOI:10.1137/0201010
  • Роберт Седжвик. Алгоритмы на графах = Graph algorithms. — 3-е изд. — Россия, Санкт-Петербург: «ДиаСофтЮП», 2002. — С. 496. — ISBN 5-93772-054-7
  • Джереми Сик, Лай-Кван Ли, Эндрю Ламсдэйн. C++ Boost Graph Library. — Питер, 2006. — С. 202-205. — 304 с. — ISBN 5-469-00352-3

Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Полезное


Смотреть что такое "Алгоритм Тарьяна" в других словарях:

  • Алгоритм проталкивания предпотока — решает задачу нахождения максимального потока в транспортной сети. Алгоритм не является частным случаем алгоритма Форда Фалкерсона. Реализованный без специальных усовершенствований, алгоритм выполняется за время . Некоторые усовершенствования ещё …   Википедия

  • Тарьян, Роберт — Необходимо проверить качество перевода и привести статью в соответствие со стилистическими правилами Википедии. Вы можете помочь улучшить эту статью, исправив …   Википедия

  • Роберт Тарьян — Роберт Андре Тарьян Дата рождения: 30 апреля 1948 Место рождения: Помона, Калифорния Научная сфера: Информатика Место работы: Princeton University Альма матер: Калтех, Стэнфорд Награды и премии Премия Тьюринга Робе …   Википедия

  • Наименьший общий предок — У этого термина существуют и другие значения, см. LCA (значения). Наименьший общий предок вершин u и v в корневом дереве T наиболее удалённая от корня дерева вершина, лежащая на обоих путях от u и v до корня, т.е. являющаяся предком обоих вершин …   Википедия

  • Список алгоритмов — Эта страница информационный список. Основная статья: Алгоритм Ниже приводится список алгоритмов, группированный по категориям. Более детальные сведения приводятся в списке структур данных и …   Википедия

  • Программируемые алгоритмы —       Служебный список статей, созданный для координации работ по развитию темы.   Данное предупреждение не устанавл …   Википедия

  • Задача о максимальном потоке — Максимальный поток в транспортной сети. Числа обозначают потоки и пропускные способности. В теории оптимизации и теории графов, задача о максимальном потоке заключается в нахождении такого потока по транспортной сети, что сум …   Википедия

  • Хопкрофт, Джон — Джон Эдвард Хопкрофт John Edward Hopcroft Дата рождения …   Википедия

  • Джон Хопкрофт — Джон Эдвард Хопкрофт John Edward Hopcroft Дата рождения: 7 октября 1939 (69 лет) Место рождения: Сиэтл Гражданство …   Википедия

  • Хопкрофт — Хопкрофт, Джон Джон Эдвард Хопкрофт John Edward Hopcroft Дата рождения: 7 октября 1939 …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»