Algorithm 确定算法的复杂度
假设algo(p)是一个需要θ(p)时间来执行且不改变p的算法。确定以下算法的运行时间复杂性:Algorithm 确定算法的复杂度,algorithm,time,while-loop,complexity-theory,Algorithm,Time,While Loop,Complexity Theory,假设algo(p)是一个需要θ(p)时间来执行且不改变p的算法。确定以下算法的运行时间复杂性: Algo2(n) begin p=1; while p <= n begin algo(p) p=2*p end; end; Algo2(n) 开始 p=1; p要得到一个更容易的问题,可以如下设置: Algo(n) begin p=1, i=1 while p<= n begin algo(p) p=2*p
Algo2(n)
begin
p=1;
while p <= n
begin
algo(p)
p=2*p
end;
end;
Algo2(n)
开始
p=1;
p要得到一个更容易的问题,可以如下设置:
Algo(n)
begin
p=1, i=1
while p<= n
begin
algo(p)
p=2*p
i++
end
end
Algo(n)
开始
p=1,i=1
而p是大θ(n):
它调用algo(p)
O(logn)次,p=1,2,4,…,2^(floor(logn))。
这是θ(1+2+…+2^(floor(logn))=θ(2^(floor(logn+1)-1)=θ(n)。这是不正确的。循环执行了O(logn)次,但整个算法的复杂性,包括对算法的调用,是θ(n)我看错了他的帖子。我会更正我的答案,谢谢你指出。地板到底是什么意思?你是如何从p=p得到log(n)的*2@TwilightSparkleTheGeek阅读Henrik给出的答案,他解释了为什么这个问题的答案是θ(n)。
Algo(n)
begin
i=1
while 2^(i-1)<=n
begin
algo(2^(i-1))
i++
end
end