算出f(n),每个过程所需的单位时间操作的确切数量,作为输入大小n的函数

时间:2014-04-29 19:57:54

标签: algorithm computer-science

我有这两个问题 - 我相信有一个问题已经发布 - 但是没有答案。 我想我已经正确回答了第二个......

有什么建议吗?

计算f(n),每个程序所需的单位时间操作的确切数量 输入大小n的函数

(i) for i<-1 to n do
 for j<-1 to 2n-i do
//a unit cost operation
  ------------------------------ (i) this is i the one i need some help on.
(ii) for i <-1 to n do
 for j <- 2 to (n+i) do
// a unit cost operation

for i: 1 to n do:
 for j: 2 to n + i do:
  unit

现在,让我们说n = 1

 i=1; j: 2 to 2 = 1 times
 total: 1 units

  n=2

i=1; j: 2 to 3 = 2 times
i=2; j: 2 to 4 = 3 times
 total: 2 + 3 = 5 units

 n=3

i=1; j: 2 to 4 = 4 times
i=2; j: 2 to 5 = 5 times
i=3; j: 2 to 6 = 6 times
total: 4 + 5 + 6 = 10 units

  Pattern being f(n) = n^2 +1 , is that right?

1 个答案:

答案 0 :(得分:1)

对于您提到的案例(案例(i)),您可以使用Arithmetic Progressions

在这种情况下,作为第一项= 2 * n-1,最后一项是n,所以所有术语的总和是

S = N / 2 *(N + 2 * N-1)= O(N ^ 2)

对于案例II,第一项=(n + 1-1)= n且最后一项=(n + n-1)=(2 * n-1),因此Sum,S等于,

S = n / 2(第一项+最后一项)= n / 2 *(n + 2 * n-1)= O(n ^ 2)

您必须观察到(i)和&amp; (ii)是相同的。