安装
我正在编写一段代码,用于处理关于x
的d
-维度变量的n
次多项式,并遇到了其他人可能曾经面临过的问题。这样的多项式可以由对应于x^alpha
的系数c(alpha)
来表征,其中alpha
是一个长度为d
的多重指数,指定了必须将d
个变量提高到的幂。
维度和阶数完全通用,但在编译时已知,并且可能会很高,例如n = 30
和d = 10
,尽管可能不会同时出现。这些系数是密集的,意味着大多数系数都是非零的。
指定这样一个多项式所需的系数数量是n + d choose n
,在高维中远小于可以填充边长为n
的立方体的n^d
系数。因此,在我的情况下,我必须将系数存储得相当紧凑。这是有代价的,因为检索给定多重指数alpha
的系数需要知道其位置。
问题
是否存在一种(简单直接的)函数,将d
维多重指数alpha
映射到长度为(n + d) choose n
的数组中的位置?
O(d)
时间)。您需要O(d²)
的空间来存储二项式系数,实际上是在内存中存储帕斯卡三角形。如果在编译时不知道d
,则始终可以即时计算三角形(需要O(d²)
时间)。 - Tom De Caluwé