Ho una foresta, cioè nodi con bordi diretti e nessun ciclo (diretto o non diretto). Definisco l'altezza di un vertice come 0 se non ha spigoli in arrivo o il numero massimo di spigoli da attraversare all'indietro per raggiungere un vertice di altezza 0.
So anche che il grado medio di un nodo è una piccola costante, diciamo 2 o giù di lì. Per trovare l'altezza di tutti i vertici, posso pensare a due algoritmi:
Algoritmo ambulante
- Passare attraverso e contrassegnare per i vertici senza bordi in entrata.
- Per ogni vertice con , seguire i bordi in uscita, aggiornando l'altezza di ciascun vertice rilevato se la sua altezza precedente è inferiore.
Algoritmo di frontiera
- Passare attraverso e contrassegnare per i vertici senza bordi in arrivo e contrassegnarli come frontiera.
- Per ogni vertice di frontiera, vedi se il suo genitore ha figli alla frontiera o al di sotto di essa, in tal caso, segna il genitore come con l'altezza maggiore tra i suoi figli. Segna il genitore come al confine.
- Ripeti 2 fino a quando non c'è nulla oltre la frontiera.
Le mie domande:
- Esiste un nome per questo problema e una soluzione ben nota e veloce?
- Tendo a pensare semplicemente salendo da tutto il i vertici è la soluzione più veloce. Ho ragione?