Існує жадібний алгоритм пошуку мінімального вершинного покриву дерева, який використовує DFS обхід.
- Для кожного листя дерева виберіть його батьківський (тобто його батько знаходиться в мінімальній вершинній кришці).
- Для кожного внутрішнього вузла:
якщо якийсь із його дітей не вибрано, виберіть цей вузол.
Як я можу довести, що ця жадібна стратегія дає оптимальну відповідь? Що немає кришки вершин меншого розміру, ніж та, яку виробляє вищевказаний алгоритм?
Я не думаю, що логіка 2-го кроку є правильною. Якщо ви вважаєте, що вироджене дерево з 6 вузлами йде вниз по всьому праві (позначте їх 1-6 відповідно до їх глибини). Тоді перший крок вашого алгоритму вибере вузол 5. Другий крок, можливо, вибере перший вузол (корінь), а потім другий вузол (дочірнє) АБО третій вузол. Однак це неправильно, оскільки для правильного рішення потрібно вибрати лише вузол 2 та вузол 5.
—
miguel.martin
@ miguel.martin Якщо кришка вершини містить лише вершини, пронумеровані 2 та 5, край між вузлами 3 та 4 не буде закритий.
—
Laschet Jain