Estou procurando maneiras de manter uma árvore de abrangência relativamente equilibrada de um gráfico, à medida que adiciono novos nós / arestas ao gráfico.
Eu tenho um gráfico não direcionado que começa como um único nó, a "raiz".
Em cada etapa, adiciono ao gráfico um novo nó e uma aresta conectando-o ao gráfico ou apenas uma nova aresta conectando dois nós antigos. À medida que cresço no gráfico, mantenho uma árvore de abrangência. Na maioria das vezes, isso significa que, quando adiciono um novo nó e uma borda, defino o novo nó como filho do nó antigo ao qual ele se conecta.
Como não tenho controle sobre a ordem em que os novos nós são adicionados, o algoritmo de construção de árvore acima pode obviamente levar a árvores de extensão desequilibradas.
Alguém conhece heurísticas online que manterão a árvore de abrangência "relativamente equilibrada", enquanto minimizam a quantidade de trabalho realizado na re-arborização? Eu tenho controle total sobre a estrutura da árvore. O que não controlo é a conectividade gráfica ou a ordem em que novos nós são adicionados.
Observe que as respostas padrão do Google a termos como "equilibrado", "extensão" e "árvore" parecem ser árvores binárias e árvores B, e nenhuma delas se aplica. Os nós do meu gráfico podem ter qualquer número de vizinhos; portanto, os nós da árvore podem ter qualquer número de filhos, e não 2 como árvores binárias. As árvores B mantêm o equilíbrio alterando suas listas de adjacências e não consigo alterar a conectividade do gráfico.