确定性/非确定性状态系统映射

时间:2010-11-10 09:59:47

标签: finite-automata

我在一本关于非确定性映射的书中读到,从Q *Σ到2 Q 的映射为M =(Q,Σ,trans,q 0 , F) 其中Q是一组状态。 但我无法理解它是如何2 Q ; 如果有3个状态 a b c ,它如何映射到8个状态?

2 个答案:

答案 0 :(得分:2)

我总是发现考虑这些最简单的方法(因为状态集是有限的)就是让每个子集都是一个base-2数的编码,范围从0(所有位为零)到2 | Q | -1(所有位一),其中数字中的位数与状态集中的成员数Q一样多。然后,您可以只取这些数字中的一个并映射通过使用是否设置了数字中的特定位将其转换为子集。简单!

这是一个有效的例子,其中Q = { a b c }。在这种情况下,| Q |是3(有三个元素),所以2 3 是8.这意味着如果我们说前导位是元素 a ,我们得到这个,下一位是对于 b ,以及 c 的尾随位:

  • 0 = 000 = { }
  • 1 = 001 = { c }
  • 2 = 010 = { b }
  • 3 = 011 = { b,c }
  • 4 = 100 = { a }
  • 5 = 101 = { a,c }
  • 6 = 110 = { a,b }
  • 7 = 111 = {,b,c }

请参阅?最初的三个状态已经转换为8个,我们有一个自然编号,如果我们选择的话,我们可以使用它们创建这些状态的标签。

现在,在非确定性背景下解释这一点。基本上,非确定性意味着我们不确定我们处于什么状态。我们通过使用伪状态来表示这一点,伪状态是我们可能所处的“真实”状态集合;如果我们有完全非确定性,那么我们处于伪状态,其中所有实状态都是可能的(即{ a,b,c })而伪状态则没有实状态是可能的(即{})是相反的(在转换系统中真的不可能达到)。在一个真实的系统中,你通常不会处理这两种极端情况。

如何将确定性转换系统转换为非确定性转换系统的逻辑比我想要进入的更复杂。 (我必须阅读一篇实质性的博士论文来学习它,所以它肯定不仅仅是一个SO答案!)

答案 1 :(得分:1)

2 Q 表示Q的所有子集的集合。对于每个状态q和来自sigma的每个字母x,有一个Q状态的子集,您可以从q到字母x。所以是的,如果有三个状态abc,则集合2 Q 由8个元素组成{{},{a},{b},{c},{a,b},{a,c },{b,c},{a,b,c}}。它没有映射到8个状态,它映射到这8个状态中的一个。 HTH