【问题标题】:What are the effects of exponential runtime on a computer?指数运行时间对计算机有什么影响?
【发布时间】:2012-03-29 00:38:11
【问题描述】:

假设我编写了一个程序,其中包含一个具有指数运行时间的算法,然后通过一个足够大的数据集运行该程序,该数据集在多年内都无法完成。

计算机会发生什么? 会被锁吗? 它会以 100% 的容量运行,直到它完成或电源关闭? 硬件在完成之前会发生故障吗?

如果您还没有猜到,我正在做有关时间复杂度的作业。这不是家庭作业问题。这只是我的一个随机想法。

【问题讨论】:

  • 12 月 21 日并不遥远......所以答案取决于您认为之后会发生什么。
  • 到那时,2012 年的末日预言家将与千年虫一样愚蠢。而且,如果我错了,好吧,没有人会指出来:-)
  • 计算机将像任何其他程序一样运行程序直到它完成,这意味着程序将运行直到它 (A) 完成或 (B) 硬件停止运行程序(断电/蓝屏死机/等)

标签: algorithm runtime complexity-theory theory exponential


【解决方案1】:

电脑会怎样?

它将运行算法直到它完成[或出现意外错误]

会被锁起来吗?

这取决于算法是如何实现的——但通常情况下——“程序”可能会冻结,但计算机仍然能够工作 [可能更慢],尤其是在机器是多核的情况下。

它会以 100% 的容量运行直到它完成或电源 关机了?

如果算法是串行实现的,并且机器是多核的 - 它不会以 100% 的容量运行。如果它是多线程的 - 它可能会。

硬件在完成之前会发生故障吗?

对于需要 2^n ops 和 n=1000 [对于现代机器] 的算法 - 它很可能会 [在完成之前地球不会在这里]。但没有任何保证。

重要提示:指数问题的问题不是它们对机器的影响,这不是它们的问题。问题是他们需要很长时间。多久?好吧,对于O(n!) 算法[天真的TSP 实现],对于n == 20,运行时间是~十年。将n 增加一,只是问题大小的一个小变化——你将获得约 200 年的运行时间!一个额外的添加将使它大约 4000 年...... [再次,假设现代现在的机器,对于 c 的常数 O(n!) c >= 1

【讨论】:

  • 最后几段没有意义。如果每个操作需要 2^-1000 秒,我仍然希望地球在那时......是的,我是对的 :-) 请不要将时间 复杂性 与实际运行时间混淆。
  • @paxdiablo:这个说法确实有问题,我试图改写它。这里的问题是 OP 正在就理论复杂性及其实际意义提出问题
  • 很好的答案!这是一个转折点:假设计算机使用旧的 P3 或 P4 处理器。 IIRC那些CPU有加热问题。如果你在这样的计算机上运行算法,理论上你会烧毁处理器和/或导致与热相关的关机吗?
  • @underveil 不。如果您可以通过将 CPU 固定在 100% 来烧毁 P4,那么它们中的任何一个都不会持续到有人尝试在它们上玩的第一场比赛。
  • @underveil:当然可以,但这与编程甚至算法无关。
【解决方案2】:

视情况而定。

但是想象一台硬件永远不会出现故障的理论计算机,那么您当然可以设计出可以运行很长时间的算法。就像,直到宇宙的热寂有点长。

没有什么特别的原因会因为长时间运行而锁定计算机,尽管在典型的操作系统中可能存在错误,这些错误会在长时间运行后导致问题。

【讨论】:

  • 如果你很狡猾,也可以使用虚拟机绕过所有硬件限制。
【解决方案3】:

“时间复杂度”只是获得结果所需的某种时间度量。所以计算机将继续执行,直到它不会以某种方式停止 - 通过 Ctrl^C 或停电。

【讨论】:

    猜你喜欢
    • 2021-08-17
    • 2013-07-19
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 2014-03-18
    • 2011-07-06
    相关资源
    最近更新 更多