作者FRAXIS (喔喔)
看板Grad-ProbAsk
標題Re: [理工] [資結]-時間複雜度
時間Wed Dec 16 16:56:22 2009
※ 引述《polomoss (小澤)》之銘言:
: (a)
: k=0
: for(i=0;i<N;i++)
: for(j=0;j<i*i;j++)
: for(z=0;z<j;z++)
: k++;
這種轉成summation比較方便
N-1 i*i-1 j-1 N-1 i*i-1 N-1
Σ Σ Σ 1 = Σ Σ j = Σ (i*i-1)(i*i-2)/2 = O(N^5)
i=0 j=0 z=0 i=0 j=0 i=0
: (b)
: k=0
: for(i=1;i<N;i++)
: for(j=1;j<i*i;j++)
: if(j%i==0)
: for(z=0;z<j;z++)
: k++;
N-1 i*i-1 j-1 N-1 i*i-1 N-1 i-1 N-1
Σ Σ [j%i==0] Σ 1 = Σ Σ [j%i==0] * j = Σ i Σ j = Σ i * (i+1)*i/2
i=1 j=1 z=0 i=1 j=1 i=1 j=1 i=1
= O(N^4)
: 問題:
: 1.這兩題怎麼計算&答案
: 2.請問for(;;)中間那項"<"跟"<="會影響到複雜度嗎~?
: eg. "<" → O(n) "<=" →O(n^2)
你這兩題不會..
: 還是只會影響到係數?
: 用sigma去計算,從1~n會比從1~n-1來的容易算
: 所以如果不會影響到複雜度,是否可以全部都直接從1~n
: 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.162.50
推 polomoss:謝^ 12/16 18:56
推 polomoss:下面那題的 j%i==0 怎麼變成2個Σ相乘~? 12/16 19:05
→ FRAXIS:[j%i == 0]是一個表示法 當j被i整除時為1 否則為0 12/17 12:36