是否有合理的方法可以在不使用二叉树的情况下制作完整的计算机代数系统(代数方程,极限,导数,积分)?
答案 0 :(得分:1)
Maple使用Directed acyclic graph(DAG)。它仍然是具有节点和链接的树状结构,但是如果它们具有共同的子表达式,则两个节点可以具有相同的子节点。二叉树是DAG的一种特殊情况,它是一种特殊类型的图形。
二进制树实际上有点限制。您经常希望每个节点拥有不同数量的子节点:像-x这样的单元运算符,具有不同数量的参数。积分将需要四个子项:被积函数,上限和下限以及积分变量的变量。
如果您知道您的元素将是特定类型,那么其他数据类型可能更合适。例如,如果您正在处理多项式,那么多维数组可能更合适。所以2 x ^ 2 + 3 x - 7可能表示为[7,3,2]。
对于通用系统,我认为你不能脱离某些图形结构。