Đây là một bằng chứng theo sau bộ giải pháp MIT được liên kết chặt chẽ hơn trong câu hỏi ban đầu. Để rõ ràng, tôi sẽ sử dụng cùng một ký hiệu mà họ sử dụng để việc so sánh có thể được thực hiện dễ dàng hơn.
Giả sử chúng ta có hai đỉnh và b sao cho khoảng cách giữa a và b trên đường dẫn p ( a , b ) là một đường kính, ví dụ khoảng cách d ( a , b ) là khoảng cách tối đa có thể giữa hai điểm bất kỳ trong cây. Giả sử chúng ta cũng có một nút s ≠ a , b (nếu s = a , thì rõ ràng là lược đồ hoạt động, vì BFS đầu tiên sẽ nhận b và thứ hai sẽ trở về a). Giả sử chúng ta cũng có một nútababp(a,b)d(a,b)s≠a,bs=ab sao cho d ( s , u ) = max x d ( s , x ) .ud(s,u)=maxxd(s,x)
Bổ đề 0: Cả và b đều là các nút lá.ab
Bằng chứng: Nếu chúng không phải là các nút lá, chúng ta có thể tăng bằng cách mở rộng các điểm cuối thành các nút lá, mâu thuẫn với d ( a , b ) là đường kính.d(a,b)d(a,b)
Bổ đề 1: .max[d(s,a),d(s,b)]=d(s,u)
Chứng minh: Giả sử vì mâu thuẫn rằng cả và d ( s , b ) đều nghiêm ngặt ít hơn d ( s , u ) . Chúng tôi xem xét hai trường hợp:d(s,a)d(s,b)d(s,u)
Trường hợp 1: đường dẫn không không chứa đỉnh s . Trong trường hợp này, d ( a , b ) không thể là đường kính. Để xem tại sao, hãy để t là đỉnh duy nhất trên p ( a , b ) với khoảng cách nhỏ nhất đến s . Sau đó, chúng ta thấy rằng d ( a , u ) = d ( a , t ) + d ( t , sp(a,b)sd(a,b)tp(a,b)s , vì d ( s , u ) > d ( s , b ) = d ( s , t ) + d ( t , b ) > d (d(a,u)=d(a,t)+d(t,s)+d(s,u)>d(a,b)=d(a,t)+d(t,b) . Tương tự, chúng ta cũng sẽ có d ( b , u ) > d ( a , b ) . Điều này mâu thuẫn với d ( a , b ) là đường kính.d(s,u)>d(s,b)=d(s,t)+d(t,b)>d(t,b)d(b,u)>d(a,b)d(a,b)
Trường hợp 2: đường dẫn chứa đỉnh s . Trong trường hợp này, d ( a , b ) một lần nữa không thể là đường kính, vì đối với một số đỉnh u sao cho d ( s , u ) = max x d ( s , x ) , cả d ( a , u ) và d ( b , u ) sẽ lớn hơn dp(a,b)sd(a,b) ud(s,u)=maxxd(s,x)d(a,u)d(b,u) .d(a,b)
Bổ đề 1 đưa ra lý do tại sao chúng ta bắt đầu tìm kiếm Breadth-First thứ hai tại đỉnh được phát hiện lần cuối của BFS đầu tiên. Nếu u là đỉnh duy nhất có khoảng cách lớn nhất có thể từ s , thì theo Bổ đề 1, nó phải là một trong những điểm cuối của một số đường có khoảng cách bằng đường kính và do đó, một BFS thứ hai với u là gốc rõ ràng tìm thấy đường kính. Mặt khác, nếu có ít nhất một đỉnh v khác sao cho d ( s , v ) = d ( s , u ) , thì chúng ta biết rằng đường kính là duusuvd(s,v)=d(s,u) và không quan trọng chúng ta bắt đầu BFS thứ hai tại u hay v .d(a,b)=2d(s,u)uv