最小-最大ヒープ(Min-Max Heap)とは?定義と主な特徴をわかりやすく解説
最小-最大ヒープとは
最小-最大ヒープ(Min-Max Heap)とは、最小レベル(偶数レベル)と最大レベル(奇数レベル)が交互に配置された完全二分木として定義されるデータ構造です。偶数レベルは0、2、4のように番号が振られ、奇数レベルは1、3、5のように番号が振られます。
以下の説明では、ルート要素は第0レベル(最初のレベル)に位置するものとします。

図:最小-最大ヒープの例
最小-最大ヒープの主な特徴
- キーによる順序付け: 最小-最大ヒープ内の各ノードには、通常「キー(key)」と呼ばれるデータメンバーが関連付けられており、このキーの値に基づいてヒープ内でのノードの順序が決定されます。
- ルートは最小要素: ルート要素は、最小-最大ヒープ全体における最小要素です。
- 最大要素の位置: 第1レベル(最大レベル=奇数レベル)にある2つの要素のうちいずれか一方が、ヒープ全体の最大要素となります。
- 部分木における大小関係: yを最小-最大ヒープ内の任意のノードとしたとき、次の性質が成り立ちます。
- yが最小レベル(偶数レベル)上にある場合、y.keyはyを根とする部分木内のすべてのキーの中で最小のキーです。
- yが最大レベル(奇数レベル)上にある場合、y.keyはyを根とする部分木内のすべてのキーの中で最大のキーです。
- ノードの呼称: 最小レベル上にあるノードは「最小ノード」、最大レベル上にあるノードは「最大ノード」と呼ばれます。
最大-最小ヒープとの違い
最大-最小ヒープ(Max-Min Heap)は、最小-最大ヒープとは逆の性質を持つデータ構造です。最大-最小ヒープでは、最大値がルートに格納され、最小値はルートの子のいずれかに格納されます。
このような双方向のヒープ構造は、最小値と最大値の両方を効率的に取り出せるため、両端優先度付きキュー(Double-ended Priority Queue)の実装などに活用されています。
-
ペアリングヒープのバリエーションとは?最小ヒープと最大ヒープの違いを解説
ペアリングヒープの定義 ペアリングヒープ(pairing heap)は、「空のヒープ」であるか、あるいは「ルート要素」と「空でもよいペアリングツリー(ペアリング木)のリスト」から構成されるペアリングツリーのいずれかとして定義されます。 ヒープ順序性(heap ordering property)では、任意のノードの親は、そのノード自身より大きくなってはならないと規定されます。 以下の説明では、decrease-key(キー値減算)操作をサポートしない、純粋関数型のヒープを想定します。 型定義 type PairingTree[Element] = Heap(element: Element,
-
ペアリングヒープとは?特徴・基本操作・計算量をわかりやすく解説
ペアリングヒープとは ペアリングヒープ(Pairing Heap)は、比較的シンプルな実装でありながら、実用上きわめて優れた償却性能(amortized performance)を発揮することで知られるヒープデータ構造の一種です。 ペアリングヒープは「ヒープ順序」を満たす多分木構造として定義され、簡略化されたフィボナッチヒープとみなすこともできます。 プリム法(Primの最小全域木アルゴリズム)のようなアルゴリズムを実装する際の「堅牢な選択肢」とされており、最小ヒープを前提とした場合、以下の操作をサポートします。 ペアリングヒープの主な操作 find-min(最小値の参照) − ヒープの先