Шарніром (англ. articulation point) в теорії графів називається вершина графу, при видаленні якої кількість компонент зв'язності графу зростає.
Визначення
Вершина графу називається шарніром, якщо (граф, що містить якесь підмножина вершин даного графу) , отриманий з графу видаленням вершини і всіх інцидентних їй ребер, складається з більшої кількості компонент зв'язності, ніж вихідний граф .
Ребровим аналогом шарніра є міст. Мостом називається таке ребро графу, в результаті видалення якого кількість компонент зв'язності в графі зростає.
Алгоритм пошуку шарнірів
Ефективне вирішення завдання пошуку всіх шарнірів графу засноване на алгоритмі пошуку у глибину.
Нехай задано граф . Через позначимо множину всіх вершин графу, суміжних з . Припустимо, що ми переглянули граф в глибину, почавши з деякою довільній вершини. Занумеруємо всі вершини графу в тому порядку, в якому ми в них увійшли, і кожній вершині підпорядкуємо відповідний номер . Якщо в вершину ми вперше потрапили з вершини , то вершину будемо називати нащадком , а — предком . Безліч всіх нащадків вершини позначимо через . Через позначимо мінімальний номер серед всіх вершин, суміжних з і з тими вершинами, в які ми прийшли по шляху, що проходить через .
Зрозуміло, що величину можна обчислити рекурсивно, безпосередньо в процесі обходу в глибину: якщо зараз розглядається вершина , і з неї не можна перейти в ще не відвіданих вершину (тобто потрібно повернутися до предку , або припинити обхід, якщо — стартова вершина), то для всіх її нащадків вже пораховано, а значить, і для неї можна можна провести відповідні обчислення за формулою
Знаючи величину для всіх вершин графу, можна визначити всі його шарніри згідно з такими правилами:
- Стартова вершина (тобто та, з якою ми почали обхід) є шарніром тоді і тільки тоді, коли у неї більше одного нащадка.
- Вершина , відмінна від стартової, є шарніром тоді і тільки тоді, коли у неї є нащадок u такий, що .
Як приклад розглянемо застосування описаного алгоритму до графу, зображеному на малюнку справа. Числа, якими позначені вершини, відповідають одному з можливих варіантів обходу в глибину. При такому порядку у кожної з вершин рівно один нащадок, за винятком вершини 6, у якій нащадків немає. Стартова вершина 1 має єдиного нащадка, отже, шарніром вона не є. Для інших вершин обчислимо значення, що цікавить нас функції:
- .
У вершини 2 є нащадок 3, а у 5 нащадок 6 — в обох випадках виконано шукане співвідношення . Отже, 2 і 5 є шарнірами. Інших шарнірів в цьому графі немає.
Псевдокод
GetArticulationPoints(i, d) visited[i] = true depth[i] = d low[i] = d childCount = 0 isArticulation = false for each ni in adj[i] if not visited[ni] parent[ni] = i GetArticulationPoints(ni, d + 1) childCount = childCount + 1 if low[ni] >= depth[i] isArticulation = true low[i] = Min(low[i], low[ni]) else if ni <> parent[i] low[i] = Min(low[i], depth[ni]) if (parent[i] <> null and isArticulation) or (parent[i] == null and childCount > 1) Output i as articulation point
Див. також
Посилання
- Код на С++, Python та Java для пошуку шарнірів [ 20 листопада 2016 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Sharnirom angl articulation point v teoriyi grafiv nazivayetsya vershina grafu pri vidalenni yakoyi kilkist komponent zv yaznosti grafu zrostaye Priklad grafu z poznachenimi blokami Kozhen kolir vidpovidaye bloku Riznokolorovi vershini ce sharniri otzhe voni nalezhat kilkom blokam Viznachennya Vershina v displaystyle v grafu G displaystyle G nazivayetsya sharnirom yaksho graf sho mistit yakes pidmnozhina vershin danogo grafu G 1 displaystyle G 1 otrimanij z grafu G displaystyle G vidalennyam vershini v displaystyle v i vsih incidentnih yij reber skladayetsya z bilshoyi kilkosti komponent zv yaznosti nizh vihidnij graf G displaystyle G Graf sho mistit dva sharnira vershini 2 i 5 i tri bloki 12 2345 56 Rebrovim analogom sharnira ye mist Mostom nazivayetsya take rebro grafu v rezultati vidalennya yakogo kilkist komponent zv yaznosti v grafi zrostaye Algoritm poshuku sharnirivEfektivne virishennya zavdannya poshuku vsih sharniriv grafu zasnovane na algoritmi poshuku u glibinu Nehaj zadano graf G displaystyle G Cherez A d j v displaystyle Adj v poznachimo mnozhinu vsih vershin grafu sumizhnih z v displaystyle v Pripustimo sho mi pereglyanuli graf v glibinu pochavshi z deyakoyu dovilnij vershini Zanumeruyemo vsi vershini grafu v tomu poryadku v yakomu mi v nih uvijshli i kozhnij vershini v displaystyle v pidporyadkuyemo vidpovidnij nomer n v displaystyle n v Yaksho v vershinu u displaystyle u mi vpershe potrapili z vershini v displaystyle v to vershinu u displaystyle u budemo nazivati nashadkom v displaystyle v a v displaystyle v predkom u displaystyle u Bezlich vsih nashadkiv vershini v displaystyle v poznachimo cherez C h v displaystyle Ch v Cherez L o w v displaystyle Low v poznachimo minimalnij nomer sered vsih vershin sumizhnih z v displaystyle v i z timi vershinami v yaki mi prijshli po shlyahu sho prohodit cherez v displaystyle v Zrozumilo sho velichinu L o w v displaystyle Low v mozhna obchisliti rekursivno bezposeredno v procesi obhodu v glibinu yaksho zaraz rozglyadayetsya vershina v displaystyle v i z neyi ne mozhna perejti v she ne vidvidanih vershinu tobto potribno povernutisya do predku v displaystyle v abo pripiniti obhid yaksho v displaystyle v startova vershina to dlya vsih yiyi nashadkiv L o w displaystyle Low vzhe porahovano a znachit i dlya neyi mozhna mozhna provesti vidpovidni obchislennya za formuloyu L o w v min min x C h v L o w x min y A d j v C h v n y displaystyle Low v min left min x in Ch v Low x min y in Adj v Ch v n y right Znayuchi velichinu L o w v displaystyle Low v dlya vsih vershin grafu mozhna viznachiti vsi jogo sharniri zgidno z takimi pravilami Startova vershina tobto ta z yakoyu mi pochali obhid ye sharnirom todi i tilki todi koli u neyi bilshe odnogo nashadka Vershina v displaystyle v vidminna vid startovoyi ye sharnirom todi i tilki todi koli u neyi ye nashadok u takij sho L o w u n v displaystyle Low u n v Yak priklad rozglyanemo zastosuvannya opisanogo algoritmu do grafu zobrazhenomu na malyunku sprava Chisla yakimi poznacheni vershini vidpovidayut odnomu z mozhlivih variantiv obhodu v glibinu Pri takomu poryadku u kozhnoyi z vershin rivno odin nashadok za vinyatkom vershini 6 u yakij nashadkiv nemaye Startova vershina 1 maye yedinogo nashadka otzhe sharnirom vona ne ye Dlya inshih vershin obchislimo znachennya sho cikavit nas funkciyi L o w 6 5 L o w 5 2 L o w 4 2 L o w 3 2 L o w 2 1 displaystyle Low 6 5 Low 5 2 Low 4 2 Low 3 2 Low 2 1 U vershini 2 ye nashadok 3 a u 5 nashadok 6 v oboh vipadkah vikonano shukane spivvidnoshennya L o w u n v displaystyle Low u n v Otzhe 2 i 5 ye sharnirami Inshih sharniriv v comu grafi nemaye Psevdokod GetArticulationPoints i d visited i true depth i d low i d childCount 0 isArticulation false for each ni in adj i if not visited ni parent ni i GetArticulationPoints ni d 1 childCount childCount 1 if low ni gt depth i isArticulation true low i Min low i low ni else if ni lt gt parent i low i Min low i depth ni if parent i lt gt null and isArticulation or parent i null and childCount gt 1 Output i as articulation pointDiv takozhMist teoriya grafiv PosilannyaKod na S Python ta Java dlya poshuku sharniriv 20 listopada 2016 u Wayback Machine