Задать вопрос
risentveber
@risentveber
fullstack web developer

Как оптимально обойти все вершины графа?

Нужно обойти все вершины неориентированного связного графа, точечно перемещаясь по ребрам. Граф - произвольный (не Эйлеров и не Гамильтонов, кроме связности ничего не дано). Переход по ребру - один шаг. Как сделать это за минимальное число шагов? Возвращаться в исходную вершину, как в задаче с коммивояжером не обязательно главное посетить каждую вершину хотя бы раз.
  • Вопрос задан
  • 3797 просмотров
Подписаться 3 Оценить Комментировать
Ответ пользователя tomatho К ответам на вопрос (3)
@tomatho
Для количества вершин порядка 15: (больше 15 вершин будет работать уже сравнимо дольше)
  1. Запускаем флойда чтобы получить матрицу 15х15 путей как из одной вершины быстрее всего попасть в другую. Либо 15 обходов в глубину (та же скорость, тот же эффект).
  2. Перебираем все перестановки чисел от 1 до 15, которых как известно 15! = 1307674368000.
  3. С помощью матрицы полученной на первом шаге, считаем общее количество шагов,
    которые получились бы если бы мы проследовали по вершинам в порядке перестановки.
Ответ написан
Комментировать