假设我写了一个程序,其中包含一个具有指数运行时的算法,然后通过一个足够大的数据集来运行该程序,在该数据集中它将无法完成多年。
电脑怎么了? 会锁定吗? 它会以100%的容量运行,直到它完成或电源关闭? 硬件在完成之前是否会失败?
如果你还没有猜到,我正在做关于时间复杂性的作业。这不是一个家庭作业问题。这只是我随意的想法。
答案 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或停电。