四、函数 ⌈ lg n ⌉ ! \lceil \lg n \rceil ! ⌈lgn⌉! 多项式有界吗?函数 ⌈ lg lg n ⌉ ! \lceil \lg \lg n \rceil ! ⌈lglgn⌉! 多项式有界吗?
文心一言:
chatgpt:
对于第一个问题,函数 ⌈ lg n ⌉ ! \lceil \lg n \rceil ! ⌈lgn⌉! 是阶乘的形式,可以证明它是超多项式增长的,因此不是多项式有界的。
对于第二个问题,函数 ⌈ lg lg n ⌉ ! \lceil \lg \lg n \rceil ! ⌈lglgn⌉! 的增长速度比 ⌈ lg n ⌉ ! \lceil \lg n \rceil ! ⌈lgn⌉! 慢很多。虽然 ⌈ lg lg n ⌉ ! \lceil \lg \lg n \rceil ! ⌈lglgn⌉! 不是多项式,但是它是多项式有界的,也就是说,存在一个多项式 p ( n ) p(n) p(n) 和常数 c c c,使得当 n n n 足够大时, ⌈ lg lg n ⌉ ! ≤ c ⋅ p ( n ) \lceil \lg \lg n \rceil ! \leq c \cdot p(n) ⌈lglgn⌉!≤c⋅p(n)。这可以使用斯特林公式来证明。
五、如下两个函数中,哪一个渐进更大些: lg ( lg ∗ n ) \lg(\lg^* n) lg(lg∗n)还是 lg ∗ ( lg n ) \lg^*(\lg n) lg∗(lgn)?
文心一言:
chatgpt:
在这里,我们将 lg ∗ n \lg^* n lg∗n 和 lg ∗ ( lg n ) \lg^*(\lg n) lg∗(lgn) 看作一个函数 f ( n ) f(n) f(n) 和 g ( n ) g(n) g(n),分别表示对数幂函数的不同变形。
首先,我们知道对数幂函数增长非常缓慢,它们比多项式增长更慢,但比指数增长更快。因此,我们可以考虑使用渐进符号来比较这两个函数的上界关系。
由于 lg ( lg ∗ n ) = Θ ( lg f ( n ) ) \lg(\lg^* n) = \Theta(\lg f(n)) lg(lg∗n)=Θ(lgf(n)) 和 lg ∗ ( lg n ) = Θ ( lg g ( n ) ) \lg^*(\lg n) = \Theta(\lg g(n)) lg∗(lgn)=Θ(lgg(n)),因此我们只需要比较 f ( n ) f(n) f(n) 和 g ( n ) g(n) g(n) 的增长速度即可。
根据定义,对数幂函数 f ( n ) f(n) f(n) 表示在连续对数的情况下,最后得到的结果为 1 所需的次数。而对数幂函数 g ( n ) g(n) g(n) 表示对数字 n n n 进行重复对数直到结果小于或等于 1 的次数。因此, lg ∗ ( lg n ) \lg^*(\lg n) lg∗(lgn) 可以看作是 log \log log 函数的反函数,而 lg ( lg ∗ n ) \lg(\lg^* n) lg(lg∗n) 则表示连续应用反函数的次数。
由于反函数的增长速度要快于原函数,因此可以推断出 lg ∗ ( lg n ) \lg^*(\lg n) lg∗(lgn) 的增长速度要快于 lg ( lg ∗ n ) \lg(\lg^* n) lg(lg∗n),也就是说 lg ∗ ( lg n ) \lg^*(\lg n) lg∗(lgn) 是渐进更大的函数。
因此, lg ∗ ( lg n ) \lg^*(\lg n) lg∗(lgn) 的渐进增长速度要快于 lg ( lg ∗ n ) \lg(\lg^* n) lg(lg∗n)。