Mercurial > hg > Papers > 2022 > soto-sigos
view Paper/tex/rbt_intro.tex @ 14:ba98083f9853 default tip
FIX
author | soto <soto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 27 May 2022 12:31:39 +0900 |
parents | 9ec2d2ac1309 |
children |
line wrap: on
line source
\chapter{Red Black Tree} 実装を行う Red Black Tree の説明を行う. Red Black Tree は 木構造の基本操作である Insert(挿入),Delete(削除),Search(検索)の いずれに置いても最悪実行時間が $O(log \: n)$であり,データ構造のうちで最善のものの一つである. そのため,実用的なデータ構造として知られている. \section{Tree} Tree (木構造)とは,非常に有用なデータ構造である. \figref{tree}の○の部分を node (節) と呼び,top node を root(根) と呼ぶ. 特に,根を持つ木構造のことを強調して,Rooted Tree (根付き木) と呼ぶ事がある. \section{Binary Tree} 各 node からすぐ下に辺で結ばれている node を その node の child またはson (子あるいは子供)と呼ぶ. child 側から上の辺を parent (親) と呼ぶ. \figref{bt}のように,各 node が持つ child が高々2つである Tree を Binary Tree (2分木)と呼ぶ. \begin{figure}[htbp] \begin{minipage}{0.5\hsize} \begin{center} \includegraphics[height=4.5cm]{pic/rbt/tree.pdf} \end{center} \caption{Tree の例} \label{tree} \end{minipage} \begin{minipage}{0.5\hsize} \begin{center} \includegraphics[height=4.5cm]{pic/rbt/bt.pdf} \end{center} \caption{Binary Tree の例} \label{bt} \end{minipage} \end{figure} \section{Binary Search Tree} Rooted Binary Tree に対して, 以下の制約を持つものを,Binary Search Tree と呼ぶ. $左側の子孫にある要素 < 親 < 右側の子孫にある要素$ 例を以下\figref{bst}に示す \begin{figure}[H] \begin{center} \includegraphics[height=7.5cm]{pic/rbt/bst.pdf} \end{center} \caption{Binary Search Tree の一例} \label{bst} \end{figure} \section{RedBlackTree} RedBlackTree (または赤黒木)とは平衡2分探索木の一つである. 2分探索木の点にランクという概念を追加し,そのランクの違いを赤と黒の色で分け, 以下の定義に基づくように 木を構成した物である.図では省略しているが,値を持っている点の下に黒色の空の葉があり, それが外点となる. \begin{enumerate} \item 各点は赤か黒の色である. \item 点が赤である場合の親となる点の色は黒である. \item 外点(葉.つまり一番下の点)は黒である. \item 任意の点から外点までの黒色の点はいずれも同数となる. \end{enumerate} 参考となる\figref{rbt}を以下に示す.上記の定義を満たしていることが分かる. \begin{figure}[H] \begin{center} \includegraphics[height=6.5cm]{pic/rbt/rbt.pdf} \end{center} \caption{Red Black Tree の一例} \label{rbt} \end{figure} \section{Left Learning Red Black Tree} Left Learing Red Black Tree とは Red Black Tree の変形である. Red Black Tree の 仕様を満たしながら,実装が容易である. \figref{rbt}に入っていた値を Left Learning Red Black Tree に適応した場合を \figref{llrbt}に示す. Left Learning Red Black Tree では赤色の node は parent から見て 左の node にしか 現れない Red Black Tree となる. これにより,パターンマッチの分岐を減らす事ができ,実装が容易になる. 本来の Red Black Tree の実装は困難であるため, 本論では Red Black Tree の仕様を満たしている Left Learning Red Black Tree を検証する. \begin{figure}[H] \begin{center} \includegraphics[height=7.5cm]{pic/rbt/llrbt.pdf} \end{center} \caption{Left Learning Red Black Tree の一例} \label{llrbt} \end{figure}