我目前正在参加Automata Theory课程,虽然仍然在有限自动机中,但我发现它既有趣又具有挑战性。
我们正在使用霍普克罗夫特的“自动机理论导论......”,并在其中讨论了DFA:
这很好, 但是,我们的教授给了我们一些练习(可能不在书中),我被要求用
创建一台机器这种方式让我感到困惑,因为这本书没有详细描述如何定义一种语言。我问教授,但他没有给出一个很好的解释,如果有一个正确的解释(我不确定他是否完全理解他自己是诚实的)。
我们来看看吧 例如L = 010。 这究竟是什么意思?这种语言'010'中唯一可接受的状态是什么?
另外,怎么做 L = {0,1}不同于 Σ= {0,1}?
另外,为什么DFA“五元组”符号A =(Q,Σ,δ,q 0,F)中包含的语言定义不是?
我感谢您对此主题的任何帮助。谢谢!
答案 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和(常规)语言之间的关系是后者可以定义为前者接受的输入字符串集。可以为(常规)语言给出其他等效定义,例如,由正则表达式匹配的字符串集。