自动机理论中语言的定义

时间:2016-09-11 06:46:54

标签: finite-automata automata

我目前正在参加Automata Theory课程,虽然仍然在有限自动机中,但我发现它既有趣又具有挑战性。

我们正在使用霍普克罗夫特的“自动机理论导论......”,并在其中讨论了DFA:

A =(Q,Σ,δ,q 0,F)

  • Q =状态集
  • Σ=输入符号,即字母
  • δ=过渡
  • q 0 =开始状态
  • F =最终/接受州

这很好, 但是,我们的教授给了我们一些练习(可能不在书中),我被要求用

创建一台机器

语言

  • L = 010
  • L = {1,0}
  • L = {1,0} *
  • L = {0 ^ n |其中n是> = 0)

这种方式让我感到困惑,因为这本书没有详细描述如何定义一种语言。我问教授,但他没有给出一个很好的解释,如果有一个正确的解释(我不确定他是否完全理解他自己是诚实的)。

我们来看看吧 例如L = 010。 这究竟是什么意思?这种语言'010'中唯一可接受的状态是什么?

另外,怎么做 L = {0,1}不同于 Σ= {0,1}?

另外,为什么DFA“五元组”符号A =(Q,Σ,δ,q 0,F)中包含的语言定义不是?

我感谢您对此主题的任何帮助。谢谢!

1 个答案:

答案 0 :(得分:2)

  

L = 010

这有点滥用符号,很可能意味着L = {010}。也就是说,L是仅由单词010组成的语言。它的DFA具有五种状态:q( - ),q(0),q(01),q(010)和q(r)。 q( - )是初始状态,q(r)是死状态,q(010)是接受状态。转换使得在转换时构建所需的状态,并且任何不正确的输入都会导致q(r)。

  

L = {1,0}

这是只有两个术语0和1的语言。它的DFA有三种状态:q( - ),q(a)和q(r)。 q( - )是初始状态,q(a)是接受而q(r)是死的。 q( - )在0或1时转到q(a),所有其他所需的转换转到q(r)。

  

L = {1,0} *

这是所有二进制字符串的语言。它有一个状态q( - ),它接受并在0或1上转换为自身。

  

L = {0 ^ n |其中n是> = 0)

这是所有0字符串的语言。它有两个状态,q( - )和q(r)。 q( - )是初始的,接受并在0时自行循环;所有其他所需的转换都转到q(r),一个死态。

  

此外,L = {0,1}与Σ= {0,1}?

的区别如何

Σ是指一个字母表,是一个非空的有限符号集,在这种情况下是0和1.重要的是,在任何字符串可以是任何字符串的意义上,字母表的符号应被视为原子符号。只有一种意义上明确解释。

L指的是某些字母表中的字符串语言,在这种情况下,是上面的Σ。字符串是来自字母表的符号的序列(我们通常将我们的考虑限于有限序列)。语言是这些序列的集合。 L = {0,1}是字母{0,1}上的长度 - 一个序列(0)和(1)的集合。 0可以指符号或由该符号组成的长度 - 一个序列,具体取决于上下文。你是否认为它们“相同”是一个哲学问题,但从程序员的角度来看,最好将它们视为不同的。

  

另外,为什么DFA“五元组”符号A =(Q,Σ,δ,q 0,F)中包含的语言定义不是什么?

语言是字符串集。 DFA是能够处理输入串的理论机器。 DFA和(常规)语言之间的关系是后者可以定义为前者接受的输入字符串集。可以为(常规)语言给出其他等效定义,例如,由正则表达式匹配的字符串集。