从CLRS算法书中给出以下问题。
对于下表中的每个函数f(n)和时间t,确定 假设,在时间t内可以解决的问题的最大尺寸n 解决问题的算法需要f(n)微秒。
答案 0 :(得分:0)
提到算法需要f(n)微秒。然后,可以认为该算法由f(n)个步骤组成,每个步骤需要1微秒。
给出的问题表明相关的f(n)值受1秒的约束。 (即10 6 微秒)然后,既然你正在寻找最大的n来满足这些条件,你的问题归结为下面给出的不等式。
1) f(n)= nlog(n)< = 10 6
2) f(n)= n! < = 10 6
其余的,我相信,主要是用代数和对数方程来找到相关的值。
答案 1 :(得分:0)
在第一种情况下,您可以参考Example of newtons method to calculate cube root牛顿法来近似根或Lambert W Function。这可能有助于计算n的值。根据我的发现,大多数情况下没有其他分析方法可以帮助您。
在第二种情况下,python脚本可以通过手动操作来帮助计算n。
def calFact(n):
if(n == 0 or n==1):
return n
return n*calFact(n-1)
nVal=1
while(calFact(nVal)<1000000): # f(n) = n! * 10^-6 sec
nVal=nVal+1 # 10^6 = n!
print(nVal)
因此,在这种情况下,我们试图找出n这样n!等于或接近10 ^ 6。