本文主要是介绍【p10】DFA (NFA确定化) 以及DFA的最小化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
终于到这里了
可能是最难的部分?反正是网课时长最长的部分
需要画表,所以最好还是跟着网课一边学一边操作,不然没啥印象,上完网课之后没啥效果
文章目录
- 画表
- 通过终结符
- 给新的集合编号
- 新建
- 表格结束
- 根据表格画图
- DFA
- 初态集和终态集
- 某种操作
- 覆盖操作
画表
表头是I
,然后是有多少个终结符,再加多少个表头
I
代表的是状态集合
从 I 0 I_0 I0 开始填, I I I 表示的是通过空可以到达的集合
现在对自己的自律没有一点信心哈哈,没有约束,自己其实挺难自我驱动的,还是得养成习惯之类的吧
换句话说,自己其实就是一个非常典型的普通人,不要对自己有太高的要求或者美化自己,面对残酷的现实
可能也是因为任务太难,太多,自己实力太弱小哈哈
通过终结符
集合里面的元素,一个一个尝试,看通过某个终结符,能不能到达下一个状态,如果可以的话,把能到达的状态加入到新的集合里面,经过空能到达的状态也加入到集合里面
给新的集合编号
我们把原来集合里面的每一个元素都进行一次操作,操作是看经过终结符,能不能到达新的状态,能到达新的状态,就把能到达的所有状态放到一个集合里面,新的集合和之前的集合不一样的话,就把新的集合编号
新建
假设出现了新的集合,需要新建一行表格
用新的集合作为第一列
进行和前面一样的操作
表格结束
直到不在出现新的集合,表示表格这个步骤结束了
根据表格画图
首先是给集合命名,之前集合的名字是 I 0 I_0 I0 , I 1 I_1 I1 ,现在我们可以把它们命名为, S S S 和 1 1 1 ,两个状态,我们知道, I 0 I_0 I0经过终结符 a a a 和 b b b 可以到达状态 I 1 I_1 I1 , I 1 I_1 I1 通过终结符 a a a 和 b b b 也可以到达状态 I 1 I_1 I1 ,所以可以画出一个图来
DFA
上面这个就是 DFA
初态集和终态集
含有终态 Z Z Z 的集合叫做终态集
不是终态集的就是初态集
也就是说两者是一个对立的关系
非此即彼
某种操作
看两行元素对应位置的值是否相等,和数据库查询语言里面的合并有一点类似,但是,我相当于还没有开始学习数据库,所以当我没说哈哈
假设对应位置的数值都相等,表示这两个终态集的元素不可以进行区分,需要进行覆盖操作
覆盖操作
用下标小的元素覆盖下标大的元素
相当于舍弃下标大的元素
解决了之前一道题,感觉胸有成竹(其实还是就最基础的水平)
可能书上的题都不是很靠谱,主要还是做 ppt 上面的题更靠谱,英文看起来难受,主要看题目就行了,应该题目也不是很多
从现在开始,到一段时间之内,不要发动态了(指csdn动态)
结合几道例题,还有之前那个朋友的一道题,应该是完全清楚了,主要是要小心细致一些,把过程写的工整一些,有助于解题
这篇关于【p10】DFA (NFA确定化) 以及DFA的最小化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!