以下は、元の質問でより密接にリンクされたMITソリューションセットに続く証明です。わかりやすくするために、比較をより簡単に行えるように、同じ表記法を使用します。
パス上のと間の距離が直径になるように2つの頂点とがとします。例えば、距離はツリーの任意の2点間の可能な最大距離です。ノードもあるとします(場合、最初のBFSがを取得し、2番目がに戻るため、スキームが機能することは明らかです)。また、ようなノードがあるとします。ababp(a,b)d(a,b)s≠a,bs=abud(s,u)=maxxd(s,x)
補題0:とはどちらもリーフノードです。ab
証明:リーフノードではない場合、直径をと矛盾させて、エンドポイントをリーフノードに拡張することにより増やすことができます。d(a,b)d(a,b)
補題1:。max[d(s,a),d(s,b)]=d(s,u)
証明:矛盾のために、と両方が厳密によりも小さいと仮定します。次の2つのケースを検討します。d(s,a)d(s,b)d(s,u)
ケース1:パス頂点が含まれていません。この場合、を直径にすることはできません。理由を確認するために、をまで距離が最小の上の一意の頂点とする。次に、、。同様に、ます。これは、直径であると矛盾します。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)
ケース2:パスに頂点が含まれています。この場合、再び、いくつかの頂点に対してため、直径にすることはできませんように、両方の及びはより大きくなります。p(a,b)sd(a,b) ud(s,u)=maxxd(s,x)d(a,u)d(b,u)d(a,b)
補題1は、最初のBFSの最後に検出された頂点で2番目の幅優先探索を開始する理由を示しています。場合から最大可能距離を持つユニークな頂点であるは、補題1により、それがなければならない距離を有するいくつかのパスのエンドポイントの1つの直径に等しくなるよう、ひいてはと第二BFSルートとしては明確に認めます直径。一方、であるような頂点少なくとも1つある場合、直径はことがわかります。、2番目のBFSをまたはで開始するかどうかは関係ありません。u s u v d (s 、v )= d (s 、u )d (auusuvd(s,v)=d(s,u)d(a,b)=2d(s,u)uv