ジップツリー

二分探索木の種類

Zip木は、ランダム二分探索木の変種としてRobert Tarjan、 Caleb Levy、 Stephen Timmelによって導入されました。 [1] Zip 木は最大に似ていますが、ランクが幾何分布によって生成され、木の回転ではなく unzip と zip による挿入と削除中に最大ヒープ特性を維持する点が異なります。木のノードには、比較可能な個別のキーと数値ランクが含まれます。木はランクに関して最大​​ヒープ順序付けされ、同点の場合はより小さいキーを優先します。木のノードは、異なるキーを含まなければなりませんが、ランクの重複を許容します。小さいキーを優先するランク タイブレーカーにより、木ではより小さいノードを優先するバイアスが生じます。わずかに修正された Zip 木の変種である Zip-Zip 木は、第 2 ランクを持つ別のタイブレーカーを導入することでこのバイアスに対処しています。[2]

オペレーション

Zipツリーは二分探索木の演算をサポートします。実装上の主な違いは、Zipツリーのヒープ順序を維持するために、パスの解凍と圧縮を通じた挿入と削除の実装にあります。

ノードuの挿入または削除にかかる時間は、uの検索時間と解凍または圧縮にかかる時間の合計に等しい。解凍または圧縮にかかる時間は、解凍/圧縮されるパス上のノード数に1を加えた値に比例する。圧縮木における各ノードの期待される深さは最大1.5 log nであるため、挿入、削除、および検索操作の期待実行時間はすべてO( log n)となる。[1]

挿入

ノードx をzipツリーに挿入する際、まず幾何分布から成功確率1/2の新しいランクを生成します。x.keyをノードxのキーx.rank をノードxのランクとします

zip ツリー内のキー 10 およびランク 3 を持つノードの挿入と削除。

次に、ツリー内のxの検索パスをたどり、 u.rank <= x.rankかつu.key < x.keyとなるノードuを見つけます。 xの検索パスに沿って進み、通過するすべてのノードv を「解凍」し、v.key < x.keyの場合はパスPに、v.key > x.keyの場合はパスQに配置します。キーは一意である必要があるため、いずれかの時点でv.key = x.key になった時点で検索は停止し、新しいノードは追加されません。

xの検索が完了すると、ノード u の代わりにxが挿入されます。パスPのトップノードはxの左の子となり、パス Qのトップノードは右の子となります。uu.parent間の親子ポインタはxに応じて更新されu が以前にルートノードであった場合は、x が新しいルートになります。

削除

ノードxを削除する際は、まずツリーを検索してそのノードを見つけます。x.keyと同じキーを持つノードが見つからない場合、削除は行われません。

xが見つかったら、 xの左と右のサブツリーを2回ずつ探索し、左サブツリーの右のスパインと右サブツリーの左のスパインをランクの降順で1つのパスRに「ジッピング」します。このパスをトップダウンで作成する際、ノードはキーに基づいて、親ノードの左と右の子ノードとして追加されます。

パスRが完成すると、パスのルートがxに置き換わります。 xx . parent間の親と子のポインタはそれに応じて更新され、x が以前のルートノードであった場合は、 Rの最上位ノードが新しいルートになります。

参考文献

  1. ^ ab Tarjan, Robert E.; Levy, Caleb C.; Timmel, Stephen (2021-10-31). 「Zip Trees」. ACM Transactions on Algorithms . 17 (4): 1– 12. arXiv : 1806.06726 . doi :10.1145/3476830. ISSN  1549-6325.
  2. ^ Gila, Ofek; Goodrich, Michael T.; Tarjan, Robert E. (2023). 「Zip-Zip Trees: Making Zip Trees More Balanced, Biased, Compact, or Persistent」. Morin, Pat; Suri, Subhash (eds.). Algorithms and Data Structures . Lecture Notes in Computer Science. Vol. 14079. Cham: Springer Nature Switzerland. pp.  474– 492. arXiv : 2307.07660 . doi :10.1007/978-3-031-38906-1_31. ISBN 978-3-031-38906-1
「https://en.wikipedia.org/w/index.php?title=Zip_tree&oldid=1311791948」から取得