【问题标题】:Estimating running time for large inputs估计大输入的运行时间
【发布时间】:2010-07-24 12:23:09
【问题描述】:

对于输入大小 N=20,最坏情况运行时间为 O(N^2) 的算法需要 30 秒才能运行。对于输入大小 N=400,相同的算法需要多长时间?

【问题讨论】:

  • 1) 请用 [homework] 标签标记作业。 2)请乘以并发布您得到的结果,以便我们对您的答案发表评论。这不是www.do_my_homework_for_me.com
  • 渐近行为没有说明N的特定值所花费的时间。如果你将所涉及的数学概念的定义展开得足够远,你会得到类似“forall epsilon,存在 N 使得……”之类的东西。如果给你这个作业的老师没有告诉你 epsilon 20 的 N 是多少,他就没有给你回答问题的必要信息。或者也许他做到了,他希望得到“不可能说”的答案。
  • 这不是家庭作业。我在准备面试时遇到了这个问题,想知道这个问题的有效性,因此决定求助于我所知道的最好的程序员资源——stackoverflow

标签: runtime complexity-theory


【解决方案1】:

O(n^2) 意味着与 n 的平方成比例(参见this guide)。所以

 T = K (n^2)
30 = K (20^2)
 K = 30 / 400

因此需要 400 个项目

   = (30 / 400)( 400 ^ 2 )

所以 12000 秒。

现在,这不一定是正确的,除非您知道最初的 20 项测试是最坏的情况,如果不是,那么我们对 K 的估计很差。即使我们对 K 的估计很好,所以我们我们知道 400 个项目的最坏情况,但我们不知道这 400 个项目会花费那么长时间。

【讨论】:

  • 谢谢,我想这只是有助于确定运行时间的上限。
  • 请注意我关于原始“20 需要 30 秒”数据的观点。除非有某些理由知道这个 一个最坏情况的输入集,否则你实际上并没有建立一个上限。
  • 啊,没想到。谢谢,我现在有点清楚了,我很容易错过这一点。
猜你喜欢
  • 1970-01-01
  • 2021-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
  • 2017-11-16
相关资源
最近更新 更多