Voici une preuve qui suit de plus près l'ensemble de solutions MIT lié dans la question d'origine. Pour plus de clarté, j'utiliserai la même notation qu'ils utilisent afin que la comparaison puisse être faite plus facilement.
Supposons que nous ayons deux sommets et b tels que la distance entre a et b sur le chemin p ( a , b ) soit un diamètre, par exemple la distance d ( a , b ) est la distance maximale possible entre deux points quelconques de l'arbre. Supposons que nous ayons également un nœud s ≠ a , b (si s = a , alors il serait évident que le schéma fonctionne, puisque le premier BFS obtiendrait b , et le second reviendrait à a). Supposons également que nous ayons un nœudababp(a,b)d(a,b)s≠a,bs=ab tel que d ( s , u ) = max x d ( s , x ) .ud(s,u)=maxxd(s,x)
Lemme 0: et b sont des nœuds foliaires.ab
Preuve: S'ils n'étaient pas des nœuds foliaires, nous pourrions augmenter en étendant les extrémités aux nœuds foliaires, contredisant d ( a , b ) étant un diamètre.d(a,b)d(a,b)
max[d(s,a),d(s,b)]=d(s,u)
d(s,a)d(s,b) d( s , u )
Cas 1: chemin p ( a , b )ne contient pas de sommets. In this case, d(a,b) cannot be the diameter. To see why, let t be the unique vertex on p ( a,b) avec la plus petite distance à s. Ensuite, nous voyons qued(a,u)=d(a,t)+d(t,s)+d(s,u)>d(a,b)=d(a,t)+d(t,b), since d(s,u)>d(s,b)=d(s,t)+d(t,b)>d(t,b). Similarly, we would also have d(b,u)>d(a,b). This contradicts d(a,b) being a diameter.
Case 2: path p(a,b) contains vertex s. In this case, d(a,b) again cannot be the diameter, since for some vertex u such that d(s,u)=maxxd(s,x), both d(a,u) and d(b,u) would be greater than d(a,b).
Lemma 1 gives the reason why we start the second Breadth-First search at the last-discovered vertex u of the first BFS. If u is the unique vertex with the greatest possible distance from s, then by Lemma 1, it must be one of the endpoints of some path with a distance equal to the diameter, and hence a second BFS with u as the root unambiguously finds the diameter. On the other hand, if there is at least one other vertex v such that d(s,v)=d(s,u), then we know that the diameter is d(a,b)=2d(s,u), and it doesn't matter whether we start the second BFS at u or v.