我有一个数量由以下多个总和和产品给出:
其中和是向量,t = 0,1,...,N-1。
例如,如果N = 4,则对应于i = 2的量是
a和b的元素可以任意小。因此,我想避免分歧。问题是,我不能为我的生活制作一个算法来计算这个,即使是以最直接的方式(虽然速度是一个问题,所以我想要一个快速的)。有什么指针吗?
答案 0 :(得分:1)
我认为你可以使用动态编程在O(t.N)周期中计算出来。
这个想法是计算一个与你的e(i,t)完全相同的数量f(i,t,n),除了第一个和N被n代替。
如果t == 0,我们将f(i,t,0)定义为1,否则定义为0。
我们可以通过考虑索引n处的位置是“a”,“b”还是跳过的情况来计算基于先前值的f(i,t,n)。
If n==i
f(i,t,n)=f(i,t,n-1)
else
f(i,t,n)=f(i,t,n-1).a_n+f(i,t-1,n-1).b_n
答案由e(i,t)= f(i,t,N)给出。
我们将为每个t和n选择计算中间值,因此总体复杂度为O(tN)。
例如,
f(2,0,1) = a_1
f(2,0,2) = a_1.a_2
f(2,0,3) = a_1.a_2.a_3
f(2,1,1) = b_1
f(2,1,2) = f(2,1,1).a_2 + f(2,0,1).b_2 = b_1.a_2+a_1.b_2