图的基本概念
1. 图的构成
有向图:尖括号表示
无向图:圆括号表示
2.顶点的度
无向图中:这个点有几条边度就是几
在有向图中:分为初度和入度,进度和初度加起来。
3.完全图
每对顶点之间都有一条边相连。
在有向图中,每对顶点之间都有两条有向边相连。
4.路径和回路
路径长度:一个点到另一个点经过几条路径
回路:一个点到自己的路径
简单回路:除了起点和终点相同(不走重复点),没有其他元素相同。
5.连通图和连通分量
连通图:每个点到每个点都有路径
对于有向图:
单向连通:A点能到B点,而B点不能到达A点
双向连通为强连通
连通分量:一个图被分开了几部分,其中一部分为一个连通分量
6.网络
网络:图加上权值形成网络
图的存储
邻接矩阵:表示两个顶点之间有没有边。如果有边则用1表示,如果没有边,则用0表示。
PS:无向图的邻接矩阵是对称的,所以有时候用上三角或者下三角来存储,用来节省空间。
在无向图中,边是单方向的。如果有则用1表示,如果没有反方向的边,则用0表示
网络的邻接存储方式:在基础的邻接存储上加上权值。
图的遍历
深度优先遍历:纵向的,类似于前序遍历
首先访问出发顶点v1,然后搜索相邻结点是否被访问过,如果没有被访问过,则从改点出发继续深度优先遍历。
广度优先遍历:横向的,类似于层次遍历
首先访问出发顶点v1;然后访问与顶点v邻接的全部未访问顶点w、x、y;然后再依次访问w、x、y邻接的为访问的顶点。
图的最小生成树:
普里姆算法:先选定一个原点,从这个原点着手找距离原点最近的一个顶点,找到这个顶点之后并入原点形成一个集合,如果这个集合中的任一顶点距离原来的路径比较近,则选择现有路径,去除原来路径。
克鲁斯卡尔算法:从边着手(从最小的边画起)
先把所有的顶点写出来,把最小的边依次添加进去。如果让这些顶点能形成环路,则不要此边。
当边为n-1条时,结束。
4236

被折叠的 条评论
为什么被折叠?



