Я запутываюсь, читая онлайн-сообщения. Я знаю, что обход BFS на невзвешенном ориентированном графе даст минимальное остовное дерево и кратчайший путь. Может ли обход DFS на невзвешенном ориентированном графе сделать то же самое?

0
thiri 9 Окт 2020 в 14:41

1 ответ

Лучший ответ

Да , оба варианта в ширину и в глубину дают остовные деревья. Нет смысла обсуждать « минимальное остовное дерево» для невзвешенного графа, потому что все остовные деревья на данном графе с n вершинами имеют одинаковое количество вершин (n) и одинаковое количество ребер (n-1).

Нет , функция «Сначала в глубину» не гарантирует кратчайшего пути. Для этого вам действительно нужен Breadth-First. Рассмотрим циклический граф:

a - h - g - f
|           |
b - c - d - e

Начиная с вершины a, есть два возможных результата поиска в глубину: a-> b-> c-> d-> e-> f-> g-> h и a-> h-> g-> f -> е-> г-> с-> б. Первый возвращает очень длинный путь от a до h, а второй возвращает очень длинный путь от a до b.

Обратите внимание, что в этом примере график неориентированный. Но неориентированные графы - это частный случай ориентированных графов; вы можете заменить каждое неориентированное ребро двумя направленными ребрами в противоположных направлениях.

2
Stef 9 Окт 2020 в 11:57