我基本上是在寻找一个求和函数,根据变量和度数来计算多项式。
实施例
2 Variables; 2 Degrees:
x^2+y^2+x*y+x+y+1
感谢。
答案 0 :(得分:4)
参见Knuth 计算机编程艺术,Vol。 4,分册3进行全面解答。
简短回答:它足以在n个变量中生成所有多项式表达式,其中完全 d。然后,对于您的问题,您可以将度数≤d的答案放在一起,或者添加一个虚拟变量“1”。
生成精度为d的所有表达式的问题因此只是生成所有有序分区的问题(即,所有非负整数解到x 1 + ... + x n < / sub> = d),这可以通过简单的回溯算法来完成。 (“深度优先搜索”)
答案 1 :(得分:1)
给定N个变量和最大度数D,你有一个D槽数组来填充所有可能的变量组合。
[_,_,...,_,_]
您可以使用任何N个变量填充插槽,任何数字<= D倍总数。由于乘法是可交换的,因此不关心变量的排序就足够了。因此,这个问题减少到生成(1)整数的分区和(2)集合的子集。
我希望这至少是您解决方案的开始。
答案 2 :(得分:0)
这似乎也是0-1背包问题的动态编程变体。在这里,我们将对决策树的所有可能叶子感兴趣。