现在我们设定任务为到山东菏泽曹县买牛逼,需要利用深度优先算法(DFS)和广度优先算法(BFS)在中国、省会、市、区县这张大的树中搜索到曹县,那么这个任务Goal就是找到曹县。
假如图的最大路径长度m和最大分支因子b
先用DFS计算时间复杂度和空间复杂度
时间复杂度(算法对大小为n-T的实例执行基本操作的次数(n)):
考虑最坏情况,也就是说我们找了整张中国地图的区县最后才找到山东菏泽曹县。时间复杂度就是找每个节点这个过程的数量,总共找了的次数,就是图中弧的个数。
按最坏情况每个节点的最大分支因子都是b,从中国到各个省(中国->河南、中国->北京、中国->上海、中国->山东、…)总共由b个弧;从各个省份到市(河南->周口、河南->郑州、山东->济南、山东->菏泽…)总共有b^2个弧;从各个市到各个县区(…)有b ^3个弧;…
按图的最大路径长度m,也就是弧的总数为b+b^2+b ^3 + b ^4 + …+b ^m 数量级是b ^m。
因此用DFS计算时间复杂度是O(b^m)。
空间复杂度(算法用于执行和产生结果的输入值(包括算法)的内存量。