Estoy buscando formas de mantener un árbol de expansión de un gráfico relativamente equilibrado, a medida que agrego nuevos nodos / bordes al gráfico.
Tengo un gráfico no dirigido que comienza como un solo nodo, la "raíz".
En cada paso, agrego al gráfico un nuevo nodo y un borde que lo conecta al gráfico, o simplemente un nuevo borde, que conecta dos nodos antiguos. A medida que crezco el gráfico, mantengo un árbol de expansión. La mayoría de las veces, esto significa que cuando agrego un nuevo nodo y borde, configuro el nuevo nodo para que sea el hijo del antiguo nodo al que se conecta.
No tengo control sobre el orden en que se agregan los nuevos nodos, por lo que el algoritmo de construcción de árboles anterior obviamente puede conducir a árboles de expansión desequilibrados.
¿Alguien sabe de la heurística en línea que mantendrá el árbol de expansión "relativamente equilibrado", al tiempo que minimiza la cantidad de trabajo realizado en la reorganización? Tengo control total sobre la estructura del árbol. Lo que no controlo es la conectividad gráfica, o el orden en que se agregan los nuevos nodos.
Tenga en cuenta que las respuestas estándar de Google a términos como "equilibrio", "expansión" y "árbol" parecen ser árboles binarios y árboles B, ninguno de los cuales se aplica. Mis nodos de gráfico pueden tener cualquier número de vecinos, por lo que los nodos de árbol pueden tener cualquier número de hijos, no 2 como árboles binarios. Los árboles B mantienen el equilibrio cambiando sus listas de adyacencia, y no puedo cambiar la conectividad del gráfico.