セグメント木
(Segment tree から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/02/06 00:01 UTC 版)
| セグメント木 | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 種類 | 二分木 | ||||||||||||||||
| 発表時期 | 1977 | ||||||||||||||||
| 発明者 | ジョン・ベントリー | ||||||||||||||||
| ビッグオー記法による計算量 (en) | |||||||||||||||||
|
|||||||||||||||||
セグメント木(せぐめんとき、英: segment tree)や区分木(くぶんぎ)は、計算機科学において、区間や線分に関する情報を格納するために用いられるデータ構造である。似たデータ構造に区間木がある。
n個の区間の集合 I に対するセグメント木は、O(n log n) の記憶領域を使用し、![]()
I を区間、あるいは線分の集合とする。p1, p2, ..., pmを、左から右に並べられた、異なる区間の端点のリストとする。これらの点によって誘導される実数直線の分割を考える。この分割の各領域を「基本区間(elementary intervals)」と呼ぶ。したがって、基本区間は左から順に以下のようになる。
-
要素として整数、演算として和のモノイドを載せたセグメント木の構造の図解例。配列の区間和(薄墨の部分)を得たい場合、あらかじめ計算した区間に対応するノード(薄墨の9, 17)だけを足せばいい。 セグメント木は線分集合の和集合だけでなく、閉じた演算を持ち、結合法則を満たし、単位元を持つ集合であれば構築することができる(上記例の線分集合 I もこの性質を満たす)。[8] このような代数的構造をモノイドといい、モノイドに対してセグメント木を構成することで、整数・文字列・行列などの集合に対して以下のようなクエリを処理することができる。
具体的な演算とモノイドの対応例 クエリの種類 演算内容 (⋅) 単位元 (e) 備考 範囲合計 (RSQ) 加算 (+) 0 - 範囲最小値 (RMQ)
この節の加筆が望まれています。セグメント木は、1977年にジョン・ベントリーによってクレーの測度問題(n個の長方形の集合が与えられたとき、それらの和集合の面積を求める問題)の中で発明された。[1]
脚注
注釈
出典
- ^ a b c (de Berg et al. 2000, p. 229)
- ^ a b (de Berg et al. 2000, p. 227)
- ^ (de Berg et al. 2000, p. 224)
- ^ (de Berg et al. 2000, pp. 225–226)
- ^ (de Berg et al. 2000, pp. 226–227)
- ^ a b (de Berg et al. 2000, p. 226)
- ^ a b (de Berg et al. 2000, p. 230)
- ^ “セグメント木を使う”. Zenn (2022年5月14日). 2026年1月8日閲覧。
- ^ “Segment Trees”. hackerearth.com. 2026年1月8日閲覧。
- ^ “非再帰セグ木サイコー! 一番すきなセグ木です”. hcpc-hokudai.github.io (2019年11月21日). 2026年1月8日閲覧。
- ^ (de Berg et al. 2000, pp. 229–230)
- ^ “Range Sum Query (動的セグメント木)”. tjkendev.github.io. 2026年1月8日閲覧。
- ^ “遅延評価セグメント木をソラで書きたいあなたに”. tsutaj.hatenablog.com (2017年3月30日). 2026年1月8日閲覧。
- ^ “双対セグメント木という概念について”. kmyk.github.io (2019年2月22日). 2026年1月8日閲覧。
- ^ “pythonで永続セグメント木実装”. qiita.com (2021年10月3日). 2026年1月8日閲覧。
引用文献
- de Berg, Mark; van Kreveld, Marc; Overmars, Mark; Schwarzkopf, Otfried (2000). “More Geometric Data Structures”. Computational Geometry: algorithms and applications (2nd ed.). Springer-Verlag Berlin Heidelberg New York. doi:10.1007/978-3-540-77974-2. ISBN 3-540-65620-0
- Stabbing Problem
外部リンク
- セグメント木のページへのリンク