[解決済み】セグメントツリー、インターバルツリー、バイナリーインデックスツリー、レンジツリーの違いは何ですか?
2022-04-18 03:59:58
質問
セグメントツリー、インターバルツリー、バイナリーインデックスツリー、レンジツリーの違いは何ですか。
- キーアイデア/定義
- 用途
- 性能/高次元でのオーダー/消費スペース
定義だけを述べるのはやめてください。
どのように解決するのですか?
これらのデータ構造はすべて、さまざまな問題を解決するために使用されます。
- セグメントツリー は間隔を格納し、"に最適化されています。 どの区間が与えられた点を含むか クエリ。
- インターバルツリー はインターバルも格納しますが、" に最適化されています。 どの区間が与えられた区間と重なるか クエリ。また、セグメントツリーと同様に、ポイントクエリにも使用することができます。
- レンジツリー はポイントを格納し、" に最適化されています。 どの点が与えられた区間に含まれるか クエリ。
- バイナリインデックス付きツリー は、インデックスごとにアイテム数を格納し、" に最適化されています。 インデックスmとnの間にいくつの項目があるか クエリ。
1次元でのパフォーマンス/消費スペース。
- セグメントツリー - 前処理時間O(n logn)、問い合わせ時間O(k+logn)、空間O(n logn)
- 区間木 - 前処理時間O(n logn)、問い合わせ時間O(k+logn)、空間O(n)
- レンジツリー - 前処理時間O(n logn)、問い合わせ時間O(k+logn)、空間O(n)
- バイナリ索引木 - 前処理時間O(n logn)、問い合わせ時間O(logn)、空間O(n)
(kは報告された結果の数)。
すべてのデータ構造は、使用シナリオにデータの変更とクエリの両方が含まれるという意味で、動的であることが可能である。
- セグメントツリー - の区間を O(logn) 時間で追加/削除することができます ( こちら )
- インターバルツリー - 区間はO(logn)時間で追加/削除できる
- レンジツリー - 新しい点は O(logn) 時間で追加/削除できます ( こちら )
- バイナリ索引ツリー - インデックスごとのアイテム数をO(logn)時間で増やすことができる。
高次元(d>1)の場合。
- セグメントツリー - 前処理時間O(n(logn)^d)、問い合わせ時間O(k+(logn)^d)、空間O(n(logn)^(d-1))
- 区間木 - 前処理時間O(n logn)、問い合わせ時間O(k+(logn)^d)、空間O(n logn)
- レンジツリー - 前処理時間O(n(logn)^d)、問い合わせ時間O(k+(logn)^d)、空間O(n(logn)^(d-1)))
- バイナリ索引木 - 前処理時間O(n(logn)^d)、問い合わせ時間O((logn)^d)、空間O(n(logn)^d)
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 整数が [1,100] の範囲にあるとき、100万個の整数を最も速くソートする方法は何ですか?
-
[解決済み] TSPの場合、Held-Karpアルゴリズムは、Brute-forceのO(n!)からO(2^n*n^2)に時間複雑性をどのように減少させるのでしょうか?[クローズド]
-
[解決済み] Breadth First Searchの時間複雑性解析
-
[解決済み] ヒープ化 VS ビルドヒープ
-
[解決済み] O(log* N)とは何ですか?
-
[解決済み] O(n)の整数ソートアルゴリズムはあるか?
-
[解決済み】ソートアルゴリズムにおける安定性とは何ですか、なぜそれが重要なのですか?
-
[解決済み】8歳児にビッグ・オー?[重複あり]
-
[解決済み】円の円周上にある点を計算するには?
-
[解決済み】big-O時間複雑度の高いアルゴリズムが低いアルゴリズムより好ましいと思うケースはありますか?