王道DS打卡.图的应用

一.图的性质

1.1.总结无向图、有向图的结点数、边数、度数、连通性、强连通性等性质之间的关系

n为顶点数

无向图

-连通:顶点v到顶点W有路径存在
-连通图:任意两个顶点连通的无向图
-连通分量:无向连通图的极大连通子图
1. 如果有n个顶点,边数<n-1,则此图非连通图
2. 全部顶点的度的和 = 边数的2倍
3. 有n个顶点,并且有 >n-1条边,则图一定有环
4. 边数取值范围从0到n(n-1)/2
5. 边数为n(n-1)/2时,叫完全图
6. 顶点数为n,则它的生成树含有n-1条边
-连通图的生成树是包含全部顶点的一个极小连通子图
7. 保证无向图连通最少边数 = (n-1)(n-2)/2+1        n为顶点数 
8. 非连通无向图的边数 = n(n-1)/2+1-任意顶点的入度 = 出度
9. 无向连通图边数至少为 = n-1

有向图

1. 边数的取值范围为 0~n(n-1)
- 强连通:v->w有双向路径
- 强连通图:任何一对顶点都是强连通的
2. 强连通最少边数2(n-1)

二.图的邻接表定义

2.1.图的邻接矩阵存储

#define Maxsize 500
struct Graph{
   int numVertex;
   int numEdge;
   int edge[Maxsize][Maxsize];
}typedef struct G;

2.2.图的邻接表存储


/*-----------边的定义-------------*/
typedef struct ENode *PtrToENode;
struct ENode{
    Vertex V1,V2;//有向边<V1,V2>
    WeightType Weight; //权值 
};
typedef PtrToENode Edge;
 
/*-----------邻接点的定义-------------*/
typedef struct AdjVNode *PtrToAdjVNode;
struct AdjVNode{
    Vertex AdjV;//邻接点下标
    WeightType Weight;//边的权值 
    PtrToAdjVNode Next;//指向下一个邻接点 
};
 
/*-----------顶点表头结点的定义-------------*/
typedef struct VNode{
    PtrToAdjVNode FirstEdge;//边表头指针
    DataType Data;//存顶点的数据
}AdjList[MaxVertexNum];//AdjList是邻接表类型
 
/*-----------图结点的定义-------------*/
typedef struct GNode *PtrToGNode;
struct GNode{
    int Nv;//顶点数 
    int Ne;//边数 
    AdjList G;//邻接表 
};
typedef PtrToGNode LGraph;

三.图的应用:最小生成树(MST)

 

四.图的最短路径

4.1.基于你设计的带权有向图,从某一结点出发,执行Dijkstra算法求单源最短路径。用文字描述每一轮执行的过程

4.2.文字描述:用BFS算法求单源最短路径的过程 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值