CLRSアルゴリズムの本からこの演習のヒントが必要です。
高さhの二分探索木でどのノードから開始しても、Tree-Successorへのk回の連続呼び出しにはO(k + h)時間がかかることを証明します。
CLRSアルゴリズムの本からこの演習のヒントが必要です。
高さhの二分探索木でどのノードから開始しても、Tree-Successorへのk回の連続呼び出しにはO(k + h)時間がかかることを証明します。
x
、開始ノードを開始ノードとz
し、終了ノードとします。k
p
間の単純な道にしましょう。x
z
y
の共通の祖先になりましょう。x
z
p
p
は最大2h
で、ですO(h)
。output
それらの値が間にx.key
あり、z.key
包括的である要素にしましょう。output
ですO(k)
。k
TREE-SUCCESSORへの連続呼び出しの実行では、にあるノードが訪問され、ノードのp
ほかに、ノードのサブツリーが訪問されると、そのすべての要素がになります。x
y
z
p
output
O(h+k)
です。ヒント:小さな例を考え出し、結果を観察し、理由を推定してみてください。
開始するには、ここで考慮すべきことがいくつかあります。
特定のノードから開始し、Tree-Succcesorへのk回の連続呼び出しは、部分的なツリーウォークを構成します。このウォークはいくつの(少なくともそして多くても)ノードを訪問しますか?(ヒント:key(x)について考えてください)。エッジは最大で2回訪問されることに注意してください(なぜですか?)。
最後のヒント:結果はO(2h+k)
です。