1.基本概念
图(graph)
顶点(vertex)
边(edge)
同构(Isomorphism )不改变顶点代表的事物本身,不改变顶点之间的逻辑关系
有向图(Directed Graph)边有方向,可单、双向
无向图( Undirected Graph)
权重(weight)边的权重,可表示距离等
路径(path)不会重复经过同一个点和同一条边的路线
最短路径(shortest path)
环(loop)
连通图(connected graph)任意2个顶点之间都存在路径
连通分量(connected component)最大的连通子图
2.树
定义:连通、无环
概念:
节点(node)
枝(branch)图的边
根(root)任意节点都可以作为根
叶(leaf)无法再分枝的节点
度(degree)某节点拥有子树的数量
层(level)/深度(depth)/高度(height)每个节点离跟的距离
父节点(parent)
子节点(child)
兄弟(sibling)
祖先(ancestor)
后代(descentdant)
森林(forest)
特点:树中任意两点间有唯一路径
三、图的遍历
1.广度优先搜索(BFS,breadth first search)
从某点出发,访问与此点邻近的所有点,再访问与这些相邻点邻近的所有点 ,以此类推
步骤:
1)把起始点放入queue中(队列,先进先出)
2)重复以下步骤,直到queue为空
从queue中取出头点
找出与此点相邻的未被遍历的点放入队列中
2.深度优先搜索(DFS,depth first search)
从某点出发,访问一个邻近点,再访问下一个邻近点,直到再无下一个,则往回找(描述的不太贴切)
步骤:
1)起点放入stack中(栈,后进先出)
2)重复以下步骤,直到stack为空
访问stack的顶点,注意不要取出
找到此点相邻的一个未遍历的点,标记为遍历,并放入stack中
如果此点无未遍历的相邻点,则从stack中弹出