Ich suche nach Möglichkeiten, um einen relativ ausgeglichenen Spanning Tree eines Diagramms beizubehalten, indem ich dem Diagramm neue Knoten / Kanten hinzufüge.
Ich habe einen ungerichteten Graphen, der als einzelner Knoten, der "Wurzel", beginnt.
Bei jedem Schritt füge ich dem Diagramm entweder einen neuen Knoten und eine Kante hinzu, die es mit dem Diagramm verbindet, oder nur eine neue Kante, die zwei alte Knoten verbindet. Während ich den Graphen vergrößere, pflege ich einen übergreifenden Baum. In den meisten Fällen bedeutet dies, dass beim Hinzufügen eines neuen Knotens und einer neuen Kante der neue Knoten als untergeordneter Knoten des alten Knotens festgelegt wird, mit dem die Verbindung hergestellt wird.
Ich habe keine Kontrolle über die Reihenfolge, in der die neuen Knoten hinzugefügt werden, so dass der obige Baumbildungsalgorithmus offensichtlich zu unausgeglichenen Spannbäumen führen kann.
Kennt jemand Online-Heuristiken, die den Spanning Tree "relativ ausgeglichen" halten und gleichzeitig den Arbeitsaufwand für das Re-Treeing minimieren? Ich habe die volle Kontrolle über die Baumstruktur. Was ich nicht kontrolliere, ist die Graph-Konnektivität oder die Reihenfolge, in der neue Knoten hinzugefügt werden.
Beachten Sie, dass die Standardantworten von Google auf Begriffe wie "Ausgeglichen", "Überspannen" und "Baum" anscheinend binäre Bäume und B-Bäume sind, von denen keiner zutrifft. Meine Diagrammknoten können eine beliebige Anzahl von Nachbarn haben, sodass die Baumknoten eine beliebige Anzahl von untergeordneten Knoten haben können, nicht zwei wie binäre Bäume. B-Bäume halten das Gleichgewicht, indem sie ihre Adjazenzlisten ändern, und ich kann die Konnektivität des Graphen nicht ändern.