第六章学习小结

图的类型定义及存储结构

  本章学习了图的相关知识,明确了图的定义。在学习这一章节的同时学习了图的基本术语,在课上认真听老师讲完之后对这些基本术语都有了较为明确的概念。图的结构比较复杂,没有顺序存储结构,但可以采用邻接矩阵表示法(借助二维数组表示元素之间的关系)、以及邻接表(本质是一维数组)等的图的链式结构。在本章主要学习了邻接矩阵【根据顶点名字查找其在顶点表(vexs)的下标(编号)】、邻接表(根据顶点名字查找其在顶点表(vertices.data)的下标(编号)】的表示方法,学习了如何进行存储表示及如何创建图。需注意的是对于任一确定的无向图,邻接矩阵是唯一的,但是邻接表不唯一。

图的遍历

  1. 为了避免同一顶点被访问多次,在遍历图的过程中,必须记下每个已经访问过的顶点。为此可以设置一个辅助数组visited[n],将其初始化为false,一旦访问了顶点vi,便置visited[i]为true。
  2. 根据搜索路径的方向,通常由两条遍历图的路径:深度优先搜索和广度优先搜索。这两个术语听起来虽然很陌生,但在之前我们已接触过,第五章我们所学习的层次遍历便是广度优先搜索。
  3. 学习深度优先搜索图,要注意遍历的图是连通图还是非连通图,掌握了深度优先搜索连通图的算法后,对于非连通图的操作只需在DFS算法外打包一个循环,每调用一次DFS算法将遍历一个连通分量,有多少次调用就说明图中有多少个连通分量。
  4. 广度优先搜素遍历则类似于树的按层次遍历过程,需要利用队列,让起始顶点入队(队列的初态:起始顶点;终态为空队列)。对于一个准备入队的顶点可以有两钟操作:(1)直接入队 (2)先访问再入队 。和深度优先搜索类似,广度优先搜索在遍历过程中也需要一个访问标志数组visited[n]。

最小生成树

  1. 构造最小生成树的算法:普里姆算法(依赖于点)和克鲁斯卡尔算法(依赖于边的数量)
  2. 在学习过程中,首先需要明确最小生成树的概念,最小生成树是在一个连通网的所有生成树中,各边的权值之和最小的那棵生成树。刚开始听到两个算法有点懵,但是上课的时候一直跟随着老师的思路,老师列举的例题,现在对这两个的算法有一定的了解,能够画出最小生成树。

最小路径:

  1. 常见问题:求从某个源点到其余各顶点的最短路径;求每一对顶点之间的最短路径。
  2. 要注意最短路径的判断要根据应用场景,看是按照边的数量少还是权值之和小。

  感觉迪杰斯特拉算法理解起来会比较难,老师刚讲的时候基本听不懂,后面老师根据实际例子带着我们一点一点的学,总算是明白了这个算法。这星期上课状态比较好,老师教的基本上能够理解运用。下周目标:希望上课的时候思维能一直保持活跃,紧跟老师的思路,把上课学的学好,课后多回顾运用。

posted @ 2019-05-19 14:01  0000007  阅读(138)  评论(1编辑  收藏  举报