Использование обхода в глубину для поиска мостов — различия между версиями
Grechko (обсуждение | вклад) |
Grechko (обсуждение | вклад) |
||
| Строка 14: | Строка 14: | ||
Пусть существует удовлетворяющее условию обратное ребро <tex>(x, w)</tex>. Тогда <tex>(u, v)</tex> лежит на цикле <tex>x \rightsquigarrow v \rightarrow u \rightsquigarrow w \rightarrow x</tex> и не может быть мостом. | Пусть существует удовлетворяющее условию обратное ребро <tex>(x, w)</tex>. Тогда <tex>(u, v)</tex> лежит на цикле <tex>x \rightsquigarrow v \rightarrow u \rightsquigarrow w \rightarrow x</tex> и не может быть мостом. | ||
}} | }} | ||
| − | Определим функцию <tex>ret(v)</tex>, где <tex>v in | + | Определим функцию <tex>ret(v)</tex>, где <tex>v \in V</tex>, как минимум из следущих величин <br> |
<tex>enter(v)</tex> <br> | <tex>enter(v)</tex> <br> | ||
| − | <tex>enter(x)</tex>, где <tex>x</tex> - потомок <tex>v</tex> | + | <tex>enter(x)</tex>, где <tex>x</tex> - потомок <tex>v</tex> <br> |
<tex>enter(x)</tex>, где <tex>(w, x)</tex> - обратное ребро, а <tex>w</tex> - потомок <tex>v</tex> (в нестрогом смысле) | <tex>enter(x)</tex>, где <tex>(w, x)</tex> - обратное ребро, а <tex>w</tex> - потомок <tex>v</tex> (в нестрогом смысле) | ||
| + | Так как на пути от вершины к корню дерева величины <tex>enter(x)</tex> убывают, то <tex>ret(v)</tex> возвращает величину<tex>enter(u)</tex> для ближайшей к корню вершины, достижимо из <tex>v</tex> или ее потомка, возмонжно используя одно обратное ребро. | ||
Версия 09:53, 8 декабря 2010
Постановка задачи
Дан неориентированный граф . Найти все мосты в за время
Алгоритм
| Теорема: |
Пусть - дерево обхода в глубину графа . Ребро является мостом тогда и только тогда, когда и из вершины и любого ее потомка нет обратного ребра в вершину или предка |
| Доказательство: |
|
|
Определим функцию , где , как минимум из следущих величин
, где - потомок
, где - обратное ребро, а - потомок (в нестрогом смысле)
Так как на пути от вершины к корню дерева величины убывают, то возвращает величину для ближайшей к корню вершины, достижимо из или ее потомка, возмонжно используя одно обратное ребро.