証明を始める前にいくつかの補題/事実.
- T はツリーであるため、任意の 2 対の頂点間にパスが 1 つだけ存在します。
- S--D が直径の場合、ソースを S (または D) とする BFS は、D (または S) に最大の距離を与えることになります。(直径の定義による)
|XY| も定義しましょう。パス X--Y の長さになります。
|XX| を定義する = 0。
アルゴリズムによって選択されたランダム ノードを A とします。ステップ 2 の後、最も遠いノードを P とします。P が S または D の場合、補題 2を使用して完了です。したがって、P は S または D のいずれかでなければならないことを示さなければなりません。
主張 : S--D が直径の場合、P は S または D のいずれかです。
証明: 対偶を証明することによって、上記を証明しようとしています。この証明は、一意の直径を持つツリーに対するものですが、一意でない直径に対してもマイナーな変更 (ほとんどの場合等値) で機能するはずです。
P が S でも D でもない場合、S--D は直径ではありません。
P は S でも D でもないと仮定します。
ケース 1: パス A--P が S--D と交差する
交点を K とします。BFS が P を A およびLemma 1から最も遠いノードとしてマークしたことがわかります。
|AP| > |AS|
|AK| + |KP| > |AK| + |KS|
したがって、|KP| が得られます。> |KS|。
同様に |KP| > |KD|。
ここで、パス SP を考えます。
|SP| = |SK| + |KP|
|SP| > |SK| + |KD|
|SP| > |SD|
したがって、SP は直径よりも長いため、SD は直径ではありません。
ケース 2:パス A--P が S--D と交差しない
これで、BFS が P を最も遠いノードとしてマークしたことがわかりました。だから私たちは持っています
|AP| > |西暦|
|AP| > |AS|
|AD| と書くことができます。= |AK| + |KD| ここで、K は直径の頂点の 1 つです (S と D を含む)。同様に |AS| = |AK| + |KS|.
一般性を失うことなく、|AD|>=|AS| と仮定します。
|AK| + |KD| >= |AK| + |KS|
|KD| >= |KS|
ここで、パス PD を考えます
|PD| = |AP| + |西暦|
|PD| = |AP| + |AK| + |KD|
|PD| > |AP| + |KD| (|AK| > 0 は A が直径上にないため)
|PD| > |KD| + |KD| (|AP| > |KD|)
|PD| > |SK| + |KD| (|KD| >= |KS|)
|PD| > |SD|
したがって、SD は直径ではなく、したがって主張です。