(2) 写出从顶点A出发进行深度优先遍历和广度优先遍历的遍历序列。
设有向图G=(V,E)顶点集V={V0,V1V2,V3}边集廬{0,v1>0,v2>0,v3>1,v3>}若从顶点V0开始对图进行深度优先遍历,则可能得到的不同遍历序列个数是()【20
请帮忙给出正确答案和分析,谢谢!
先画一个五边形5个顶点依次标为A,BD,CE (注意是D,C不是CD)
你对这个回答的评价是?
图由頂点集V(G)和边集E(G)组成记为G=(V,E)。其中E(G)是边的有限集合边是顶点的无序对(无向图)或有序对(有向图)。
对有向图来说E(G)是有向边(也称弧(Arc))的有限集合,弧是顶点的有序对记为<v,w>,v、w是顶点v为弧尾(箭头根部),w为弧头(箭头处)
对无向图来说,E(G)是边的有限集合边是頂点的无序对,记为(v, w)或者(w, v)并且(v, w)=(w,v)。
顶点v的度:与v相关联的边的数目;
顶点v的出度:以v为起点有向邊数;
顶点v的入度:以v为终点有向边数
简单路径:序列中顶点不重复出现的路径
简单回路:序列中第一个顶点和最后一个顶點相同的路径
在无(有)向图中,若对任何两个顶点v、u都存在从v到u的路径则称图G为连通图(强联通圖)。
极大连通子图:该子图是G连通子图将G的任何不在该子图已知一个图的顶点集加入,子图将不再连通
极小连通子图:该子图是G的連通子图,在该子图中删除任何一条边子图都将不再连通。
无向图G的极大连通子图称为G的连通分量
有向图D的极大强连通子图称为D的强連通分量。
包含无向图G的所有顶点的极小连通子图称为G**生成树**
若T是G的生成树当且仅当T满足:T是G的连通子图、T包含G的所有顶点、T中无回路。
无向图采用邻接表存储的特点:
在G连接表中同一条边对应两个结点。顶点v的度等于 v对应线性链表的长度。茬G中增减边需要在两个单链表中插入、删除结点。
设存储顶点的一维数组大小为m则图G占用存储空间大小为m+2?e
有向图的邻接表:以同一頂点作为起点的弧。出边表e
有向图的逆邻接表:以同一顶点作为终点的弧。入边表e
の前的邻接表都是弧尾相同,弧尾即箭头根部
注意一下与上图的差别,在于頂点结点的指针数量
从图的某顶点v出发,进行深度优先遍历:
由于没有规定訪问邻接点的顺序,所以深度优先序列不唯一
若图为邻接表表示为O(n+e)
深度优先遍历是回溯算法,广度优先遍历时一种分层的顺序搜索过程不是递归。
方法:從v开始深度优先遍历直到找到s。在对v深度优先遍历的过程中首先将v添加到路径中,判断v的值是否为s如果为s,返回真如果不为s,则對v的邻接点进行递归直到找到s为止。如果没找到则将v从路径中删除,返回失败
由于广度優先搜索有路径渐增的性质,所以使用广度优先搜索搜索到终点的路径即为最短路径。应该会需要用一个数组记录每个节点的父节点便于还原路径。
包含无向连通图G所有n个顶点的极小连通子图称为G的生成树
生成树的特点:T是G的连通子图;T包含G的所有顶点;T中无回路;T中有n-1条边。
权之和最小的生成树为最小生成树
0 0
)是一条权值最小的边,其中U0∈U设G=(V,GE)为一个具有n个顶点的连通网络T=(U,TE)为构造的生成树。
4.3 Kruskal算法:将边归并,适用于求稀疏网的最小生成树 O(eloge)
对于有向图中没有限定次序关系已知┅个图的顶点集,则可以人为加上任意的次序关系由此所得顶点的线型序列被称之为拓扑有序序列。
AOV网(Activity On Vertex network)是以顶点表示活动弧表示活动の间的先后关系的有向图。AOV网中不允许有回路不允许某项活动以自己为先决条件。
检测AOV网是否存在环:对有向图构造顶点的拓扑有序序列若图中所有顶点都在该序列中,则AOV网必定不存在环
AOE网(Activity On Edge)用边表示活动的网。它是一个带权的有向无环图
AOE网和AOV网的区别:
AOV网或AOE网构造拓扑序列的方法:
0 其余顶点T=其余顶点u
无向图和有向图都适用,弧的权值必须非负
当然也可以重复执行Dijkstra算法n次。
所有可能存在的路径中选出一条长度最短的路径。