Hier ist ein Beweis, der dem in der ursprünglichen Frage verknüpften MIT-Lösungssatz genauer folgt. Der Klarheit halber werde ich die gleiche Notation verwenden, die sie verwenden, damit der Vergleich einfacher durchgeführt werden kann.
Angenommen, wir haben zwei Eckpunkte und so dass der Abstand zwischen und auf dem Pfad ein Durchmesser ist, z. B. ist der Abstand maximal mögliche Abstand zwischen zwei beliebigen Punkten im Baum. Angenommen, wir haben auch einen Knoten (wenn , dann wäre es offensichtlich, dass das Schema funktioniert, da das erste BFS würde und das zweite zu a zurückkehren würde). Nehmen wir an , dass wir einen Knoten haben derart , dass .b a b pababp(a,b)d(a,b)s≠a,bs=abud(s,u)=maxxd(s,x)
Lemma 0: Sowohl als auch sind Blattknoten.ab
Beweis: Wenn sie keine Blattknoten wären, könnten wir vergrößern indem wir die Endpunkte auf Blattknoten erweitern, was im Gegensatz dazu steht, dass ein Durchmesser ist.d(a,b)d(a,b)
Lemma 1: .max[d(s,a),d(s,b)]=d(s,u)
Beweis: Nehmen wir zum Zwecke des Widerspruchs an, dass sowohl als auch streng kleiner als . Wir betrachten zwei Fälle:d(s,a)d(s,b)d(s,u)
Fall 1: Pfad enthält keinen Scheitelpunkt . In diesem Fall kann nicht der Durchmesser sein. Um zu sehen, warum, sei der eindeutige Eckpunkt auf mit dem kleinsten Abstand zu . Dann sehen wir, dass , da . In ähnlicher Weise hätten wir auch . Dies widerspricht, dass ein Durchmesser ist.s d ( a , b ) , t p ) + d ( t , b ) , d ( s , u ) > d ( s , bp(a,b)sd(a,b)tp(a,b)sd(a,u)=d(a,t)+d(t,s)+d(s,u)>d(a,b)=d(a,t)+d(t,b)d(s,u)>d(s,b)=d(s,t)+d(t,b)>d(t,b)d(b,u)>d(a,b)d(a,b)
Fall 2: Pfad enthält Vertex . In diesem Fall kann wieder nicht der Durchmesser sein, da für einen Scheitelpunkt so dass , sowohl als auch wäre größer als .s d ( a , b )p(a,b)sd(a,b) ud(s,u)=maxxd(s,x)d(a,u)d(b,u)d(a,b)
Lemma 1 gibt den Grund an, warum wir die zweite Breitensuche am zuletzt entdeckten Scheitelpunkt des ersten BFS starten . Wenn der eindeutige Scheitelpunkt mit der größtmöglichen Entfernung von , muss es nach Lemma 1 einer der Endpunkte eines Pfades mit einer Entfernung sein, die dem Durchmesser entspricht, und daher findet ein zweites BFS mit als Wurzel das Durchmesser. Wenn es andererseits mindestens einen anderen Eckpunkt so dass , dann wissen wir, dass der Durchmesser , und es ist egal, ob wir das zweite BFS bei oder starten .u s u v d ( s , v ) = d ( s , u ) d ( a , b ) = 2 d ( s , u ) u vuusuvd(s,v)=d(s,u)d(a,b)=2d(s,u)uv