今天从上午8点多来到机房开始看书,把图论的东西复习了一部分。
首先把图的定义又看了一遍,然后开始看图的存储结构,图的存储结构包括两部分:一种是二维数组邻接矩阵存储,另一种是数组模拟邻接表存储,在我看来第一种存储比较通俗易懂,第二种存储方式就比较抽象一点,查阅了很多资料终于把第二种存储搞懂了。
然后看的是图的遍历,图的遍历包括深度优先遍历和广度优先遍历,其实和深搜广搜类似。
还看了一笔画问题(欧拉路和欧拉回路的问题):
欧拉路:通过每条边仅一次,且通过每个顶点的通路。
要求:有且只有两个奇点。
欧拉回路:通过每条边仅一次,且通过每个顶点的回路。
要求:没有奇点。
一笔画问题的解题关键就是通过深搜遍历,去寻找答案。
还有哈密尔顿回路问题:“哈密尔顿回路问题”是访问除原出发结点以外的每个结点一次且仅一次。
欧拉回路和哈密尔顿回路的区别:欧拉回路是指不重复地走过所有路径的回路,而哈密尔顿环是指不重复地走过所有的点,并且最后还能回到起点的回路。
最后看了最短路径问题:这个问题的关键是靠三重循环来结题并且其中循环的先后顺序一定不能搞混(k必须要在最外面一层)。
算法:
for (k = 1; k <= n; k++)
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
If (dis[i][j] >dis[i][k] + dis[k][j])
dis[i][j] = dis[i][k] + dis[k][j];
算法结束:dis[i][j]得出的就是从i到j的最短路径。