【问题标题】:Design NFA with changing alphabet and language使用不断变化的字母和语言设计 NFA
【发布时间】:2014-11-18 07:55:12
【问题描述】:

我遇到了这个练习,我想了几个小时,但一无所获。

我们的字母表是{1...n},我们的语言Ln 包含Σ* 下的所有单词,因此该语言中的每个单词不包含至少一个字母表中的字母。

  • 例如:如果 n=5,则单词 w={111223432} 在语言中,因为单词中缺少 '5'w={1352224} 这个词不在语言中,因为所有字母 1...n 都在这个词中。

我需要为这种具有n+1 状态的语言设计一个 NFA。

再次,我尝试了一些方法,但并不是一个好主意。

【问题讨论】:

    标签: nfa automaton


    【解决方案1】:

    为简单起见,让我们对字母 {a, b, c} 执行此操作。想象一下,您的语言中有一个字符串。这意味着它缺少a,或者缺少b,或者缺少c(包括或)。如果我们知道丢失了哪个字符,就很容易使用单状态 NFA 检查字符串是否从未包含该字符的副本,该 NFA 包含一个接受状态,该状态在除该字符之外的所有内容上转换回自身。

    由于字母表中的字符数量有限,我们可以构建三个单态 NFA,每个 NFA 都旨在检查字符串是否缺少特定字符。

    要构建整个机器,通过将起始状态的 ε 转换添加到我们之前构建的每个单独的单态 NFA,让 NFA 的起始状态不确定地猜测缺少哪个字符。您现在拥有该语言的四态 NFA。 (您可以看到它的图片here。)希望不难看出如何将其推广到更大的字母大小!

    【讨论】:

      猜你喜欢
      • 2012-07-18
      • 1970-01-01
      • 1970-01-01
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      • 2022-06-30
      • 1970-01-01
      • 2014-11-29
      相关资源
      最近更新 更多