是从图中的某个初始点v出发,首先访问初始点v,而后选择一个与定点v相邻且没有被访问过的定点w,再以w为初始顶点,重复深度优先遍历 递归调用总次数为n 用邻接表表示图时DFS算法时间复杂度为o(n+e) 用邻接矩阵表示图时DFS算法时间复杂度为o(n^2)
广度优先遍历的过程是首先访问初始点v,而后访问v的全部违背访问过的邻接点v1v2v3v4……,而后再按照v1v2v3v4……的次序访问每个顶点的全部未被访问过的邻接点,以此类推,直到图中全部的和初始点v有路径相通的顶点都被访问过为止 用邻接表表示图时BFS算法时间复杂度为o(n+e) 用邻接矩阵表示图时BFS算法时间复杂度为o(n^2) 以邻接表为存储结构,在用广度优先遍历图时须要咦相似于二叉树的层次遍历方式用环形队列遍历图
采用邻接矩阵存储 取顶点设其它边为侯选边 从侯选边中挑选权值最小的加入生成树 重复上述步骤并按权值不断修改 时间复杂度o(n^2)
按权值递增次序选择合适的边来构造最小生成树 将图中的边按权值从小到大的次序依次选取,若选取的边未使生成树造成回路则加入生成树,不然舍弃,直到生成树中包含(n-1)条边为止 适合稀疏图
时间复杂度o(n^2) 求出最短路径的顶点集合,用S表示 第二组为其他未肯定最短路径的顶点集合,用U表示 源点v到S中各顶点的最短路径长度不大于从源点v到U中任何顶点的最短路长度
采用邻接表做为存储结构 可用于检测图中是否有回路 在一个有向图中找一个拓扑序列的过程称为拓扑排序: 1.从有向图中选择一个没有前驱的顶点并输出它 2.从图中删去该顶点,而且删去从该顶点出发的所有有向边 3.重复上述两步,直到剩余的图中再也不存在没有前驱的顶点为止
队不为空 取队首 v for i=1 to n if 边连通且顶点 i 为访问过 顶点 i 入队, vis[i]=1, 数值++ if v 为该层最后一个结点 将下一层的最后一个结点置为新的层末顶点, degree加一