Mercurial > hg > Papers > 2015 > tatsuki-sigos
view TreeMap.tex @ 4:84bbcfe22656 default tip
change slide
author | tatsuki |
---|---|
date | Sat, 12 Sep 2015 17:30:58 +0900 |
parents | d6b62893378f |
children |
line wrap: on
line source
\section{新しい非破壊TreeMap}\label{section:TreeMap} Jungle内で実装しているIndexや、Nodeのattributeを、FunctionalJavaのTreeMapを用いて実装していた。 しかし、測定を行った結果FunctionalJavaのTreeMap部分がネックとなり性能が低下していたため、新しく非破壊的木構造のTreeMapの実装を行った。 自作TreeMapの構造は、データの検索、編集時の計算量から赤黒木を採用した。 赤黒木とは、二分木の一種で、次のような特徴がある \begin{itemize} \item 各ノードは赤か黒の色をもつ。 \item 根は必ず黒。 \item 葉は全て黒。 \item 赤のノードの子ノードは必ず黒。 \item 全てのノードから子孫の葉までの経路に含まれる黒ノードの数は全て同じ。 \end{itemize} 上記の条件より、根から葉までの最長経路が最短経路の2倍以上にならないため、極めて高速にデータの検索が行える。 TreeMapの実装を行う際に、赤と黒のノードをStatePatternを用いて、可読性を向上させた。 TreeMapを実装したことにより、Jungleがより高速に動作するようになった。