Задача из книги «Алгоритмы» Вазирани
. Входными данными для этой задачи является дерево T с целыми весами на краях. Вес может быть отрицательным, ноль или положительный. Приведите алгоритм с линейным временем, чтобы найти кратчайший простой путь в T. Длина path - это сумма весов ребер в пути. Путь является простым, если ни одна вершина не повторяется. Запись что конечные точки пути не ограничены.
ПОДСКАЗКА: Это очень похоже на проблему поиска наибольшего независимого множества в дереве.
Как я могу решить эту проблему за линейное время?
Вот мой алгоритм, но мне интересно, линейное ли это время, поскольку оно ничем не отличается от сначала в глубину:
- Дерево обхода (сначала в глубину)
- Сохранять индексы (узлы)
- добавлять значения
- делать (1) до конца дерева
- сравните сумму и выведите путь и сумму
эта задача аналогична этой теме , но нет определенного ответа.