图相关知识

图的概念

有向图、无向图:图G由两个集合V和E组成,记为G=(V,E),其中,V是顶点的有穷非空集合;E是边的集合,边是V中顶点的偶对。如果边是有方向的则称图为有向图,否则称为无向图。偶对<v,w>表示有向图中从顶点v到顶点w有一条边;偶对(v,w)表示无向图中顶点v和顶点w间有一条边。
弧、弧头、弧尾:有向图的边称为弧。<v,w>表示有向图G中从v到w的一条弧,v称为弧尾或始点,w称为弧头或终点。
无向完全图:任何两点之间都有边的无向图。
一个具有n个顶点的无向完全图的边数为Cn2=n(n-1)/2
有向完全图:任何两点之间都有弧的有向图称为有向完全图。
一个具有n个顶点的有向完全图的弧数为。Pn2=n(n-1)
权、带权图:图的边附带数值,这个数值叫权。权在实际应用中可表示从一个顶点到另一个顶点的距离、代价或耗费等。每条边都带权的图称为带权图。
顶点的度、入度、出度:无向图中顶点v的度是与该顶点相关联的边的数目。如果G是一个有向图,则把以顶点v为终点的弧的数目称为v的入度。把以顶点v为始点的弧的数目称为v的出度。有向图中顶点v的度为入度与出度的和。
子图:设G=(V,E)是一个图,若E’是E的子集,V’是V的子集,并且E’中的边仅与V’中的顶点相关联,则图G’=(V’,E’)称为图G的子图。
路径、路径长度:路径上边(或弧)的数目称为路径长度。
简单路径、回路、简单回路:序列中顶点不重复出现的路径称为简单路径。第一个顶点和最后一个顶点相同的路径称为回路或环。除了第一个顶点和最后一个顶点外,其余顶点不重复的回路,称为简单回路或简单环。
连通、连通图、连通分量:在无向图中,如果从顶点V到顶点V’有路径,则称V和V’是连通的。如果图中的任意两个顶点Vi和Vj都是连通的,则称G为连通图。图5-2中G2是一个连通图。图5-5a中存在多个不连通顶点。例如,V0和V3是不连通的,所以G3是非连通图,G3有两个连通分量,如图5-5b所示。连通分量是无向图中的极大连通子图。
生成树:一个连通图的生成树,是含有该连通图的全部顶点的一个极小连通子图。若连通图G的顶点个数为n,则G的生成树的边数为n-1。如果G的一个子图G’的边数大于n-1,则G’中一定有环。相反,如果G’的边数小于n-1,则G’一定不连通。
生成森林:在非连通图中,由每个连通分量都可得到一个极小连通子图,即一棵生成树。那么这些连通分量的生成树就组成了一个非连通图的生成森林。
图的基本运算
  (1)建立图CreateGraph(G,V,E):建立一个图G,其中V是G的顶点集合,E是G的边的集合;
  (2)取顶点信息GetVex(G,u):获取图G中顶点u的信息;
  (3)取边信息Getarc(G,u,v):获取图G中边(u,v)或<u,v>的信息;
  (4)查询第一个邻接点FirstVex(G,u):获取图G中顶点u的第一个邻接点;
  (5)查询下一个邻接点NextVex(G,u,v):已知v是u的一个邻接点,获取图G中顶点u的下一个邻接点;
  (6)插入顶点InsertVex(G,v):在图G中插入一个顶点v;
  (7)删除顶点DeleteVex(G,v):在图G中删除一个顶点v;
  (8)插入边InsertArc(G,v,w):在图G中插入一条边(v,w)或<v,w>;
  (9)删除边DeleteArc(G,v,w):在图G中删除一条边(v,w)或<v,w>;
  (10)遍历图Traverse(G,tag):遍历图G,使G中每个顶点被访问一次且仅被访问一次,当tag=0,则遍历的方法为深度优先搜索,当tag=1,则遍历的方法为广度优先搜索。

邻接矩阵

类型定义

  const int vnum=20;
  typedef struct gp
  {
    VertexType vexs[vnum]; //顶点信息
    int arcs[vnum][vnum]; //邻接矩阵
    int vexnum,arcnum; //顶点数,边数
  }Graph;

M1有向图邻接矩阵示例、M2无向图邻接矩阵示例。
在这里插入图片描述
带权图和它的邻接矩阵
在这里插入图片描述

邻接表

邻接表是顺序存储与链式存储相结合的存储方法。
单链表中每一个结点称为表结点,包括两个域:邻接点域(adjvex)和链域(nextarc),在带权图的表结点中增加一个权值域,用于存储边的权值(weight)
表头结点形式

vertexfirstarc

表结点形式

adjvexnextarc

带权图表结点形式

adjvexweightnextarc

图和示例
在这里插入图片描述
在这里插入图片描述

无向带权图与邻接表
在这里插入图片描述
在这里插入图片描述

图的遍历

深度优先算法
在这里插入图片描述
广度优先
在这里插入图片描述

生成树

连通图的一次遍历所经过边的集合及图中所有顶点的集合就构成该图的一棵生成树。我们知道连通图的遍历序列不是唯一的,所以能得到不同的生成树。
对于有n个顶点的无向图,所有生成树中都有且仅有n-1条边,一个图的最小生成树是图所有生成树中权总和最小的生成树。
构造最小生成树的Prim算法
在这里插入图片描述
构造最小生成树的克鲁斯卡尔方法
在这里插入图片描述

错题

题31图所示为一有向图,试给出该图的邻接表表示及对该图进行拓扑排序的各种可能的拓扑序列。

在这里插入图片描述
在这里插入图片描述

已知一个7×6的稀疏矩阵如题29图所示,试写出该稀疏矩阵的三元组表示。

在这里插入图片描述

在这里插入图片描述

设有向图的邻接表表示如题31图所示,请给出每个顶点的入度和出度。

在这里插入图片描述
在这里插入图片描述

已知如题 32 图所示的无向带权图,请从结点 A 出发,用普里姆(Prim)算法求其最小生成树,并画出过程示意图。

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值