图和树一样,是一种十分重要的算法思想,是很多算法比如floyd算法,Dijkstra算法等的实现基础
一、节点和边
节点和边是图的基本组成部分,以公交路线图为例,每一个站点相当与图的节点,连接每一个站点的路线相当与图的边
二、有向图与无向图
图的边的方向性决定了这张图是有向图还是无向图,无向图中两个有边相连的节点是可以双向连接的,有向图则不一定,算法导论中有如下两张图
第一张图代表一个无向图和它的数据表示,第二张图代表一张有向图和它的两种数据表示
三、图的数据表示
上面两种是图的两种典型的表示方法,一种是邻接链表,一种是邻接矩阵,邻接矩阵很直观也很容易编程实现。个人很喜欢邻接矩阵的表示方法。
而且,邻接矩阵可以直接表示权重图,权重图中边具有权重属性,比如公交路线途中,站点之间的距离可以用权重表示。邻接矩阵可以很方便的给每条边赋予相应的权重。
四、待续
这些就是图的最基本概念,更深入一点的还有子图,环,生成树,最小生成树等概念,有时间再结合相关算法继续整理