view paper/c6.tex @ 108:199561d48b97

add poster
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Sat, 20 Feb 2016 18:32:23 +0900
parents 8223a72a80e5
children
line wrap: on
line source

\chapter{結論}
本研究室で開発している Cerium を利用して文字列処理の並列処理に関する研究を行なった。
並列処理時のファイルの読み込みについて改良を行なった結果、最大13\%速くなる

本研究では文字列処理の並列処理の例題として、WordCount、Boyer-Moore String Search 、正規表現を実装した。
それぞれの例題によって結果の整合性を取る必要があるが、どのように整合性を取るかは問題によって考慮する必要がある。

ファイル読み込みを含め egrep と比較して最大 66 \% 速度がでる。

\section{今後の課題}

これまでの正規表現は一文字ずつ参照して状態を割り振っていった。この状態割り振りの問題として文字列の長さの分だけ状態ができてしまう。
状態が長くなればなるほど、ファイルと正規表現のマッチング時の状態遷移数もそれだけ多くなってしまう。
状態遷移数が多くなると、それだけ状態と入力を見て次の状態に遷移するという動作を何度も繰り返すことになってしまうので、処理的にも重くなってしまう。
同じ正規表現でも状態を少なくすればそのような繰返し処理も減っていくので、状態数を減らせばマッチングするまでの処理を軽減することができる。
状態数を減らす工夫として、文字列を一つの状態として見ることによって状態数を減らす。

図\ref{fig:wordstate}は、`word' という文字列の正規表現の正規表現木、DFA 及び状態遷移テーブルである。
一文字ずつそれぞれに状態を割り振った場合、状態数 5 のオートマトンが構成される。
これを一つの文字列に対して状態を割り振った場合、状態数 2 のオートマトンが構成され、状態数を削減することができる。

\begin{figure}[htpb]
  \begin{center}
    \includegraphics[scale=0.17]{images/regex/wordstate.pdf}
  \end{center}
  \caption{文字単位の状態割り振りを文字列単位での状態割り振りに変更}
  \label{fig:wordstate}
\end{figure}

実際にファイルに対して文字列を検索するときは、Boyer-Moore String Search を採用することにより、さらに高速になると期待される。