当前位置:  开发笔记 > 人工智能 > 正文

二叉树的排列

如何解决《二叉树的排列》经验,为你挑选了0个好方法。

考虑二叉树:

    Ñ是一个节点,如果Ñ是整数

    (+ a b)是节点,如果ab是节点.

我们有以下三个操作:

    (+ a b) - >(+ b a)

    (+(+ a b)c) - >(+ a(+ b c))

    (+ a(+ b c)) - >(+(+ a b)c)- (2.反向)

我需要一种算法来使用这些操作给出给定树的所有可能的排列.任何操作都可以应用于任何子树.对于排列,我的意思是任何具有完全相同的叶子集的树.这可能不是很困难,但我似乎无法弄明白.

[编辑]叶子也可以是名称(即变量),因此不能选择依赖于它们的属性作为整数.树确实代表了总和.

[编辑2]这个练习的要点是通过找到形式A-A的术语来减少总和,调整树以使它们进入子树(+ A -A)以消除它们.上面的三个操作是我系统中的公理,它们需要一直使用,否则无法证明简化树等于原始树.由于我使用的是Twelf逻辑编程语言,如果我能找出算法来做我最初提出的问题,其余的就很容易了,但是替代解决方案当然是受欢迎的.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有