请问波波老师,一个大型系统算法复杂度问题
来源:2-3 简单的复杂度分析
慕九州6241723
2018-06-05
请问波波老师,对于算法复杂度的是针对一个算法,那对于一个大型系统的操作,经过很多相关系统的调用,这种怎么计算算法复杂度。有时看起来没有多复杂的算法,但就是跑起来慢,这是啥原因呢,谢谢
写回答
1回答
-
liuyubobobo
2018-06-05
通常不会对一个大型系统计算算法复杂度,而只会对其中的具体某个算法模块计算算法复杂度。因为对一整个系统计算算法复杂度通常意义不大,系统算法复杂度无法揭示优化方向。但是对其中的一个具体的子算法看算法复杂度是有意义的。比如一个处理过程,有两个模块A和B,A的复杂度是O(n),B的复杂度是O(n^2),我们就知道了,我们的整个处理过程的瓶颈在B模块,我们的优化重点就可以放在B模块上。当然,在这个例子里,你可以对整个系统计算算法复杂度,他的复杂度是O(n^2)。但是这个O(n^2)其实湮灭掉了很多信息。
对于你描述的“没有多复杂的算法”,我不确定你是否描述的准确。如果你描述的准确的话,很多时候恰恰相反,越简单的算法越低效,而越复杂的算法越高效。以排序为例,选择排序最为简单,但是是相当低效的;而快排复杂很多,但同时也是高效的。我们发明那么多“复杂”的数据结构,或者机制,或者算法,恰恰是为了更高效。所以我们不能用算法的复杂与否来看算法的性能,还是要逐个模块分析算法复杂度,找到系统跑的慢的瓶颈在哪里:)
加油!
012018-06-06
相似问题