コンピュータ サイエンスにおいて、ソフト ヒープは、5 種類の操作に対して一定の償却時間計算量を持つ単純なヒープ データ構造のバリエーションです。これは、ヒープ内の最大で一定数の値のキーを慎重に「破壊」 (増加) することで実現されます。
定義とパフォーマンス
定数時間演算は以下の通りである: [1] [2]
- create ( S ): 新しいソフトヒープを作成する
- insert ( S , x ): ソフトヒープに要素を挿入する
- meld ( S , S' ): 2つのソフトヒープの内容を1つに結合し、両方を破棄する
- delete ( S , x ): ソフトヒープから要素を削除する
- findmin ( S ): ソフトヒープ内の最小キーを持つ要素を取得する
フィボナッチ ヒープなどの他のヒープは、これらの境界のほとんどを破損なしで達成しますが、重要な削除操作で定数時間の境界を提供することはできません。破損の量はパラメーター の選択によって制御できますが、これを低く設定するほど、挿入に必要な時間が長くなります。Big -O 記法で表すと、エラー率が の場合の償却時間はになります。[1] [2]ソフト ヒープの一部のバージョンでは、作成、挿入、および結合操作が最悪の場合でも定数時間かかることを許可し、findmin と delete に対してのみ、最悪の場合のパフォーマンスではなく償却時間を実現します。[3]比較ソートと同様に、これらのアルゴリズムは比較によってのみキーにアクセスします。整数キーに対する算術演算が許可されている場合、 への時間依存性はまたは (ランダム化により)に削減できます。[4]
より正確には、ソフト ヒープが提供するエラー保証は次のようになります。各ソフト ヒープは、0 から 1/2 の間で選択されるパラメータ で初期化されます。その後、任意の時点で最大で 個の破損したキーが含まれます。ここで は、これまでに挿入された要素の数です。これは、現在ヒープにあるキーの一定の割合だけが破損していることを保証するものではないことに注意してください。挿入と削除の不運なシーケンスでは、ヒープ内のすべての要素のキーが破損している可能性があります。同様に、findminとdelete を使用してヒープから抽出された要素のシーケンスで、一定の割合だけが破損したキーを持つことを保証するものではありません。不運なシナリオでは、破損した要素だけがヒープから抽出されます。キーが破損している場合、ソフト キーに格納されている値は、最初に指定された値よりも高くなります。破損によってキーの値が減少することはありません。findmin操作は、破損したキーを含む現在格納されているキーの最小値を検索します。[1] [2]
ソフト ヒープは2000 年にバーナード チャゼルによって設計されました。この構造の「破損」という用語は、チャゼルがソフト ヒープにおける「相乗り」と呼んだものの結果です。ソフト ヒープの各ノードには、キーのリンク リストと 1 つの共通キーが含まれています。共通キーは、リンク リスト内のキーの値の上限です。キーがリンク リストに追加されると、その値はソフト ヒープの操作で二度と関係がなくなるため、破損したと見なされます。比較されるのは共通キーのみです。これがソフト ヒープを「ソフト」にするもので、そこに入れられた特定の値が破損するかどうかはわかりません。これらの破損の目的は、データの情報エントロピーを効果的に下げ、データ構造がヒープに関する情報理論の障壁を突破できるようにすることです。[1]
アプリケーション
ソフトヒープは、その制限と予測不可能な性質にもかかわらず、決定論的アルゴリズムの設計に役立ちます。たとえば、最小全域木を見つけるためのこれまでで最高の複雑性を達成するために使用されてきました。[5]ソフトヒープを使用して効率的な解決が簡素化された他の問題には、ヒープ順序付き木、ソートされた行列、および合計セットを含む構造化された値のセットのいくつかのクラスで 番目の最小要素を見つけることが含まれます。[6]
もう一つの簡単な例は、一連の数値の中で最小のものを見つける選択アルゴリズムである。[1]
- エラー率 でソフトヒープ を初期化し、挿入されたキーの最大 33% が破損することを許容します。
- すべての要素をヒープに挿入します。
- 繰り返し回数: findmin 操作を実行し、返されるキーを削除します。
- 正しいキーが最大となる削除された要素を とします。
- 指定されたすべての要素を比較し、 より小さいサブセットと より大きいサブセットに分割します。 に等しい要素は、削除された場合は最初のサブセットに配置され、それ以外の場合は 2 番目のサブセットに配置されます。
- 番目に小さいものを含むサブセット内で同じ選択アルゴリズムを再帰的に呼び出します。
アルゴリズムの比較ステップの後、2 つのサブセットのうち最初のサブセットには削除されたキーがすべて含まれているため、少なくとも 個の要素が含まれます。削除されなかった要素のうち、最大で個が破損しているため、少なくとも 個が破損していません。これらの破損していない削除されていない要素はすべて 2 番目のサブセットに属している必要があります。なぜなら、それらはソフト ヒープの (破損している可能性のある) 値 以上の値であり、その値は の真の値 より大きいためです。したがって、両方のサブセットには % から 66 % の要素が含まれます。再帰の各レベルで問題のサイズが定数倍減少するため、アルゴリズムの合計時間は等比級数で制限され、 であることが示されます。[1]
参考文献
- ^ abcdef Chazelle, Bernard (2000 年 11 月). 「ソフトヒープ: 最適なエラー率を持つ近似優先キュー」(PDF) . Journal of the ACM . 47 (6): 1012– 1027. CiteSeerX 10.1.1.5.9705 . doi :10.1145/355541.355554. S2CID 12556140.
- ^ abc Kaplan, Haim; Zwick, Uri (2009). 「Chazelle のソフトヒープのよりシンプルな実装と分析」。第19 回 ACM–SIAM離散アルゴリズムシンポジウムの議事録。産業応用数学協会。pp. 477– 485。CiteSeerX 10.1.1.215.6250。doi : 10.1137 /1.9781611973068.53。ISBN 978-0-89871-680-1。
- ^ Kaplan, Haim; Tarjan, Robert E .; Zwick, Uri (2013). 「ソフトヒープの簡略化」. SIAM Journal on Computing . 42 (4): 1660– 1673. doi :10.1137/120880185. MR 3084181.
- ^ Thorup, Mikkel ; Zamir, Or; Zwick, Uri (2019). 「近似クエリ、近似ヒープ、ソフトヒープによる動的順序付きセット」。Baier, Christel; Chatzigiannakis, Ioannis; Flocchini, Paola; Leonardi, Stefano (編)。第46回オートマトン、言語、プログラミング国際コロキウム、ICALP 2019、2019年7月9日~12日、ギリシャ、パトラ。LIPIcs。第132巻。Schloss Dagstuhl – Leibniz-Zentrum für Informatik。pp. 95:1–95:13。doi : 10.4230/LIPICS.ICALP.2019.95。
- ^ Chazelle, Bernard (2000). 「逆アッカーマン型複雑度を持つ最小全域木アルゴリズム」Journal of the ACM . 47 (6): 1028– 1047. doi : 10.1145/355541.355562 . MR 1866456.
- ^ カプラン、ハイム;コズマ、ラスロー。ザミール、または。ズウィック、ウリ(2019)。 「ヒープ、行ソート行列、およびソフト ヒープを使用した X+Y からの選択」。 Fineman では、ジェレミー T.。ミッツェンマッハー、マイケル(編)。アルゴリズムのシンプルさに関する第 2 回シンポジウム、SOSA 2019、2019 年 1 月 8 ~ 9 日、米国カリフォルニア州サンディエゴ。オアシックス。 Vol. 69. ダグシュトゥール城 – ライプニッツ情報センター。 5:1–5:21 ページ。土井: 10.4230/OASICS.SOSA.2019.5。
