Задать вопрос
@PavelG94

Как можно найти вершинное покрытие графа за линейное время, если граф является деревом?

Здравствуйте. Подскажите, кто в курсе, как решается обозначенная в заголовке задачка или по крайней мере с помощью каких стандартных методов можно её решить. Спасибо.
  • Вопрос задан
  • 1600 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Mrrl
@Mrrl
Заводчик кардиганов
Рекурсия.
Для каждого поддерева ищем два покрытия: P - минимальное покрытие вообще, и Q - минимальное покрытие, содержащее корень. Пусть T - наше дерево, X - его поддеревья, растущие из детей корня. Тогда
Q(T)=1+sum(P(X))
(корень включён, все рёбра, идущие к нему, учтены, в поддеревьях можно выбирать любые покрытия)
P(T)=min(Q(T),sum(Q(X)))
(либо корень не включён - и надо брать покрытия поддеревьев, содержащие корни, либо взять уже построенное покрытие Q).
Для листьев P=0, Q=1.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы