图论学习笔记1

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中弹出



猜你喜欢

转载自blog.csdn.net/rona1/article/details/79893741