关于形式语言与自动机的DFA与NFA一个小小的思考

来自课本的一个问题,没有解析,记录个人分析
在这里插入图片描述
至少是2n次方个,如何推导?
先用表格列举几个,看有无规律:
在这里插入图片描述
这就是列举的前11个状态,我们可以发现:

  • 首先只有一个状态元素的集合只有{q0};
  • 拥有两个状态元素的集合是{q0,q1},{q0,q2},{q0,q3}…{q0,qn}
  • 拥有三个状态元素的集合是{q0,q1,q2},{q0,q1q3},{q0,q1,q4}…{q0,q1,qn}…{q0,q2,q3}…

根据以上的列出情况加上由子集构造可以知道,其实就是集合的组成排列组合。
我们可以先不看每一组中的q0(q0个数为C(n,0),即一个)因为这是每一个集合中必有得状态元素,那么组合情况就是
{q1},{q2}…{qn} + {q1,q2},{q1,q3}…{q1,qn},{q2,q3}…+{q1,q2,q3…,qn}
{q1},{q2}…{qn}个数就为C(n,1),
{q1,q2},{q1,q3}…{q1,qn},{q2,q3}…个数就为C(n,2),
{q1,q2,q3…,qn}个数就为C(n,n)
那么加上q0之后,求和为C(n,0) + C(n,1)+ C(n,2)+…C(n,n) = 2n

那为什么是至少2n个呢?
如果少于2n个,比如2n-1个呢?假设最大集合数是2n- k,那么很明显与我们上述推断的结论矛盾,即存在某一个状态集合是我们达不到的,那么更根据组成类似的集合构成C(m,n),那么如果某一个状态不能达到,那么所有的状态集合中的数目都要减一,即2n-1个。反之,达到的话,就有2n
或者归纳证明:
只有一个状态元素,如图
在这里插入图片描述
那么很明显满足上述表达式,最少是2个状态数目;
假设C(n-1,0) + C(n-1,1)+ C(n-1,2)+…C(n-1,n-1) = 2n-1成立,那么在最后再加入一个状态元素,那么C(n-1,0) + C(n-1,1)+ C(n-1,2)+…C(n-1,n-1) + 2n-1 = 2n-1+ 2n-1 = 2n,即证成立。
那为啥加上2n-1,这是因为已经存在2n-1个状态集合,按照上述举例的规律,每一个都增加的一个元素即可,状态数目翻倍。
个人理解是因为加入q0一共是n+1个状态元素,最大可能有2n+1个组合的状态集合。

发布了222 篇原创文章 · 获赞 48 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_44116998/article/details/104792010
今日推荐