Es gibt einen gierigen Algorithmus zum Ermitteln der minimalen Scheitelpunktabdeckung eines Baums, der DFS-Traversal verwendet.
- Wählen Sie für jedes Blatt des Baums das übergeordnete Element aus (dh das übergeordnete Element befindet sich in der minimalen Scheitelpunktabdeckung).
- Für jeden internen Knoten:
Wenn einer seiner untergeordneten Knoten nicht ausgewählt ist, wählen Sie diesen Knoten aus.
Wie beweise ich, dass diese gierige Strategie eine optimale Antwort gibt? Dass es keine Scheitelpunktabdeckung gibt, die kleiner ist als die, die der obige Algorithmus erzeugt?
algorithms
trees
greedy-algorithms
e_noether
quelle
quelle
Antworten:
Wir beobachten zunächst Folgendes: Es gibt eine optimale Abdeckung , und in C befindet sich kein Blatt . Dies ist der Fall, da Sie in jeder optimalen Abdeckung X alle Blätter in X durch ihre Eltern ersetzen können und eine Scheitelabdeckung erhalten, die nicht größer als X ist .C C X X X
quelle
quelle