相信內環將運行
t = 1/8 * (N^4 + 6 * N^3 + 7 * N^2 + 2 * N)
倍。
我沒有真正直接解決問題,我擬合了一個4階多項式表達式來準確計算t對於1到50之間的N,希望我能得到精確的擬合。
要計算我用
sum(sum(sum(sum(1,i,k,j+1),j,max(l,k),N),k,1,N),l,1,N)
這應該是實際運行的循環相當於確切噸。
data fit, log scale http://img714.imageshack.us/img714/2313/plot3.png
擬合對於N爲1至50的匹配準確,並計算它對於N = 100使用這兩種方法給出13258775。
編輯: 這次演習採用開放源碼的代數系統maxima完成,這裏的實際源(輸出丟棄):
nr(n):=sum(sum(sum(sum(1,i,k,j+1),j,max(l,k),n),k,1,n),l,1,n);
M : genmatrix(lambda([i,j],if j=1 then i else nr(i)), 50, 2);
coefs : lsquares_estimates(M, [x,y], y = A*x^4+B*x^3+C*x^2+D*x+E, [A,B,C,D,E]);
sol(x):=ev(A*x^4+B*x^3+C*x^2+D*x+E, coefs);
sol(N);
S : genmatrix(lambda([i,j], if j=1 then i else sol(i)), 50, 2);
M-S;
plot2d([[discrete,makelist([M[N][1],M[N][2]],N,1,50)], sol(N)], [N, 1, 60], [style, points, lines], [color, red, blue], [legend, "simulation", sol(N)], [logy]);
compare(nr(100),sol(100));
這並不明顯,你想要實現 - 你可以從問題開始而不是解決方案? – 2010-05-14 06:10:55
@Eli我提出了澄清 – Anycorn 2010-05-14 06:13:32
@aaa:那麼最後一個循環可以用't + = j + 1 - k'或類似的東西代替,但我仍然不知道你在做什麼 – 2010-05-14 06:22:17