Updated at: 2014-12-06
Data Structure
Heap
- ヒープ - Wikipedia
- 最大値(or 最小値)を求めるのに適した木構造
- 最大ヒープなら、ヒープの性質 (heap property) は「親ノードは子ノードより常に大きいか等しい」
- 優先度付きキュー (priority queue) の実装としてよく用いられる
- 任意の順序で入力されるデータ群から、最大(最小)のものを順に取り出すという操作が高速にできる
- イベントキューとかの実装に向いてるね
- 二項ヒープ、フィボナッチヒープなど、バリエーションがたくさんある
Skip List
- 順序つきの Link List を階層的に持つことで探索を速くする
- 上の階層ほど要素が歯抜けになってる感じ
- 最下層は全部の要素が入っていて、i の層の要素は i + 1 の層では p %で存在
- p の値を変えれば探索時間とメモリ使用量のトレードオフがとれる
- 最下層が各駅停車だとすると、上の層に上がるにつれて快速、急行、特急になってくイメージ
- 乱択アルゴリズム を用いることで 平衡 2 分探索木 と同等の効率を得ているわけだね