Parsing 多项式的正规化

Parsing 多项式的正规化,parsing,normalization,algebra,polynomials,computer-algebra-systems,Parsing,Normalization,Algebra,Polynomials,Computer Algebra Systems,我需要读入一个多项式,然后把它转换成规范化的形式例如,我在4*x*(x^2+4x+3)中读取,它必须转换为4*x^3+16*x^2+12*x 是否有一些棘手的算法,或者我必须自己想一些事情。我认为这基本上只是扩大了这个术语。 我递归地解析这个术语并生成一个解析树,因此规范化操作将应用于这个解析树 感谢所有帮助我的人这可以是表示表达式4*x*(x^2+4x+3)的表达式二叉树: 现在你必须将4x与x^2+4x+3相乘,这可以在这样的二叉树中结束,就像我们人类一样:


我需要读入一个多项式,然后把它转换成规范化的形式
例如,我在
4*x*(x^2+4x+3)
中读取,它必须转换为
4*x^3+16*x^2+12*x

是否有一些棘手的算法,或者我必须自己想一些事情。我认为这基本上只是扩大了这个术语。 我递归地解析这个术语并生成一个解析树,因此规范化操作将应用于这个解析树

感谢所有帮助我的人

这可以是表示表达式
4*x*(x^2+4x+3)
表达式二叉树

现在你必须将
4x
x^2+4x+3
相乘,这可以在这样的二叉树中结束,就像我们人类一样:

                     +
                /         \ 
              +              *
          /       \        *    3   
       *             *    4 x     
     /  \           /  \        
   *     ^        *     *       
 4  x   x  2    4  x   4  x    
然后继续将数字相乘并添加指数。您必须搜索树中的每个运算符,并查找其子代以应用相应的代数规则


希望这有帮助。

答案隐藏在矩阵中……没有复杂的算法。恐怕你得想一想。生成树后,你必须建立一套规则来修改树(乘法多项式、添加指数等)。正如@Paul所说,这不是一件容易的事情。
                     +
                /         \ 
              +              *
          /       \        *    3   
       *             *    4 x     
     /  \           /  \        
   *     ^        *     *       
 4  x   x  2    4  x   4  x