Tra*_*Man 10 language-agnostic algorithm binary-tree
考虑二叉树:
我们有以下三个操作:
我需要一种算法来使用这些操作给出给定树的所有可能的排列.任何操作都可以应用于任何子树.对于排列,我的意思是任何具有完全相同的叶子集的树.这可能不是很困难,但我似乎无法弄明白.
[编辑]叶子也可以是名称(即变量),因此不能选择依赖于它们的属性作为整数.树确实代表了总和.
[编辑2]这个练习的要点是通过找到形式A和-A的术语来减少总和,调整树以使它们进入子树(+ A -A)以消除它们.上面的三个操作是我系统中的公理,它们需要一直使用,否则无法证明简化树等于原始树.由于我使用的是Twelf逻辑编程语言,如果我能找出算法来做我最初提出的问题,其余的就很容易了,但是替代解决方案当然是受欢迎的.