Mercurial > hg > Papers > 2016 > masa-master
changeset 99:f58bbc4a42f8
fix
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 18 Feb 2016 21:39:33 +0900 |
parents | a099b533af0e |
children | 94ec38d9bdc6 |
files | paper/c4.tex paper/master_paper.pdf |
diffstat | 2 files changed, 14 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/c4.tex Thu Feb 18 21:13:37 2016 +0900 +++ b/paper/c4.tex Thu Feb 18 21:39:33 2016 +0900 @@ -258,11 +258,6 @@ \label{fig:iodivsuc} \end{figure} -Boyer-Moore String Search は文字列処理の Task を生成する前に、Skip Table を生成している。 -そして Boyer-Moore String Search に必要な情報を bm という構造体にまとめ、この構造体をそれぞれの Task に送信している。 -(ソースコード\ref{src:bmTMmain}) -%check global の説明 - \begin{lstlisting}[frame=lrbt,label=src:bmTMmain,caption=Boyer-Moore String Search の TMmain,numbers=left] typedef struct bm { int* skip_table; @@ -305,6 +300,15 @@ } \end{lstlisting} +ソースコード\ref{src:bmTMmain} 27 行目で検索する文字列を取得する。 +その後、検索文字列と文字列の長さを取り、それに基いて \verb+skip_table+ を生成する。 +そして Boyer-Moore String Search に必要な情報を bm という構造体にまとめ、この構造体をそれぞれの Task に送信している。 + +%check global の説明 IJ +33行目 \verb+w->global+ で検索時に必要な情報を渡している。 +\verb+w->global+で設定されたデータは、計算する Task や Print する Task でも利用することが可能になる。 + +ソースコード\ref{src:bmexec}の 28 行目にて、TMmain で設定した \verb+bmp+ を受け取っている。 \begin{lstlisting}[frame=lrbt,label=src:bmexec,caption=Boyer-Moore String Search の記述,numbers=left] static int BM_method(unsigned char *text,int text_len, @@ -342,6 +346,10 @@ return 0; } \end{lstlisting} +ソースコード\ref{src:bmexec} の3-20行目は Boyer-Moore String Search のメインルーチンである。 +pattern の末尾から比較していき、pattern の先頭までマッチしたら、カウンターを 1 増やす。 + +17行目は比較して一致しなかった場合であり、ミスマッチを起こしたファイルの文字を見て pattern を後ろにいくつずらすか決定される。 \begin{lstlisting}[frame=lrbt,label=src:bmprint,caption=Boyer-Moore String Search の Print Task,numbers=left] static int @@ -356,6 +364,7 @@ return 0; } \end{lstlisting} +ソースコード\ref{src:bmprint} で \section{正規表現} % 正規表現の話を 2 ページずつぐらいで