算法复杂度分析的范例


16

最坏情况分析和平均情况分析是算法复杂度的众所周知的度量。最近,平滑分析已成为另一个范式,用以解释为什么某些在最坏情况下呈指数形式的算法在实践中能很好地工作,例如单纯形算法。

我的问题是-还有其他范式来衡量算法的复杂性吗?我对尝试解释为什么某些具有最坏情况的最坏情况复杂度的算法在实践中能很好地工作的算法特别感兴趣。

Answers:


21

最坏情况分析的自然变体也很有用。也许最著名的一个是参数化的复杂性。在这里,我们考虑“二维”测量:通常的输入长度和一些其他的非负整数(参数)。即使算法在最坏的情况下(对于和所有值)都可能可怕地运行,也可能是某个应用程序中所有需要解决的情况,该参数恰好很低,因此算法运行良好在那些情况下。ñķñķķ

例如,假设您要解决某类图上的最大独立集,并开发出一种令人惊讶的快速有趣算法。进一步研究图本身,您发现您检查的所有图恰好具有最多树宽。好吧,Bodlaender(参见Neidermeier [1])表明,当树宽为k时,最大独立集是固定参数易处理的:可以在时间内求解。这可以解释为什么您的算法运行良好。10Ø2ķ|Ë|+|V|

[1] R. Niedermeier,邀请参加固定参数算法。牛津数学及其应用系列讲座,牛津大学出版社,牛津,2006年。


15

存在摊销的复杂性-为什么某些操作在最坏的情况下可能会付出高昂的代价,但是如果考虑许多操作,则每项操作的平均成本是好的。

一个典型的例子是一个数据结构,当数据结构已满时,它会通过将其所有元素复制到某个存储中来清空自身。复制操作可能会很昂贵,但它并不经常发生-您必须在数据结构中插入足够的元素才能激发它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.