图总结

思维导图

重要概念笔记

图的存储结构

邻接矩阵

1.顶点信息:记录各个顶点信息的顶点表
2.边或弧信息:各个顶点之间关系的邻接矩阵
#define MAXV
typedef struct
{
  int no;
  InfoType info;
}VertexType;

typedef struct
{
  int edges[MAXV][MAXV];
  int n,e;
  VertexType vex[MAXV];
}MatGraph;
MatGraph g;

邻接表

typedef struct Vnode
{
  Vertex data;
  ArcNode *firstarc;
}VNode;

typedef struct ANode
{
  int adjvex;
  struct ANode *nextarc;
  InfoType info;
}ArcNode;

typedef struct
{
  VNode adjlist[MAXV];
  int n,e;
}AdjGraph;
AdjGraph *G;

图的遍历

深度优先遍历的过程:

1.从图仲某个初始顶点v出发,首先访问初始顶点v
2.选择一个与顶点v相邻且没被访问过的顶点w为初始顶点,再从w出发进行深度优先搜索,直到         图中与当前顶点v邻接的所有顶点都被访问过为止

广度优先遍历的过程:

1.访问初始点v,接着访问v的所有未被访问过的邻接点
2.按照次序访问每一个顶点的所有未被访问过的邻接点
3.以此类推,直到图中所有顶点都被访问过为止

生成树和最小生成树

最小生成树

对于带权连通图G,n个顶点,n-1条边
根据深度遍历或广度遍历生成生成树,树不唯一
其中权值之和最小的生成树称为图的最小生成树

普里姆(Prim)算法

克鲁斯卡尔(Kruskal)算法

最短路径

Dijkstra算法

Floyd算法

拓扑排序

概念:

在一个有向无环图中找一个拓扑排序的过程称为拓扑排序

伪代码

while(栈不空)
{
  出栈节点v
  遍历v的所有邻接点
  {
    所有邻接点的入度-1
    if(邻接点入度为0)
       入栈st
  }
}

AOE-网和关键路径

关键路径:

关键路径为源点到汇点的最长路径

最早开始时间和最迟时间

最早开始时间一定是所求点的前驱时间都已完成
最迟开始时间要保证后继时间能完成,取最小

疑难问题及解决方案

连通图和连通分量

(还没解决)对强连通分量不是很懂,不知道要怎么计算,例如:

posted @ 2020-05-17 13:56  陈小蛋  阅读(172)  评论(0编辑  收藏  举报