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

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

Алгоритм Тар'яна — алгоритм пошуку компонент сильної зв'язності (КСЦ) в орієнтованому графі, який працює за лінійний час. Алгоритм був розроблений Робертом Тар'яном у 1972 році.

Принцип роботи

Алгоритм Тар'яна використовує глибинний пошук (DFS) для обходу графа і виявлення КСЦ. Він працює за таким принципом:

  1. Присвоєння унікального номера кожній вершині графа.
  2. Присвоєння додаткового номера "низ" кожній вершині, що відповідає найнижчому номеру вершини, досяжної з неї через грані графа.
  3. Пошук вершин, у яких номери "низ" і номера вершин збігаються. Вершини в таких компонентах і є компонентами сильної зв'язності.

Алгоритм Тар'яна покроково

  1. Ініціалізація: Присвоїти кожній вершині графа унікальний номер і номер "низ" -1.
  2. DFS: Виконати глибинний пошук графа, використовуючи стек вершин. Коли вершину вибирають, присвоювати їй номер і номер "низ".
  3. Оновлення номерів "низ": Перебираючи вершини в зворотному порядку їх обходу, для кожної вершини оновлювати номер "низ", щоб він був найменшим із номерів "низ" усіх сусідніх вершин.
  4. Пошук КСЦ: Перебираючи вершини в порядку їх унікальних номерів, визначати вершини, у яких номери "низ" і унікальні номери збігаються. Ці вершини належать до КСЦ.

Складність алгоритму

  • Часова складність: Лінійна, O(V + E), де V — кількість вершин, а E — кількість ребер у графі.
  • Просторова складність: O(V), оскільки алгоритм використовує стек для зберігання вершин під час DFS.

Застосування

Алгоритм Тар'яна використовується в різних задачах на графах, зокрема:

  • Виявлення циклів у графі
  • Транзитивне замикання графа
  • Обчислення найдовшого циклу в графі

Алгоритм Тар'яна — ефективний і широко використовуваний лінійний алгоритм для пошуку компонент сильної зв'язності в орієнтованому графі. Він простий в реалізації і має різноманітні застосування в задачах на графах.

Часті питання, що задаються

  1. Чи може алгоритм Тар'яна знаходити цикли в графі?
  2. Як оновити номер "низ" для вершин у графі?
  3. У чому перевага алгоритму Тар'яна порівняно з іншими алгоритмами KSC?
  4. Які застосування алгоритму Тар'яна, крім виявлення КСЦ?
  5. Яка складна тимчасова складність алгоритму Тар'яна?
Сподобалась стаття? Подякуйте на банку https://send.monobank.ua/jar/3b9d6hg6bd

▶️▶️▶️  Атканчай

Залишити коментар

Опубліковано на 13 05 2024. Поданий під Вікі. Ви можете слідкувати за будь-якими відповідями через RSS 2.0. Ви можете подивитись до кінця і залишити відповідь.

ХОЧЕТЕ СТАТИ АВТОРОМ?

Запропонуйте свої послуги за цим посиланням.
Контакти :: Редакція
Використання будь-яких матеріалів, розміщених на сайті, дозволяється за умови посилання на Reporter.zp.ua.
Редакція не несе відповідальності за матеріали, розміщені користувачами та які помічені "реклама".
Сантехнік Умань