为单词列表生成 CFG
Generate a CFG for a list of words
是否可以编写一个算法来生成一个 CFG 来解析单词列表,使用最大 m
规则,或者如果不可能解析所有单词,则解析尽可能多的单词?
你对我应该如何启动算法有什么想法吗?
所有输入的单词都将在 [a-z]
字母表中。
写出这样的算法是肯定可以的。无需查看详细信息,您可以在所需字母表上使用 m 或更少的规则枚举所有可能的 CFG(直到重命名非终结符),并检查每个 CFG 是否接受您的字符串。如果您按照规则数量的顺序执行此操作,您将停止在第一个有效的最小 CFG 上(如果有)。要查看 CFG 是否有效,您可以推出自己的或从 CFG 派生 PDA,然后 运行 所有输入的 PDA 以查看它是否接受它们。有一些算法可以从您应该能够使用的 CFG 生成 PDA 解析器。
这个过程效率不是特别高,但是很有效,足以说明它是可能的。
是否可以编写一个算法来生成一个 CFG 来解析单词列表,使用最大 m
规则,或者如果不可能解析所有单词,则解析尽可能多的单词?
你对我应该如何启动算法有什么想法吗?
所有输入的单词都将在 [a-z]
字母表中。
写出这样的算法是肯定可以的。无需查看详细信息,您可以在所需字母表上使用 m 或更少的规则枚举所有可能的 CFG(直到重命名非终结符),并检查每个 CFG 是否接受您的字符串。如果您按照规则数量的顺序执行此操作,您将停止在第一个有效的最小 CFG 上(如果有)。要查看 CFG 是否有效,您可以推出自己的或从 CFG 派生 PDA,然后 运行 所有输入的 PDA 以查看它是否接受它们。有一些算法可以从您应该能够使用的 CFG 生成 PDA 解析器。
这个过程效率不是特别高,但是很有效,足以说明它是可能的。