comparison c4.tex @ 39:73dd8d6a66b9

add some images
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Wed, 10 Feb 2016 02:41:40 +0900
parents 49614a7deaaa
children e6ca2c4eedeb
comparison
equal deleted inserted replaced
38:b2e4ac4e08f2 39:73dd8d6a66b9
302 \subsection{正規表現木から DFA・NFA の生成} 302 \subsection{正規表現木から DFA・NFA の生成}
303 303
304 次に正規表現木から非決定性有限オートマトン(NFA)、決定性有限オートマトン(DFA)を生成する。 304 次に正規表現木から非決定性有限オートマトン(NFA)、決定性有限オートマトン(DFA)を生成する。
305 305
306 オートマトンは、入力に対して状態に対応した処理を行ない結果を出力する仮想的な自動機械である。 306 オートマトンは、入力に対して状態に対応した処理を行ない結果を出力する仮想的な自動機械である。
307 正規表現はオートマトンで表現することができるので、状態と入力(ここでは正規表現)が判れば次はどのような状態になるのか示すことができる。 307 正規表現はオートマトンで表現することができるので、状態と入力(ここでは正規表現)が判れば次はどのような状態になるのか決定される。
308 308
309 \begin{figure}[htpb] 309 \begin{figure}[htpb]
310 \begin{center} 310 \begin{center}
311 \includegraphics[scale=0.2]{images/regex/setstate.pdf} 311 \includegraphics[scale=0.2]{images/regex/setstate.pdf}
312 \end{center} 312 \end{center}
433 \item `*' があれば、次の状態は `*' に接続されている木の先頭の状態と同じ。次の状態が受理状態なら先頭の状態と受理状態の組み合わせになる。 433 \item `*' があれば、次の状態は `*' に接続されている木の先頭の状態と同じ。次の状態が受理状態なら先頭の状態と受理状態の組み合わせになる。
434 \end{itemize} 434 \end{itemize}
435 435
436 これにより、正規表現木に状態の割り振りを行ない、入力を行なったら状態が遷移するようにできた。 436 これにより、正規表現木に状態の割り振りを行ない、入力を行なったら状態が遷移するようにできた。
437 現在の状態(current state)と入力(input)によって次の状態(next state)が一意に決まっており、それをテーブル化して正規表現をファイルにかける。(図\ref{fig:dfaregex}) 437 現在の状態(current state)と入力(input)によって次の状態(next state)が一意に決まっており、それをテーブル化して正規表現をファイルにかける。(図\ref{fig:dfaregex})
438 このように、ある状態にある入力を与えると次の状態の遷移先が一意に決まるオートマトンのとこを決定性オートマトンという。
438 439
439 \begin{figure}[htpb] 440 \begin{figure}[htpb]
440 \begin{center} 441 \begin{center}
441 \includegraphics[scale=0.2]{images/regex/dfaregex.pdf} 442 \includegraphics[scale=0.2]{images/regex/dfaregex.pdf}
442 \end{center} 443 \end{center}
443 \caption{dfa} 444 \caption{dfa}
444 \label{fig:dfaregex} 445 \label{fig:dfaregex}
445 \end{figure} 446 \end{figure}
446 447
447 しかし、生成された正規表現木によっては、現在の状態と入力による次の状態が一意に決まらない場合もある。 448 しかし、生成された正規表現木によっては、現在の状態と入力による次の状態が一意に決まらない場合もある。
448 図\ref{fig:nfaregex} 449 図\ref{fig:nfaex}はある状態にある文字を入力すると遷移先が複数存在する場合である。状態 4 に `b' が入力されると状態 2 か状態 4 に遷移する。
449 450 このように 1 つの入力に対して遷移先が複数存在すると、どの状態に遷移をしたらよいのかわからくなる。
451 このようなオートマトンを非決定性オートマトンという。
452
453 これを解決する方法として Subset Construction を適用する。
454
455 \begin{figure}[htpb]
456 \begin{center}
457 \includegraphics[scale=0.2]{images/regex/nfaex.pdf}
458 \end{center}
459 \caption{1 入力に対して遷移先が複数存在する(NFA)}
460 \label{fig:nfaex}
461 \end{figure}
450 462
451 \subsection{Subset Construction による NFA から DFA の変換} 463 \subsection{Subset Construction による NFA から DFA の変換}
464 Subset Construction は、ある状態から 1 つの入力に対して複数の状態遷移先がある場合、それらの状態 1 つの新しい状態としてまとめ、その新しい状態から新しい遷移先を構成しそれを繰り返す手法である。
465
466 \begin{figure}[htpb]
467 \begin{center}
468 \includegraphics[scale=0.2]{images/regex/nfa.pdf}
469 \end{center}
470 \caption{NFA の例}
471 \label{fig:nfa}
472 \end{figure}
473
474
475 \begin{figure}[htpb]
476 \begin{center}
477 \includegraphics[scale=0.2]{images/regex/dfa.pdf}
478 \end{center}
479 \caption{NFA を Subset Construction によって DFA に変換}
480 \label{fig:dfa}
481 \end{figure}
482
483 \begin{figure}[htpb]
484 \begin{center}
485 \includegraphics[scale=0.2]{images/regex/subset.pdf}
486 \end{center}
487 \caption{Subset Construction によって新しく生成された状態の状態遷移の生成}
488 \label{fig:subset}
489 \end{figure}
490
491 \begin{figure}[htpb]
492 \begin{center}
493 \includegraphics[scale=0.2]{images/regex/subsetauto.pdf}
494 \end{center}
495 \caption{Subset Construction 後のオートマトンの変化}
496 \label{fig:subsetauto}
497 \end{figure}
498
452 on the fly 499 on the fly
453 subset construction で使わない状態は生成しないで済む 500 subset construction で使わない状態は生成しないで済む
454 501
455 \subsection{DFA を元にパターンマッチを行う} 502 \subsection{DFA を元にパターンマッチを行う}
456 503
457 \subsection{(Word をノードに含める話)} 504 \subsection{(Word をノードに含める話)}
458 505
459 IBM stream processing 506 IBM stream processing
460
461 \begin{figure}[htpb]
462 \begin{center}
463 \includegraphics[scale=0.2]{images/regex/dfa.pdf}
464 \end{center}
465 \caption{dfa}
466 \label{fig:dfa}
467 \end{figure}
468
469 \begin{figure}[htpb]
470 \begin{center}
471 \includegraphics[scale=0.2]{images/regex/nfa.pdf}
472 \end{center}
473 \caption{nfa}
474 \label{fig:nfa}
475 \end{figure}
476
477 \begin{figure}[htpb] 507 \begin{figure}[htpb]
478 \begin{center} 508 \begin{center}
479 \includegraphics[scale=0.2]{images/regex/transitiontable.pdf} 509 \includegraphics[scale=0.2]{images/regex/transitiontable.pdf}
480 \end{center} 510 \end{center}
481 \caption{Transition Table} 511 \caption{Transition Table}