我的问题不是关于某些特定代码,而是理论上的问题,因此,如果不是在此发布的正确位置,请事先道歉。
给出一个特定的问题-为了讨论起见,让它成为一个置换问题-输入大小为N,P为计算1个置换所需的恒定时间;在这种情况下,我们需要大约T =〜(P)*(N!)= O(N!)时间才能得出所有结果。如果我们的算法花费的时间远远超过预期的时间,则可以安全地假设它没有终止。
例如,对于P = 0.5秒,N = 8,⇒T = 0.5 * 8! = 20.160秒。任何高于T的值都是“可疑”时间。
我的问题是,如何在运行时间无限增加的同时引入渐近达到1的概率函数?
我们的“评估”将取决于恒定时间P,输入的大小N和当前问题的时间复杂度Q,因此它可能具有以下形式: f(P,N,Q) = ... ,而0≤f≤1,f增加,f表示在非终止状态下“倒下”的可能性。
如果这种方法还不够,我们如何确保经过一定时间后,我们的程序可能会无休止地运行?