322
правки
Изменения
Нет описания правки
Не существует такого момента выполнения [[Обход в глубину, цвета вершин|поиска в глубину]], в который бы существовало ребро из черной вершины в белую.
|proof =
Пусть в процессе выполнения процедуры <tex>dfs</tex> нашлось ребро из черной вершины <tex>v</tex> в белую вершину <tex>u</tex>. Рассмотрим момент времени, когда мы запустили <tex>dfs(v)</tex>. В этот момент вершина <tex>v</tex> была перекрашена из белого в серый, а вершина <tex>u</tex> - была белая. Далее в ходе выполнения алгоритма будет запущен <tex>dfs(u)</tex>, поскольку обход в глубину обязан посетить все белые вершины, в которые есть ребро из <tex>v</tex>. По алгоритму вершина <tex>v</tex> будет покрашена в черный цвет тогда, когда завершится обход всех вершин, достижимых из нее по одному ребру, кроме тех, что были рассмотрены раньше нее. Таких Таким образом, вершина <tex>v</tex> может стать черной только тогда, когда <tex>dfs</tex> выйдет из вершины <tex>u</tex>, и она будет покрашена в черный цвет. Получаем противоречие.
}}
<br>
{{Лемма
|statement =
|proof =
}}
{{Утверждение
|statement=
Если вершина стала черной ко второму моменту времени, то она была достижима по белому пути в первый момент времени.
|proof =
Рассмотрим момент, когда вершина <tex>v</tex> стала черной: в этот момент существует cерый путь из <tex>u</tex> в <tex>v</tex>, а это значит, что в первый момент времени сущестовал белый путь из <tex>u</tex> в <tex>v</tex>, что и требовалось доказать.
}}
Отсюда следует, что если вершина была перекрашена из белой в черную, то она была достижима по белому пути, и что если вершина как была, так и осталась белой, она не была достижима по белому пути, что и требовалось доказать.
}}
[[Категория: Алгоритмы и структуры данных]]
[[Категория: Обход в глубину]]