我有一个 DFA A 和一个 CFG G,然后我必须检查 G 是否生成了 A 不接受(被 A 拒绝)的无限词,以及一个不错的复杂度时间。
我想用 CFG 构建一个图,如果它包含一个有向循环,那么就会产生一个无限的语言。顶点是变量,对于每个产品,我都会画一些边。输入都是被 DFA 拒绝的单词,当我找到一个循环时,我可以说 CFG 生成了被 DFA A 拒绝的无限语言。
我不知道如何在算法中转换它,或者如果我的建议不正确,我必须创建一个新的。
编辑:我可以将我的 cfg 转换为 CNF,然后转换为 DFA(使用 chomsky)。之后,我尝试找到一个循环。但是我转换后的 dfa 的状态可能比我的 dfa a 少……我认为我需要如何在我的 cfg 中获得 DFA A 拒绝的单词。