数据结构学习笔记05图 (邻接矩阵 邻接表-->BFS DFS、最短路径)
2016-04-10 23:37
411 查看
数据结构之图
图(Graph)
包含
一组顶点:通常用V (Vertex) 表示顶点集合
一组边:通常用E (Edge) 表示边的集合
边是顶点对:(v, w) ∈E ,其中v, w ∈ V
有向边<v, w> 表示从v指向w的边(单行线)
不考虑重边和自回路
无向图:边是无向边(v, w)
有向图:边是有向边<v, w>
连通:如果从V到W存在一条(无向)路径,则称V和W是连通的
连通图(Connected Graph):如果对于图的任一两个顶点v、w∈V,v和w都是连通的,则称该图为连通图。图中任意两顶点均连通。
连通分量(Connected Component):无向图中的极大连通子图。
极大顶点数:再加1个顶点就不连通了
极大边数:包含子图中所有顶点相连的所有边
强连通:有向图中顶点V和W之间存在双向路径,则称V和W是强连通的。
强连通图:有向图中任意两顶点均强连通。
强连通分量:有向图的极大强连通子图。
路径:V到W的路径是一系列顶点{V, v1, v2, …,vn, W}的集合,其中任一对相邻的顶点间都有图中的边。路径的长度是路径中的边数(如果带权,则是所有边的权重和)。
如果V到W之间的所有顶点都不同,则称简单路径
回路:起点等于终点的路径
一.邻接矩阵
图的邻接矩阵存储方式就是用一个二维数组来表示。
邻接矩阵G
——N个顶点从0到N-1编号
顶点i、j有边,则G[i][j] = 1 或边的权重
View Code
图(Graph)
包含
一组顶点:通常用V (Vertex) 表示顶点集合
一组边:通常用E (Edge) 表示边的集合
边是顶点对:(v, w) ∈E ,其中v, w ∈ V
有向边<v, w> 表示从v指向w的边(单行线)
不考虑重边和自回路
无向图:边是无向边(v, w)
有向图:边是有向边<v, w>
连通:如果从V到W存在一条(无向)路径,则称V和W是连通的
连通图(Connected Graph):如果对于图的任一两个顶点v、w∈V,v和w都是连通的,则称该图为连通图。图中任意两顶点均连通。
连通分量(Connected Component):无向图中的极大连通子图。
极大顶点数:再加1个顶点就不连通了
极大边数:包含子图中所有顶点相连的所有边
强连通:有向图中顶点V和W之间存在双向路径,则称V和W是强连通的。
强连通图:有向图中任意两顶点均强连通。
强连通分量:有向图的极大强连通子图。
路径:V到W的路径是一系列顶点{V, v1, v2, …,vn, W}的集合,其中任一对相邻的顶点间都有图中的边。路径的长度是路径中的边数(如果带权,则是所有边的权重和)。
如果V到W之间的所有顶点都不同,则称简单路径
回路:起点等于终点的路径
一.邻接矩阵
图的邻接矩阵存储方式就是用一个二维数组来表示。
邻接矩阵G
——N个顶点从0到N-1编号
顶点i、j有边,则G[i][j] = 1 或边的权重
/* 邻接矩阵存储 - 多源最短路算法 */ bool Floyd( MGraph Graph, WeightType D[][MaxVertexNum], Vertex path[][MaxVertexNum] ) { Vertex i, j, k; /* 初始化 */ for ( i=0; i<Graph->Nv; i++ ) for( j=0; j<Graph->Nv; j++ ) { D[i][j] = Graph->G[i][j]; path[i][j] = -1; } for( k=0; k<Graph->Nv; k++ ) for( i=0; i<Graph->Nv; i++ ) for( j=0; j<Graph->Nv; j++ ) if( D[i][k] + D[k][j] < D[i][j] ) { D[i][j] = D[i][k] + D[k][j]; if ( i==j && D[i][j]<0 ) /* 若发现负值圈 */ return false; /* 不能正确解决,返回错误标记 */ path[i][j] = k; } return true; /* 算法执行完毕,返回正确标记 */ }
View Code
相关文章推荐
- 走迷宫问题(待续)
- 数据结构之堆排序
- ES6-新数据结构Set与WeakSet
- ES6-新数据结构Map
- 数组-Find Minimum in Rotated Sorted Array(旋转数组求最小值)
- 算法初探——堆排序
- 高级数据结构(树状数组套主席树):ZOJ 2112 Dynamic Rankings
- 数据结构KMP算法中next函数的求解思想及其解释
- ACM学习历程—广东工业大学2016校赛决赛-网络赛D 二叉树的中序遍历(数据结构)
- 数据结构之字符串
- [Clean Code] Chapter 6: 数据结构 vs 对象!
- 复习笔记——数据结构
- 重学数据结构系列之——图论算法之FloodFill 算法
- 数据结构之二叉树
- 数据结构与算法09 之图
- poj 2528 Mayor's posters
- 给出x.509证书的实例并分析其工作方式
- 数据结构:模板实现栈和队列
- 数据结构之链表
- 数据结构(21)栈与递归应用之汉诺塔递归实现