Использование обхода в глубину для поиска мостов — различия между версиями
Grechko (обсуждение | вклад) |
Grechko (обсуждение | вклад) |
||
Строка 28: | Строка 28: | ||
<tex>ret(u)</tex>, <tex>(v, u)</tex> - ребро дерева | <tex>ret(u)</tex>, <tex>(v, u)</tex> - ребро дерева | ||
|proof = | |proof = | ||
− | 1)<tex>enter(v) </tex> <br> <br> | + | 1)<tex>enter(v) </tex> <br> <br>: |
По определению функции <tex>ret</tex> <br> | По определению функции <tex>ret</tex> <br> | ||
− | 2)<tex>enter(p)</tex>, <tex>(v, p)</tex> - обратное ребро <br> | + | 2)<tex>enter(p)</tex>, <tex>(v, p)</tex> - обратное ребро <br>: |
<tex>p</tex> достижима из <tex>v</tex> по одному обратному ребру, значит величина <tex>ret(v)</tex> не больше <tex>enter(p)</tex> <br> | <tex>p</tex> достижима из <tex>v</tex> по одному обратному ребру, значит величина <tex>ret(v)</tex> не больше <tex>enter(p)</tex> <br> | ||
− | 3)<tex>ret(u)</tex>, <tex>u</tex> - потомок <tex>v</tex> <br> | + | 3)<tex>ret(u)</tex>, <tex>u</tex> - потомок <tex>v</tex> <br>: |
Так как вершина <tex>u</tex> - потомок <tex>v</tex>, то обратное ребро из ее поддерева является обратным ребром из поддерева <tex>v</tex> <br> | Так как вершина <tex>u</tex> - потомок <tex>v</tex>, то обратное ребро из ее поддерева является обратным ребром из поддерева <tex>v</tex> <br> | ||
}} | }} |
Версия 10:15, 8 декабря 2010
Постановка задачи
Дан неориентированный граф
. Найти все мосты в за времяАлгоритм
Теорема: |
Пусть - дерево обхода в глубину графа . Ребро является мостом тогда и только тогда, когда и из вершины и любого ее потомка нет обратного ребра в вершину или предка |
Доказательство: |
|
Функция
Определим функцию
, где - потомок
, где - обратное ребро, а - потомок (в нестрогом смысле)
Так как на пути от вершины к корню дерева величины убывают, то возвращает величину для ближайшей к корню вершины, достижимой из или ее потомка, возможно используя одно обратное ребро.
Лемма: |
|
Доказательство: |
1) |