用C语言实现NFA到DFA的转换过程

时间:2011-12-30 10:40:15
【文件属性】:
文件名称:用C语言实现NFA到DFA的转换过程
文件大小:3KB
文件格式:RAR
更新时间:2011-12-30 10:40:15
NFA_DAFA 用C语言实现NFA到DFA的转换过程 NFA (nondeterministic finite-state automata)是不确定性有限状态自动机的简写,NFA的定义为: 一个不确定性有限状态自动机由以下部分所组成: A. 一个有限的输入字符集I B. 一个有限的状态集S C. 状态转换函数f: S x I -> P(S),P(S)为s的幂集 D. 一个结束状态集Q,Q是S的子集 E. 一个初始状态s0 (属于S) F. 表示为A(I, S, f, Q, s0) 与NFA相对应,DFA (deterministic finite-state automata)表示确定性有限状态自动机。与NFA不同,DFA不存在Epsilon转换,并且每一个状态转换函数的值只对应一个状态,即一个状态输入一个字符,只能有一个状态相对应。 NFA与DFA的区别 显然,DFA更加适合我们进行字符串匹配,因为输入一个字符,总能从一个状态确定地转换为另一个状态,直到终结状态。NFA一个输入可能对应多个状态,因此需要进行回溯,先尝试一条路径,发现走不通,再回退到原来的状态尝试另外一条路径,显然匹配算法不如DFA简单。 给定一个NFA,总有一个DFA与之对应,即一个NFA可以转换成一个等价的DFA,我们将使用子集构造算法实现NFA到DFA的转换。
【文件预览】:
aa.cpp

网友评论

  • 很有参考性,写的很好
  • 做的有点看不懂啊
  • 代码挺好的,初学者看的有点吃力就是了
  • 没有正则到NFA的转换
  • 代码挺好的,初学者看的有点吃力就是了
  • 不错的代码
  • 全部自己注释了 有用
  • 对NFA理解的不深 只是想获取某个expression的DFA 代码还是很好地
  • 输入输出如果是文件就更好了,这个输入形式太麻烦了!!1
  • 感觉应该尽量用库函数吧
  • 很好 很不错的代码
  • ok吧.基本功能都有了.
  • 代码给我的感觉还好
  • 代码质量不错,都能实现,要的就是这个东西
  • 在dev上运行有点小改动才行,将flushall改成_flushall
  • 很不错,输入的话可以弄个文件来做
  • 用dev c++ 运行了一下,有错误,不知道那些运行成功的是用什么编译器
  • 代码质量不错,基本可以实现转换
  • 代码质量不错,但是运行方面有问题。按要求输入之后,只能建立出NFA图,但是不转换
  • 代码还行吧,就是输入的时候很麻烦
  • 试了一下,可以运行,但是按要求运行之后,结果矩阵中的元素均为NULL
  • 是cpp文件。但内容确实是c语言写的。代码质量不错~