1.图
有向图
无向图
完全图
六度空间理论
①图的存储结构
● 数组表示法(邻接矩阵) 多用于稠密图
有向网的临界矩阵 (网即有权图)
● 链式表示法(邻接表) 多用于稀疏图
邻接表是不唯一的
逆邻接表 容易计算入度
● 十字链表——用于有向图
● 邻接多重表——用于无向图 解决边的两次存储问题
②图的遍历
■ 深度优先遍历
递归 + 回溯
非连通图的遍历
■ 广度优先遍历
2.图的应用
①最小生成树
生成树:所有顶点均由边连接在一起,但不存在回路的图
最小生成树:各边权值之和最小的生成树
————————————————————————
MST性质:
在生成树构造过程中,图中n个顶点分别属于两个集合:
已经落在生成树上的顶点集:U
尚未落在生成树上的顶点集:V-U
接下来则对应在所有连通U中的顶点和V-U中的顶点的边中选取权值最小的边。
————————————————————————
◆ 普里姆算法 (贪心算法) 适用于稠密图
简单理解:分U和V-U两个集合,然后找最小权值的边进行连通
◆ 克鲁斯卡尔算法(贪心算法) 适用于稀疏图
简单理解:把所有结点放到集合中,找到最小的边依次连接,但是不能生成环,直到n-1条边则表示完成
②最短路径
有向表
◆ Dijkstra 算法——单元最短路径
简单理解:首先起始结点U和其余结点V-U分为两个集合,从起始点找直达最小的边,无法直达的记为无穷大(∞),然后把最小弧的结点加入到起始点的集合U中,然后在找该U集合中的直达结点最小的边,无法直达仍记作为无穷大,然后以此递归寻找
◆ Floyd算法
③拓扑排序
● 有向无环图
无环的有向图,简称DAG图(Directed Acycline Graph)
——————————————————————
AOV网 :拓扑排序
用一个有向图表示一个工程的各个子工程及其相互制约的关系,其中以顶点表示活动,弧表示活动之间的优先制约关系,称这种有向图为顶点表示活动的网,简称AOV网(Activity On Vertex network)
AOE网 :关键路径
用一个有向图表示一个工程的各子工程及其相互制约的关系,以弧表示活动,以顶点表示活动的开始或者结束事件,称这种有向图为边表示活动的网,简称AOE网(Activity On Edge)
———————————————————————
拓扑排序
简单算法理解:
ⅰ 找到没有前驱的结点开始,找到该顶点,输出
ⅱ 删除以该顶点为弧尾的弧
ⅲ 重复ⅰ、ⅱ两个步骤,(可以用来判断是否有回路,有回路则结点无法全部输出)
④ 关键路径
关键路径:路径长度最长的路径
关键活动:关键路径上的活动,即l(i)==e(i),(即l(i)-e(i)==0)的活动
ve(vj)——表示事件vj的最早发生时间
vl(vj)——表示事件vj的最迟发生时间
e(vj)——表示活动ai的最早开始时间
l(vj)——表示活动ai的最迟开始时间
l(i)-e(i)——表示完成活动ai的时间余量