算法-有穷自动机

算法-有穷自动机

1.      简介

有穷自动机作为一种识别装置,它能准确地识别正规集,即识别正规文法所定义的语言和正规式所表示的集合。

  有穷自动机分为两类:确定的有穷自动机(DFA:DeterministicFiniteAutomata)和不确定的有穷自动机(NFA:NondeterministicFiniteAutomata)。

1.1.    确定的有穷自动机(DFA)

一个确定的有穷自动机(DFA)M是一个五元组:M=(K,Σ,f,S,Z)其中:

1.K是一个有穷集,它的每个元素称为一个状态;

2.Σ是一个有穷字母表,它的每个元素称为一个输入字符,所以也称Σ为输入符号字母表;

3.f是转换函数,是在k×Σ→K上的映像,即,如f(ki,a)=kj(ki∈k,kj∈k)就意味着,当前状态为ki,输入字符为a时,将转换到一状态kj,我们把kj称作ki的一个后继状态;

4.S∈K是惟一的一个初态;

5.ZK,是一个终态集,终态也称可接受状态或结束状态。

例    DFAM=({S,U,V,Q},{a,b},f,S,{Q})其中f定义为:

  f(S,a)=U   f(V,a)=U

  f(S,b)=V   f(V,b)=Q

  f(U,a)=Q   f(Q,a)=Q

  f(U,b)=V   f(Q,b)=Q

  一个DFA可以表示成一个状态图(或称状态转换图)。假定DFA有m个状态,n个输入字符,那么这个状态图含有m个结点,每个结点最多有n个弧射出,整个图含有惟一一个初态结点和若干个终态结点,初态结点冠以“”或标以“—”,终态结点用双圈表示或标以“+”,若f(ki,a)=kj,则从状态结点ki到状态结点kj,画标记为a的弧。

猜你喜欢

转载自www.cnblogs.com/wodeboke-y/p/9134120.html