Eu tenho uma floresta, ou seja, nós com bordas direcionadas e sem ciclos (direcionados ou não direcionados). Eu defino a altura de um vértice como 0 se não tiver arestas recebidas ou o número máximo de arestas a serem movidas em ré para alcançar um vértice de altura 0.
Eu também sei que o grau médio de um nó é uma pequena constante, digamos 2 ou mais. Para encontrar a altura de todos os vértices, posso pensar em dois algoritmos:
Algoritmo de Caminhada
- Percorra e marque para vértices sem arestas de entrada.
- Para cada vértice com , siga as arestas de saída, atualizando a altura de cada vértice encontrado, se a altura anterior for menor.
Algoritmo de Fronteira
- Percorra e marque para vértices sem arestas de entrada e marque-os como a fronteira.
- Para cada vértice de fronteira, veja se o pai tem filhos na fronteira ou abaixo dela. Se houver, marque o pai como tendo mais a maior altura entre seus filhos. Marque os pais como estando na fronteira.
- Repita 2 até que não haja nada além da fronteira.
Minhas perguntas:
- Existe um nome para esse problema e uma solução mais rápida conhecida?
- Eu costumo pensar em simplesmente sair de todas as vértices é a solução mais rápida. Estou certo?