求和运行时算法分析

时间:2015-04-09 04:38:23

标签: algorithm runtime analysis

我在努力解决这个问题。以前的问题我没有遇到任何问题。现在这个是我需要做的。

我正在尝试使用求和来派生运行时的表达式。 然后解决它们以获取表达式 没有用求和写的T(n)或T(n,m)。 我想计算println作为任何变量n和/或m的函数执行的次数。

I hope someone can help me out.! Thank You

任何帮助都会有所帮助。他在这里谈到的数学技术是什么?如果我知道

,我会搜索并做更多的研究

2 个答案:

答案 0 :(得分:0)

我相信术语"某些数学技术"是指http://en.wikipedia.org/wiki/Master_theorem

答案 1 :(得分:0)

您有以下 while循环

int i = n;
while (i >= 1){
    System.out.println("tick");
    i = i/2;
}

我们可以将其重写为 for循环,以及下面的示例:

int i;
for(i=n; i<= 1; i= i/2){
    System.out.println("tick");
}

让我们进行一些迭代,我们将给出&#39; n&#39;一个值,并查看print语句的执行次数。

Value of 'n'   #Executions of the print statement   
n=1            1 
n=2            2
n=3            2
n=4            3
n=5            3
n=6            3
n=7            3
n=8            4

通过上述内容,我们可以了解print语句的执行次数。当&#39; n&#39;看起来执行次数增加了。是2的幂。所以,让我们看一下2的幂的迭代次数。

Value of 'n'    #Executions of the print statement
n=1             1
n=2             2
n=4             3
n=8             4
n=16            5
n=32            6

好的,我们现在可以看到另一种模式,因为2的幂增加1,例如2 ^ 1,2 ^ 2等。迭代次数增加1,所以让我们重写上面的内容:

Value of 'n'   #Executions of the print statement
n=1 = 2^0      1
n=2 = 2^1      2
n=4 = 2^2      3
n=8 = 2^3      4
n=16 = 2^4     5
n=32 = 2^5     6

所以看起来我们可以把第二个引出来,只需添加一个来获得print语句的执行次数。例如,当n = 32时,我们将此数字更改为2的幂,如2 ^ 5,然后我们将数字改为&#39; 2&#39;被提出的是&#39; 5&#39;并向它添加1 5 + 1以获得6的迭代次数。

因此,可用于解决此循环的函数是: f(n)=(log 2 n)+ 1

您还可以使用求和来计算 while循环的函数。 您可以看到一些examples用于将循环更改为汇总。