function - 设计检查 bool 公式是真还是假的 DFA

标签 function automata dfa deterministic

我真的需要一些帮助,我制作了大约 100 个构建 DFA 的示例,但我一直坚持这个。任何帮助都感激不尽。

所以我有一些随机 bool 函数,例如: f(a,b,c,d) = (a∨c)∧((a∧b)∨(c ↔ d)) 我应该制作一个 DFA 接受所有为真的字符串 {3,7, 8,11,12,13,14,15(二进制))其他所有内容都应该被拒绝。所以基本上我需要一个 DFA 将这些整数转换为二进制形式并接受它们,拒绝剩下的其他整数。我怎么做到的?我花了几个小时试图询问各州。在这种情况下你如何制作转换表?

再次感谢您对我的帮助! :)

最佳答案

如果我正确理解了这个问题,那么这个问题“相对容易”,因为输入的大小是固定的,这意味着接受的语言也是有限的。我会给出一个构造的草图,这会导致相对较多的状态,但不会使用复杂的想法。

用真值表检查公式。有 4 个变量需要评估,这意味着有 2^4 = 16 个可能的输入。

将这些输入排列在由从根(DFA 的初始状态)到 16 叶的 16 条路径组成的决策树中。当且仅当通向叶子的路径对应于真值表中评估为"is"的输入时,叶子才是最终状态。

请注意,有限语言总是有可能被 DFA 识别 - 构造一个 NDFA,它接受该语言中的每个单词,并将其转换为 DFA(细节上可能很复杂,但这样的自动机通过 this 构造保证存在)。

关于function - 设计检查 bool 公式是真还是假的 DFA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45918423/

相关文章:

algorithm - 使用有限自动机作为容器的键

regex - 寻找 DFA 的补充?

java - 我可以使用 DFA 来跟踪特定语言的字符串吗?

theory - 正则表达式 0(0+1)*0+1(0+1)*1 的 DFA 是多少?

jquery - 使用 jQuery 获取调用函数的元素的信息

function - 如何正确调用Powershell函数?

javascript - 函数只返回事件

javascript - 使用 javascript 动态创建 onmouseover/onmouseout 函数?

lisp - LISP 中的 NFA 识别器

java - 我可以确定正则表达式模式匹配的第一个字符集吗?