湖大OJ-实验C----NFA转换为DFA】的更多相关文章

实验E----可判定的DFA的空问题 Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB Total submit users: 138, Accepted users: 130 Problem 13122 : No special judgement Problem description EDFA={< B >|B是DFA,且L(A)=Ф} 证明:EDFA是可判定的语言. 实验方法:编写一个算法/程序,对于…
实验C----NFA转换为DFA Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB Total submit users: 74, Accepted users: 58 Problem 13120 : Special judge Problem description 有限状态自动机(FSM "finite state machine" 或者FSA "finite state automat…
在编译系统中,词法分析阶段是整个编译系统的基础.对于单词的识别,有限自动机FA是一种十分有效的工具.有限自动机由其映射f是否为单值而分为确定的有限自动机DFA和非确定的有限自动机NFA.在非确定的有限自动机NFA中,由于某些状态的转移需从若干个可能的后续状态中进行选择,故一个NFA对符号串的识别就必然是一个试探的过程.这种不确定性给识别过程带来的反复,无疑会影响到FA的工作效率.因此,对于一个非确定的有限自动机NFA M,经常的做法是构造一个确定的有限自动机DFA M’. 有穷自动机(也称有限自…
概述 NFA非有穷自动机,即当前状态识别某个转换条件后到达的后继状态不唯一,这种自动机不便机械实现,而DFA是确定有限状态的自动机,它的状态转换的条件是确定的,且状态数目往往少于NFA,所以DFA能够比较方便的机械实现且识别能力方面也和NFA相当.本次实验采用子集构造法来实现不带空弧的由NFA到DFA的转换. 子集构造法的算法如下: 设NFA为M=(K,Σ,f,S0,Z),则构造相应的DFA  M′=(Q,Σ,f′,I0,F)①取I0=S0:②对于状态集Q中任一尚未标记的状态qi={Si1,Si…
json的主页上,提供了number类型的符号识别过程,如下: 图片引用:http://www.json.org/json-zh.html 实际上这张图片表示的是一个状态机,只是状态没有标出来.因为这个状态机上存在ε转换,所以它是一个NFA(不确定有限自动机).ε转换也即不需要输入串就能进行的转换,例如从开始状态到0之前的状态.而我们进行识别的时候,使用DFA(确定有穷自动机)会简单方便得多.所以首先应该将这个NFA转成DFA. 首先把这个NFA规范一下,写成状态与箭头的形式:   NFA转DF…
为了加速转换的处理,我压缩了符号表.具体算法参考任何一本与编译或者自动机相关的书籍. 这里的核心问题是处理传递性闭包,transitive closure,这个我目前采取的是最简单的warshall算法,虽然是4次的复杂度,但是由于我构建nfa的时候并没有采取标准的方法,使得nfa的节点减少很多.ps,上上篇所说的re转nfa,我这里有一个修改,就是对于or转换,不再增加节点,而是只增加两条空转换边. 相关代码如下 #include "nfa_process.h" //首先在原来的nf…
本文将以两种方法实现NFA转DFA,并利用C语言实现. 方法二已利用HNU OJ系统验证,方法一迷之WA,但思路应该是对的,自试方案,测试均通过. (主要是思路,AC均浮云,大概又有什么奇怪的Case没想到) ========================================================== 下面的描述以机械工业出版社的<计算理论导引>的第三版35页图为例.该NFA如下图. 思路一:穷举组合状态,构造DFA 该思路接近<计算理论>课本35页思路.…
求子串 数据结构中对串的5种最小操作子集:串赋值,串比较,求串长,串连接,求子串,其他操作均可在该子集上实现 数据结构中串的模式匹配 KPM模式匹配算法 基本的模式匹配算法 //求字串subString 在串string中的位置function subString(string, subString){ var i=0,j=0;//当i或j超出范围退出 while(i<string.length&&j<subString.length){ if(string[i]==subSt…
https://leetcode.com/ http://www.cnblogs.com/lzmfywz/archive/2012/02/07/2342010.html 1.题库与网站资源题库-在线提交系统(Online Judge)简介   下面是几个比较大的在线提交系统(OnlineJudge)里面有大量历年的竞赛题目,注册一个ID,然后用自己熟悉的语言(一般有Pascal/C/C++/Java)写好源代码提交即可,会实时返回信息告诉你是否正确.采用黑箱测试,系统里有一套标准的输入输出数据(…
1.题库与网站资源题库-在线提交系统(Online Judge)简介   下面是几个比较大的在线提交系统(OnlineJudge)里面有大量历年的竞赛题目,注册一个ID,然后用自己熟悉的语言(一般有Pascal/C/C++/Java)写好源代码提交即可,会实时返回信息告诉你是否正确.采用黑箱测试,系统里有一套标准的输入输出数据(对外保密,而且通常数据很多很怪),你的程序的输出和标准输出完全符合即可.   常见的返回信息有 AC(Accepted,通过).WA(Wrong Answer,输出有错误…