Theoretical Computer Science

参照
  • このページは,理論計算機科学のメモ書きです。
  • プラクティカルな情報は,ProgrammingとかSystemとかを参照してください。

決定性と非決定性

  • 非決定性ってのは,ある状態から次の状態への遷移方法が複数あること。
  • 非決定性で受理するってのは,受理状態へ至る状態遷移のパターンが最低1通りあるってこと。
  • 定義としては,状態遷移関数に違いが表れる。以下参照。

定義

決定性有限オートマトン

\mbox{A finite automaton is 5-tuple (Q, \Sigma, \delta, q_0, F)} \\
\left\{
Q \mbox{ is a finite set of states, } \\
\Sigma \mbox{ is a finite set of alphabet, } \\ 
\delta  : Q \times \Sigma \longrightarrow Q \mbox{ is the transition function, } \\
q_0 \in Q \mbox{ is the start state, and} \\
F \subseteq Q \mbox{ is the set of accept states }
\right

例えば, 以下のような状態遷移図で表される状態遷移関数(と各状態)を持つ機械について考える。

Graph

各状態から出て行く矢印を見ると,それぞれの状態から読み込まれた文字(矢印の近くの文字)によって遷移する状態は,ただ1つだけ決定される。例えば, q_0 から 1 を読み込んだときに q_0 から出て行く矢印は1本しかない。

ちなみに,この機械が受理する言語は見ての通り…なんだけど,L = \{ 1^n0 ^\vee 0^n1 | n \in \mathbb{N} \} って感じ。

非決定性有限オートマトン

\mbox{A nondeterministic finite automaton is 5-tuple (Q, \Sigma, \delta, q_0, F)} \\ 
\left\{
Q \mbox{ is a finite set of states, } \\
\Sigma \mbox{ is a finite set of alphabet, } \\ 
\delta  : Q \times \Sigma_\epsilon \longrightarrow \mathcal{P}(Q) \mbox{ is the transition function, } \\
q_0 \in Q \mbox{ is the start state, and} \\
F \subseteq Q \mbox{ is the set of accept states }
\right

  • 状態遷移関数は,(「ある状態」と「読み込んだ文字」の組)\longrightarrow(「ある状態」のべき集合 (power set))という写像
    • 要するに,値域の要素がQの部分集合(の組み合わせ)ってことだから,複数の状態に遷移できるってこと。

例えば,以下のような状態遷移図で表される状態遷移関数(と各状態)を持つ機械について考える。

Graph

このとき,q_0 から 1 を読んだ場合,もうこの時点で次の状態候補が q_1q_2 の2つある。これは,どちらに進んでも構わないことを意味している。

ここで,入力文字列として 100 が与えられたとする。このとき,最初に q_0 から q_1 に進んでしまうと,この文字列は受理されない(受理状態へ至る道は無くなってしまう)ことになる。ところが,q_0 から q_2 に進めば即座に受理状態 q_2 に至り,受理されることになる。結果的に,この文字列はこの機械で受理される。

この様に,非決定性の機械で受理されるということは,受理状態へ至る道が最低1つあれば十分。


Now loading some news...