Algorithm 给定时间复杂度,在给定n的情况下,如何计算运行时间?

Algorithm 给定时间复杂度,在给定n的情况下,如何计算运行时间?,algorithm,time,runtime,big-o,time-complexity,Algorithm,Time,Runtime,Big O,Time Complexity,我得到了一个算法,估计时间复杂度T(n)为3*n!+二, 我知道当n=10时算法运行所需的时间是1秒,我希望计算n=20时的运行时间 我对如何处理这个问题有点困惑。我假设,因为n=10,我只是把它插入T(n),它给出了3*(10!)+2,这显然不是1(秒) 有人能给出一些关于如何正确处理这个问题的建议吗?谢谢 正如@MarkRansom在评论中所写的那样,你必须解决这个方程 Runtime(m) / T(m) = Runtime(n) / T(n) 对于运行时(m)。在这种特殊情况下,结果非常

我得到了一个算法,估计时间复杂度T(n)为3*n!+二,

我知道当n=10时算法运行所需的时间是1秒,我希望计算n=20时的运行时间

我对如何处理这个问题有点困惑。我假设,因为n=10,我只是把它插入T(n),它给出了3*(10!)+2,这显然不是1(秒)


有人能给出一些关于如何正确处理这个问题的建议吗?谢谢

正如@MarkRansom在评论中所写的那样,你必须解决这个方程

Runtime(m) / T(m) = Runtime(n) / T(n)
对于运行时(m)。在这种特殊情况下,结果非常大(参见@shapiro.yaacov的评论),不管这个值是否准确

假设您的复杂度为
T(n)=2n²,您测量
n=1000的1秒,这将导致我们

Runtime(2000) = T(2000) ⋅ 1s / T(1000) = 4s
但这并不意味着,您的算法只需4秒钟即可运行。如果您的输入大于特定类型的内存,情况可能会更糟。例如,
n=1000
的输入可能适合缓存。如果
n=2000
的输入不存在,则必须将其存储在RAM中,因此您的运行时间将降低50倍(只需输入一个数字,我不知道RAM比L3缓存慢多少)。
更糟糕的是,如果你有一个巨大的输入,而它不适合RAM,必须存储在硬盘上。

(3*10!+2)/k=1
<代码>(3*20!+2)/k=x
。求解
x
。然后意识到这只是一个估计,唯一确定的方法是测量。@MarkRansom感谢您的回答。我假设我要解第一个方程中的k,然后把它插入方程2中,然后解x?如果时间复杂度是O(3*n!),那么对于n=20,需要几年才能完成。@Phamtrong是正确的。670442449629秒——也就是21259年……感谢大家的帮助!