关于图的DFS的时间复杂度分析:
DFS是递归函数,一共调用n次,n为定点数,每次访问其对应的临界点,设为ei
若是临界表,因为循环遍历list。总的基本操作次数 n+sum(e1+...en)=n+e, 故O(n+e)
拓扑排序里面,经过静态链栈优化后,邻接表为O(n+e), 而邻接矩阵依然为O(n^2)。比普通数组有优势的。
如果是邻接表的话,静态链栈O(n+e),普通数组已然O(n^2) 因为每次都要遍历indegree数组,尽管是访问点得list,但是n>=list长度,所以静态链栈胜出。
如果matrix话,都是O(n^2)因为静态链栈也要遍历n次,所以如何将复杂度呢?使得这里面操作的最大值最小,时间复杂度是看上界的,一个n循环,就是O(n)了。
另外还有fawks大牛指导复习的文件重定向
DFS是递归函数,一共调用n次,n为定点数,每次访问其对应的临界点,设为ei
若是临界表,因为循环遍历list。总的基本操作次数 n+sum(e1+...en)=n+e, 故O(n+e)
若是matrix,因为遍历一行,找非-1,且未visit,所以(n+1)*n=n^2+n,投O(n^2)
空间复杂度是栈的最大深度,可能线性,全部压站才开始print,O(n)
拓扑排序里面,经过静态链栈优化后,邻接表为O(n+e), 而邻接矩阵依然为O(n^2)。比普通数组有优势的。
如果是邻接表的话,静态链栈O(n+e),普通数组已然O(n^2) 因为每次都要遍历indegree数组,尽管是访问点得list,但是n>=list长度,所以静态链栈胜出。
如果matrix话,都是O(n^2)因为静态链栈也要遍历n次,所以如何将复杂度呢?使得这里面操作的最大值最小,时间复杂度是看上界的,一个n循环,就是O(n)了。
PS:和曹老师交流,老师呵了我三下,我瞬间萌化了~~~~
另外还有fawks大牛指导复习的文件重定向
Linux Shell 重定向 ./aplusb < input.txt >output.txt
其实windows bat文件也是这么写的,一般输入数据多写这个比较方便,面的一遍遍手术,就是不好debu