第六章学习小结
一.图的构建
1.邻接矩阵:
#define Maxint 32767
#define MVNum 100
typedef char VerTexType;
typedef int ArcType;
typedef struct
{
VerTexType vexs [MVNum] ;
ArcType arcs[MVNum) [MVNum);
int vexnum,arcnum ;
} AMGraph;
2.邻接表
#define MVNum 100
typedef struct ArcNode
{
int adjvex;
struct ArcNode * nextarc;
Otherinfo info;
}ArcNode;
typedef struct VNode
{
VerTexType data;
ArcNode *firstarc;
} VNode,AdjList[MVNum];
typedef struct{
AdjList vertices;
int vexnum,arcnum;
}ALGraph;
二.图的遍历
BFS(广度优先搜索):已知图G=(V,E)和一个源顶点s,广度优先搜索以一种系统的方式探寻G的边,从而“发现”s所能到达的所有顶点,并计算s到所有这些顶点的距离(最少边数),该算法同时能生成一棵根为s且包括所有可达顶点的广度优先树。对从s可达的任意顶点v,宽度优先树中从s到v的路径对应于图G中从s到v的最短路径,即包含最小边数的路径。
DFS(深度优先搜索):深度优先算法是一种用于遍历图的算法。这个算法会尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。
三.最小生成树
学习了Prim算法和Kruskal算法。各有其特点,Prim算法针对顶点进行生成,Kruskal算法针对边进行生成。
Dijkstra算法用于求最短路径。