注意: 雑です
概要
[1] で定義された top tree は、葉が underlying tree の辺に対応するなどの条件があります。 [2] は splay tree をベースにした top tree を説明しています。 [1] の定義にはわずかに合致しないものの、いくらかの良い性質を持つ構造を思いついたので、本記事で説明します。
本文
link cut tree に類似した構造になっていて、根付き木を管理します。 各辺は solid と dashed の 2 状態のいずれかであり、各頂点について子とをつなぐ辺の内 solid なものは高々 本とするのも link cut tree と同様です。
link cut tree と異なるところは
- solid edge からなるパス を管理する二分探索木
- link cut tree: を頂点の列と見て、 の頂点が の頂点と 対 対応する。
- 提案手法: を頂点と辺の列と見て、 の頂点が の葉に、 の辺が の内部ノードに 対 対応する。
- 頂点 に連なる dashed edge の管理
- link cut tree: それぞれの dashed edge から (に対応する の頂点) へポインタを張る。
- 提案手法: 二分探索木 で dashed edge を管理する。各 dashed edge と の頂点が 対 対応する。 の頂点は middle child として dashed edge の先の部分木を管理する木構造の根へポインタを張る。
具体例です。
図 1: 管理したい根付き木(左)と対応する link cut tree の例(右)。頂点の数字は元の木の頂点と対応している。
図 2: 管理したい根付き木(左)と対応する提案手法の木の例(右)。丸いノードは元の木の頂点と、四角いノードは元の木の辺と対応している。
管理したい根付き木を とすれば、データ構造の全ての頂点が と完全に 対 対応します。 また、提案した構造でも link cut tree と同様に splay や expose を行えば時間計算量が になることも証明したつもりになっています (少し自信がありません)。
参考文献
[1] Alstrup, S., Holm, J., Lichtenberg, K. D., & Thorup, M. (2005). Maintaining information in fully dynamic trees with top trees. Acm Transactions on Algorithms (talg), 1(2), 243-264.
[2] Tarjan, R. E., & Werneck, R. F. F. (2005, January). Self-adjusting top trees. In SODA (Vol. 5, pp. 813-822).