指数运行时对计算机有什么影响?

时间:2012-03-29 00:38:11

标签: algorithm runtime complexity-theory theory exponential

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

电脑怎么了? 会锁定吗? 它会以100%的容量运行,直到它完成或电源关闭? 硬件在完成之前是否会失败?

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

3 个答案:

答案 0 :(得分:3)

  

计算机会发生什么?

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

  

它会锁定吗?

这取决于算法的实现方式 - 但通常 - “程序”可能会冻结,但计算机仍然可以工作[可能更慢],尤其是如果机器是多核的。

  

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

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

  

硬件在完成之前是否会失败?

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

重要事项:指出问题的问题不是它们对机器的影响,这不是它们的问题。问题是他们需要很长时间。多久?好吧,对于O(n!)算法[天真TSP实现],对于n == 20,运行时间是〜十年。将n增加一,只需对问题大小进行一点改动 - 您就可以获得〜200年的运行时间!额外的加法将使它大约4000年...... [再次,假设现代机器,c O(n!) c >= 1

的常数

答案 1 :(得分:1)

它取决于。

但想象一下理论计算机,硬件永远不会失败,那么你当然可以设计出可以运行很长时间的算法。就像,直到宇宙的热死时间很长。

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

答案 2 :(得分:0)

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