在线性结构之间,数据元素之间满足唯一的线性关系。每个数据元素(除第一个和最后一个外)只有一个****直接前趋和直接后继**
在树形结构中,数据元素之间有着明显的层次关系,并且每个数据元素只与上一层中的一个元素,(parenet node)及下一层中的多个元素(孩子节点)相关。
(线性结构、树形结构、图形结构)
在图形结构中,节点之间的关系是任意的,图中的任意两个数据元素之间都有可能相关。因此说,图是一种复杂的非线性结构。
图用G=(V,E)G = (V,E)G=(V,E)表示,其中:
对于一个图,若每条边都是没有方向的。则称该图为无向图。
对于一个图,若每条边都是有方向的,则称该图为有向图。
任意两个节点都有一条边相相连。
有很少边或弧的图,其指标为稀疏因子,若稀疏因子小于0.05,可认为是稀疏图。
有较多边或弧的图。
对于无向图,顶点的度表示以该顶点作为一个端点边的数目,比如上面的无向图,中顶点V3V_3V3的度D(V3)=3D(V_3) = 3D(V3)=3
对于有向图,顶点的度分为入度和出度。某一顶点的度等于其入读和出度之和。
入度表示以该顶点为终点的入边的数目。
出度以该顶点为起点的出边的数目。
换句话说,路径都是从图上的一点出发,到图上另一点的方法。
从图上的一点出发,到图上另一点的方法可能不止一个,即可能有多个路径。
回路也称为环,简单来说,回路是指一条路径的终点和起点为同一个顶点。
无向图中,如果两个节点之间有平行边,容易让人误看作环。
带权重的连通图称为网。
图的相邻矩阵,或邻接矩阵,表示顶点之间的邻接关系。即有没有边。
对于稀疏图,可以采用邻接表存储法。
顶点和边的信息如下:
无向图同一条边,在邻接表中出现两次。
上面的图用邻接表可以表示:
十字链表可以看作是邻接表和逆邻接表的结合。
对应于有向图的每一条弧有一个条目:共有5个域:
图的遍历是给出一个图GGG和其中的任意一个顶点V0V0V0,从V0V0V0出发系统的访问GGG中的所有的顶点,每个顶点访问而且只访问一次。
从一个顶点出发,试探性的访问其余顶点,同时必须考虑到下列情况:
深度优先搜索(简称DFS) 类似于树的先根次序遍历,尽可能先对纵深方向进行搜索:
** 选取一个未访问的点 v0v0v0 作为源点
深度优先遍历的顺序是:
*** 广度优先搜搜**,其遍历过程是:
算法单源最短路径迭代过程:
该算法是贪心法, 不适用于负权值的情况,因为权直当做最小取进来后,不会返回去重新计算,即使不存在负的回路,也可能有在后面出现的负权值,从而导致整体计算错误。
Floyd算法对每对结点之间的最短路径。
用邻接矩阵adj来表示带权有向 图。
图GGG的生成树是一颗包含所有顶点的树,树上的所有权值总和表示代价,那么在GGG的所有的生成树中,代价最小的生成树,称为GGG的最小生成树。
不用太在意,慢慢的总结完整后,开始研究图结构及其存储,全部将其搞定都行啦的样子与打算。
不用太在意,其他的学习,要学会用可以用计算机自动计算出来‘
先助攻研读论文在说其他的样子域打算。