Как оптимально обойти все вершины графа? Нужно обойти все вершины неориентированного связного графа, точечно перемещаясь по ребрам. Граф - произвольный (не Эйлеров и не Гамильтонов, кроме связности ничего не дано). Переход по ребру - один шаг. Как сделать это за минимальное число шагов? Возвращаться в исходную вершину, как в задаче с коммивояжером не обязательно главное посетить каждую вершину хотя бы раз.
Для обхода всех вершин графа за минимальное число шагов можно использовать алгоритм обхода в глубину (Depth-First Search, DFS).
Шаги алгоритма:
Выбрать произвольную вершину и начать исследование с неё.Переходить в любую смежную вершину, которую ещё не посещали.Если из текущей вершины больше нет непосещенных смежных вершин, вернуться на одну вершину назад и продолжить обход оттуда.Повторять шаги 2-3, пока не посетим все вершины графа.
Алгоритм обхода в глубину гарантирует посещение всех вершин графа за минимальное число шагов, так как он идет "вглубь" графа, и не допускает повторного посещения вершин.
Для обхода всех вершин графа за минимальное число шагов можно использовать алгоритм обхода в глубину (Depth-First Search, DFS).
Шаги алгоритма:
Выбрать произвольную вершину и начать исследование с неё.Переходить в любую смежную вершину, которую ещё не посещали.Если из текущей вершины больше нет непосещенных смежных вершин, вернуться на одну вершину назад и продолжить обход оттуда.Повторять шаги 2-3, пока не посетим все вершины графа.Алгоритм обхода в глубину гарантирует посещение всех вершин графа за минимальное число шагов, так как он идет "вглубь" графа, и не допускает повторного посещения вершин.