J'ai un arbre non orienté dont je veux étiqueter les sommets. Les nœuds foliaires doivent être étiquetés un. Supposez ensuite que les feuilles ont été retirées. Dans l'arbre qui reste, les feuilles doivent être étiquetées deux. Ce processus se poursuit de manière évidente jusqu'à ce que tous les sommets aient une étiquette. La raison pour laquelle je fais cela est que je veux stocker les sommets dans une file d'attente et les parcourir "laisse d'abord". Existe-t-il un moyen facile de faire ce temps ?
Je peux résoudre le problème en faisant un BFS à chaque étape. Mais dans le pire des cas, à chaque étape, je passe par chaque sommet, j'enlève exactement deux feuilles et je les mets en file d'attente. Je crois que cela prend du temps quadratique.
Une autre idée était de trouver d'abord toutes les feuilles, puis de faire un BFS à partir de chaque feuille. Cela ne me donne pas la solution souhaitée. Par exemple, considérez une sorte de "graphique de couronne" comme dans la figure ci-dessous. La solution souhaitée est indiquée, mais le lancement d'un BFS à partir de chaque feuille entraînerait l'utilisation de seulement deux étiquettes.
Idéalement, l'algorithme de temps linéaire serait également facile à expliquer et à mettre en œuvre.