Algorithm 合取/析取范式可以用二叉树表示吗?

Algorithm 合取/析取范式可以用二叉树表示吗?,algorithm,recursion,binary-tree,automata,conjunctive-normal-form,Algorithm,Recursion,Binary Tree,Automata,Conjunctive Normal Form,我可以找到这个相对的问题 我不太确定这个表达式的CNF二叉树表示会产生什么结果。 A&B&C酒店 AND |- A |- AND |-B |-C 是这样吗?我的基本问题是,CNF二进制表示是否可以在树中有多个AND节点,而不仅仅是一个AND节点作为根。我的理解是,只要其父节点是AND节点,就可以有非根节点和节点 相关问题是什么?这个表示法是最优的吗?或者用一个根和节点的n元树表示它们是有益的?我在这里看到的最优性是wrt构建和遍历树 //根据注释进行编辑。 为简单起见,假设not

我可以找到这个相对的问题

我不太确定这个表达式的CNF二叉树表示会产生什么结果。 A&B&C酒店

AND
|- A
|- AND
   |-B
   |-C
是这样吗?我的基本问题是,CNF二进制表示是否可以在树中有多个AND节点,而不仅仅是一个AND节点作为根。我的理解是,只要其父节点是AND节点,就可以有非根节点和节点

相关问题是什么?这个表示法是最优的吗?或者用一个根和节点的n元树表示它们是有益的?我在这里看到的最优性是wrt构建和遍历树

//根据注释进行编辑。 为简单起见,假设
not(~)
操作符是叶节点A、B或C的一部分。这意味着您需要担心~operator是非叶节点的一部分,当按照Demorgan定律展开时,它可能会改变树结构。

连接的最小值:

使用此命令创建的


对于具有三个输入的简单的
,没有什么需要优化的。节点构建一个链

这取决于你想对这棵树做什么。二叉树对于搜索树很有意义,因为在每个节点上,您的键小于(向左递归)、等于(停止)或大于(向右递归)当前节点中的键。这使得最容易实现的树成为可能,但其他类型的搜索树(例如B树)使用更高程度的分支来优化缓存使用等。在这里,CNF似乎没有任何内在的“二元性”,所以我会使用n元树,除非它引起明显的问题。@Adi GuN CNF/DNF不能通过二元树表示,因为它包括
而不是
,这是一个一元运算符。除此之外,任何由二元运算符组成的表达式(包括但不限于CNF/DNF)都可以通过二元树表示。这是运算符的算术问题,而不是形式问题。@AmiTavory我已经更新了描述。为简单起见,尚未深入到叶节点。@Ami CNF/DNF可以表示为二进制决策图,因为BDD可以转发0和1。@Alex Kemper这可能是真的,但问题似乎是关于带有运算符内部节点的表达式树,而不是BDD(其中变量也可以是内部节点)。虽然这很有趣,但我真的希望操作符在树中流动。BDD可以被认为是一个2对1的多路复用器树。