渐近符号-n(log n)(log n)是否简化?

问题描述 投票:1回答:4

如果我有一个算法需要n个log n个步骤(例如,heapsort),而这些步骤需要n个log时间(例如,比较/交换范围为0到n-1的“大”整数),那么渐近界是什么整个过程。

显然,我们可以说“ n(log n)(log n)”,但是我很难说服自己不能将其简化为“ n log n”。同时,我很难证明坚持我能做到的本能。

我的直觉在这方面是完全错误的吗?

编辑

似乎我的简单示例来避免使问题复杂化。哦,很好。

这个问题的真正原因是,我经常有一个已知复杂度的标准算法,但是使用不同的底层容器来实现,因此各个步骤是O(log n)而不是O(1)。例如,Hopcrofts自动机最小化算法为O(n log n)-但是,如果您开始使用二叉树容器表示状态,转换和中间结果,则步骤本身将变为O(log n)-O(n log n)为不再有效,因为O(1)访问的假设无效。

仍然,人们会声称存在n个状态和m个过渡,但是n和m对于自动机往往是线性相关的,假设过渡注释的数量是恒定的,并且自动机或多或少是确定性的。] >

过去我对此并不担心太多-我合作的案例并不是很大。但是,嗯,我正在对我的自动机代码进行重大重构,我想我也可以对某些关键算法进行正确的数学运算。

编辑

我也越来越相信“ n(log n)(log n)”是错误的。

如果a是O(b log b),其中b是O(log c),则a在c方面是什么?

如果我有一个算法需要n个log n个步骤(例如,heapsort),而这些步骤需要n个log时间(例如,比较/交换范围为0到n-1的“大”整数),那么渐近界是什么对于...

algorithm theory asymptotic-complexity
4个回答
3
投票

这里有矛盾的证明:


5
投票

通常,您不能像这样乘以复杂性:对于堆排序,N表示堆中的项目数,而对于大整数,N可能表示可能值的上限。通常,这些不必关联,因此它是N log N log M(其中M是项可能采用的范围)。


2
投票

您不能将n (log n) (log n)降低到n (log n)仅仅是因为这不是一个恒定因子的降低。


1
投票

好的,程序的一般复杂度度量如下:

© www.soinside.com 2019 - 2024. All rights reserved.