Использование обхода в глубину для поиска мостов — различия между версиями
Grechko (обсуждение | вклад) (Новая страница: «== Постановка задачи == Дан неориентированный граф <tex> G </tex>. Найти все мосты в <tex> G </tex> за вр…») |
Grechko (обсуждение | вклад) |
||
Строка 8: | Строка 8: | ||
Пусть <tex> T </tex> - дерево обхода в глубину графа <tex> G</tex>. Ребро <tex> (u, v) </tex> является мостом тогда и только тогда, когда <tex> (u, v) \in T</tex> и из вершины <tex> v</tex> и любого ее потомка нет обратного ребра в вершину <tex> u</tex> или предка <tex> u </tex> | Пусть <tex> T </tex> - дерево обхода в глубину графа <tex> G</tex>. Ребро <tex> (u, v) </tex> является мостом тогда и только тогда, когда <tex> (u, v) \in T</tex> и из вершины <tex> v</tex> и любого ее потомка нет обратного ребра в вершину <tex> u</tex> или предка <tex> u </tex> | ||
|proof= | |proof= | ||
− | + | <tex> \Leftarrow</tex> | |
+ | Удалим <tex> (u, v)</tex> из <tex> G</tex> Докажем, что мы не сможем достичь ни одного из предков <tex> v </tex>. Пусть это не так, и <tex> w</tex> - предпоследняя вершина на пути от <tex> v</tex> до ее предка <tex>x </tex>. Очевидно, <tex> (w, x)</tex> не ребро дерева (в силу единственности пути в дереве). Если <tex> (w, x)</tex> - обратное ребро, то это противоречит условию теоремы, т.к. <tex> x</tex> - предок <tex> u</tex> | ||
}} | }} |
Версия 09:11, 8 декабря 2010
Постановка задачи
Дан неориентированный граф
. Найти все мосты в за времяАлгоритм
Теорема: |
Пусть - дерево обхода в глубину графа . Ребро является мостом тогда и только тогда, когда и из вершины и любого ее потомка нет обратного ребра в вершину или предка |
Доказательство: |
Удалим из Докажем, что мы не сможем достичь ни одного из предков . Пусть это не так, и - предпоследняя вершина на пути от до ее предка . Очевидно, не ребро дерева (в силу единственности пути в дереве). Если - обратное ребро, то это противоречит условию теоремы, т.к. - предок |