Ho un albero non diretto di cui voglio etichettare i vertici. I nodi foglia dovrebbero essere etichettati uno. Quindi, supponi che le foglie siano state rimosse. Nell'albero che rimane, le foglie dovrebbero essere etichettate due. Questo processo continua in modo ovvio fino a quando tutti i vertici hanno un'etichetta. Il motivo per cui lo faccio è che voglio archiviare i vertici in una coda e passarli attraverso "le foglie prima". C'è un modo semplice per fare questo tempo?
Posso risolvere il problema facendo un BFS ad ogni passo. Ma nel peggiore dei casi, ad ogni passo che passo attraverso ogni vertice, rimuovo esattamente due foglie e le accodano. Credo che ciò richieda un tempo quadratico.
Un'altra idea era quella di trovare prima tutte le foglie e quindi fare un BFS da ogni foglia. Questo non mi dà la soluzione desiderata. Ad esempio, considera una sorta di "grafico a corona" come nella figura seguente. Viene mostrata la soluzione desiderata, ma il lancio di un BFS da ogni foglia comporterebbe solo due etichette utilizzate.
Idealmente, l'algoritmo del tempo lineare sarebbe anche facile da spiegare e implementare.