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