一般的なツリーが与えられた場合、2つのノードの間の距離はv
とw
です。ツリー内の2つのランダムなノード間の距離を決定する
ウィキペディアstates the following:
最下位共通祖先の計算が、ツリー内のノードの対の間の距離を決定するための手順の一部として、例えば、有用であり得る:VからWまでの距離とすることができますルートからvまでの距離と、ルートからwまでの距離から、ルートからそれらの最も低い共通祖先までの距離の2倍を引いたものとして計算されます。
はのはd(x)
我々は1
に設定されたルートからノードx
の距離を示しましょう。 d(x,y)
は、2つの頂点x
とy
の間の距離を示す。 lca(x,y)
は、頂点対x
とy
の最低共通祖先を示します。
従って、4
および8
,lca(4,8) = 2
の場合には、d(4,8) = d(4) + d(8) - 2 * d(lca(4,8)) = 2 + 3 - 2 * 1 = 3
です。素晴らしい、それは働いた!しかしながら、上述したケースは、頂点対(8,3)
(lca(8,3) = 2
)のために失敗すると思わ
d(8,3) = d(8) + d(3) - 2 * d(2) = 3 + 1 - 2 * 1 = 2.
これは、しかし、グラフに見られるように距離d(8,3) = 4
正しくありません。アルゴリズムは、定義されたルートを越えるものに対しては失敗するようです。
私には何が欠けていますか?適切な2
ノード、すなわち1 1右、d(lca(8,2))
== 0、ない場合1
2つの2つがあります。それは意図的なのでしょうか? – John
いいえ、私は画像を更新していませんでした! – Sirupsen
lca(8,3)= 1 not 2! –