在Phrudhvi对于这个问题的优雅回答中(什么是伪多项式时间?它与多项式时间有何不同?),除了许多其他重要观点之外,他指出,在时间复杂度的实际正式定义下,他们的示例算法的时间复杂度是指数级的。
我理解了答案中的一切,除了这一点。在答案中,他的示例算法是O(n^4)。然后,他说时间复杂度的正式定义基于表示n所需的位数。因此,我希望他会说时间复杂度是O(x),其中x是位数。但是,他却说它是O(2^4x)。
我有一个关于为什么我感到困惑以及我认为实际上正在发生的事情的想法。你能告诉我现在我是否正确吗?
这就是我认为自己感到困惑的原因:当 Phrudhvi 正式地说时间复杂度(TC)是基于用于表示输入的位数时,我以为他的意思是解决问题所需的时间每位都是多项式的,也就是人们通常认为 TC 关于 n 的含义,但现在每一位都是线性的。
我理解了答案中的一切,除了这一点。在答案中,他的示例算法是O(n^4)。然后,他说时间复杂度的正式定义基于表示n所需的位数。因此,我希望他会说时间复杂度是O(x),其中x是位数。但是,他却说它是O(2^4x)。
我有一个关于为什么我感到困惑以及我认为实际上正在发生的事情的想法。你能告诉我现在我是否正确吗?
这就是我认为自己感到困惑的原因:当 Phrudhvi 正式地说时间复杂度(TC)是基于用于表示输入的位数时,我以为他的意思是解决问题所需的时间每位都是多项式的,也就是人们通常认为 TC 关于 n 的含义,但现在每一位都是线性的。
然而,我现在假设他的意思是正确的,即:即使在时间复杂度的正式定义中,他的示例和算法所需的时间确实基于输入大小 n,并且在他的示例中为 O(n^4)。然而,n 的大小随着 x 的增加呈指数级增长。
这两种时间复杂度的表达都是准确的 - 但由于时间复杂度的正式定义希望将所需时间 O(n^4) 表达为 x 的函数,并且 n 随 x 的增加呈指数级增长,因此在 x 方面,正式的 TC 是 O(2^4x)。
这样对吗?非常感谢!