Aquí hay una prueba que sigue más de cerca el conjunto de soluciones MIT vinculado en la pregunta original. Para mayor claridad, usaré la misma notación que usan para que la comparación se pueda hacer más fácilmente.
Supongamos que tenemos dos vértices y modo que la distancia entre y en el camino es un diámetro, por ejemplo, la distancia es la distancia máxima posible entre dos puntos en el árbol. Supongamos que también tenemos un nodo (si , entonces sería obvio que el esquema funciona, ya que el primer BFS obtendría , y el segundo volvería a a). Supongamos también que tenemos un nodo tal que .ababp(a,b)d(a,b)s≠a,bs=abud(s,u)=maxxd(s,x)
Lema 0: Tanto como son nodos foliares.ab
Prueba: si no fueran nodos de hoja, podríamos aumentar extendiendo los puntos finales a los nodos de hoja, contradiciendo que es un diámetro.d(a,b)d(a,b)
Lema 1: .max[d(s,a),d(s,b)]=d(s,u)
Prueba: supongamos, en aras de la contradicción, que tanto como eran estrictamente menores que . Nos fijamos en dos casos:d(s,a)d(s,b)d(s,u)
Caso 1: camino que hace no contienen vértice . En este caso, no puede ser el diámetro. Para ver por qué, deje que sea el vértice único en con la menor distancia a . Luego, vemos que , ya que . Del mismo modo, también tendríamos . Esto contradice que es un diámetro.p(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)
Caso 2: la ruta contiene el vértice . En este caso, nuevamente no puede ser el diámetro, ya que para algunos vértices tal que , tanto como sería mayor que .p(a,b)sd(a,b) ud(s,u)=maxxd(s,x)d(a,u)d(b,u)d(a,b)
Lema 1 da la razón por la que empezamos el segundo primero en amplitud de búsqueda en la última descubierto vértice de los primeros BFS. Si es el vértice único con la mayor distancia posible desde , entonces según el Lema 1, debe ser uno de los puntos finales de algún camino con una distancia igual al diámetro y, por lo tanto, un segundo BFS con como la raíz encuentra inequívocamente diámetro. Por otro lado, si hay al menos otro vértice tal que , entonces sabemos que el diámetro es , y no importa si comenzamos el segundo BFS en o .u s u vuusuvd(s,v)=d(s,u)d(a,b)=2d(s,u)uv