计算翻牌次数



对于以下伪代码;我认为翻牌数是 2n^3。但是,我不确定这是否正确,因为 for 循环让我对此表示怀疑。(注:aij 和 xij 分别表示矩阵 A 和 X 的条目)

for   =1:  
  for   =1:  
    for   =  :  
        =  +      *          
    end
  end
end

这不是一个真正的 matlab 问题。这是一种蛮力解决方式。

内部方程有两个翻牌,因此k循环有2(n-j+1)个翻牌。

要完成其余的工作,了解从1pq总和是p(p+1)/2的,从1pq^2p(p+1)(2p+1)/6

j循环对于从1ij2(n-j+1),所以它有2i(n+1)-i(i+1)=2i(n+1/2)-i^2次翻牌。

总体或i循环是2i(n+1/2)-i^2的总和,给出n(n+1)(n+1/2) - n(n+1)(2n+1)/6 = n(n+1)(2n+1)/3

您可以看到,这与2i^21n之和相同。

检查这一点的一种方法是,例如在 matlab 中,设置一些n,并将f=0放在开头并用f=f+2;替换内部方程,然后结果将是f=n(n+1)(2n+1)/3

相关内容

  • 没有找到相关文章

最新更新