【发布时间】:2013-04-18 19:22:01
【问题描述】:
我有一个类似字符串的字符串
s="(=> P (OR (AND A (NOT B)) (AND B (NOT A))))";
并转换它输出这个字符串的CNF,比如
( 或 ( 非 P ) ( 或 A B ) ) ( 或 ( 非 P ) ( 或 ( 非 B ) ( 非 A ) ) )
我是否需要创建一个结构 TreeNode 来保留该值?
struct TreeNode {
string val; // The data in this node.
TreeNode *left; // Pointer to the left subtree.
TreeNode *right; // Pointer to the right subtree.
//TreeNode *farther;//should I use farther or not in convert to CNF?
};
如何使它成为合取范式的CNF? 请给出一些算法细节。 从我的角度来看,也许使用递归函数更好地解决这个问题,但我仍然想不出如何使用递归。或者您有其他解决此问题的建议?
【问题讨论】:
-
请做好自己的工作。当你遇到困难时,问一个具体的问题。但这里有一个提示:“递归下降解析器”。另一个提示:程序需要做的第一件事是什么?
-
我只是想了解一些算法并从中学习一些东西,以便我可以做我自己的工作,我不希望有人为我发布源代码。我确实很难找到有用的信息,但仍然无法弄清楚,这就是我在这里提问的原因,我错了吗?
-
在你写这篇文章的时候,你可能已经用谷歌搜索了“递归下降解析器”并且已经走了很长的路。
-
没有问题,如果您觉得有帮助,请接受答案!
-
丽贝卡,我已经发布了一个答案,应该可以轻松引导您完成一个完整的程序。
标签: c++ c recursion conjunctive-normal-form prefix-tree