图(Graph):图G由两个集合构成,记作G=<V,E>  

其中V是顶点的非空有限集合,E是边的有限集合,其中边是顶点的无序对或有序对集合。

无向图(Digraph):在图G中,若所有边是无向边,则称G为无向图;

有向图(Undigraph):在图G中,若所有边是有向边,则称G为有向图;<v,w>,v为弧尾,w为弧头。

混和图:在图G中,即有无向边也有有向边,则称G为混合图;

网络:与边相关的数据成为权,边上带权的图称为网络。

邻接点:边的两个顶点。

关联边:若边e=(v,u),则称顶点v、u关联边e。

顶点v的入度=以v为终点的有向边的数量。

顶点v的出度=以v为起点的有向边的数量。

顶点v的度=v的入度+v的出度

图的所有顶点的度数和=2*边的数量

简单路径:在一条路径中,若除起点和终点外,所有顶点各不相同。

由简单路径组成的回路称为简单回路。

连通图(强连通):在有向(无向)图G中,若对任何两个顶点u、v都存在从u到v的路径。

子图:设有两个图G=(V,E)、G1=(V1,E1),若V1包含于  V,E1 包含于 E,E1关联的顶点都在V1中,则称 G1是G的子图;

连通分量(强连通分量):

无向图G 的极大连通子图称为G的连通分量。 极大连通子图意思是:该子图是 G 连通子图,将G 的任何不在该子图中的顶点加入,子图不再连通。

生成树:包含无向图G 所有顶点的的极小连通子图称为G 的生成树。

极小连通图:该子图是G 的连通子图,在该子图中删除任何一条边,子图不再连通。

生成树含有全部n个顶点,但只有n-1条边。而且没有回路,再加一条边必然形成回路。

在生成树中任意两个顶点间的路径是唯一的。

无向完全图:有n(n-1)/2条边(图中每个顶点和其余n-1个顶点都有边相连)的无向图。

有向完全图:有n(n-1)条边(图中每个顶点和其余n-1个顶点都有弧相连)的有向图。

稀疏图:对于有很少条边的图(e < n log n)称为稀疏图,反之称为稠密图。 

图的存储方法:

邻接矩阵(无向):


无向图的邻接矩阵是对称的。

顶点i的度=第i行(列)中1的个数。

完全图的邻接矩阵中,对角元素为0,其余全部是1。

邻接矩阵(有向):

有向图的邻接矩阵可能是不对称的。

顶点vi的出度=第i行元素之和。

顶点vi的入度=第i列元素之和。

顶点的度=第i行元素之和+第i列元素之和。

优点:很容易实现图的操作。

缺点:空间效率低,特别是稀疏图。

邻接表:


顶点通常按编号顺序将顶点数据存储在一维数组中。

关联同一顶点的边:用线性链表存储。

优点:空间效率高,容易寻找顶点的邻接点。

缺点:判断两个顶点间是否有边或弧,需搜索两结点对应的单链表,没有邻接矩阵方便。

邻接矩阵多用于稠密图的存储,而邻接表多用于稀疏图的存储。

对于任一确定的无向图,邻接矩阵是唯一的(行列号与顶点编号一致),但邻接表不唯一(链接次序与顶点编号无关)。

图的遍历:从图中的某个顶点出发,按某种方法对图中的所有顶点访问且仅访问一次。 

为了保证图中的各顶点在遍历过程中访问且仅访问一次,需要为每个顶点设一个访问标志,用以标示图中每个顶点是否被访问过,访问标志用数组visited[n]来表示。 

图常用的遍历方法有两种:深度优先搜索、广度优先搜索

深度优先搜索(DFS)的基本方法(类似二叉树的先序遍历):从图的某一顶点V0出发,访问此顶点;然后依次从V0的未被访问的邻接点出发,深度优先遍历图,直至图中所有和V0相通的顶点都被访问到;若此时图中尚有顶点未被访问,则另选图中一个未被访问的顶点作起点,重复上述过程,直至图中所有顶点都被访问为止。


广度优先搜索(BFS)的基本方法(类似树的层次遍历):从图的某一顶点V0出发,访问此顶点后,依次访问V0的所有未曾访问过的邻接点;然后分别从这些邻接点出发,广度优先遍历图,直至图中所有已被访问的顶点的邻接点都被访问到;若此时图中尚有顶点未被访问,则另选图中一个未被访问的顶点作起点,重复上述过程,直至图中所有顶点都被访问为止。


最小生成树:如果无向连通图是一个带权图,那么它的所有生成树中必有一棵边的权值总和为最小的生成树。


构造最小生成树:

普里姆Prim算法的基本思想:

设N=(V,{E})是连通网, T=(U,{TE})是N上最小生成树
初始令U={u0},(u0属于V), TE=空集
在所有u属于U,v属于V-U的边(u,v)属于E中,
找一条代价最小的边(u0,v0)
将(u0,v0)并入集合TE,同时v0并入U
重复上述操作直至U=V为止,则T=(V,{TE})为N的最小生成树,共重复n-1次。





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值