Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)

目录

一、有向图 157

1.1有向图的定义及相关术语 157

1.2有向图的实现 158

二、拓扑排序 159

2.1检测有向图中的环 160

2.1.1检测有向图中环API设计 160

2.1.2检测有向环实现 161

2.2基于深度优先顶点排序 162

2.2.1顶点排序API设计

2.2.2顶点排序实现的原理过程

2.2.3顶点排序代码的实现及测试 162、163、164

三、加权无向图 165

3.1加权无向图边的表示---加权的边实现 166

3.2加权无向图边的表示---无向图的实现 167

四、最小生成图 168

4.1最小生成树定义及相关约定 168

4.2最小生成树原理---切分定理 169

4.2.1树的性质

4.2.2切分定理

4.3贪心算法 170

4.4Prim算法 171

4.4.1Prim算法API设计

4.4.2Prim算法的实现原理 172  

4.4.3Prim算法的代码实现及测试173、174、175

4.5kruskal算法 176

4.5.1kruskal算法API设计 

4.5.2kruskal算法的实现原理 177

4.5.3kruskal算法代码实现及测试 178、179

五、加权有向图 180

5.1加权有向图边的表示 180

5.2加权有向图的实现 181

六、最短路径182

6.1最短路径定义及性质 182

6.2最短路径树API设计 182

6.3松弛技术 183

6.4Dijstra算法实现及测试 184、185、186


一、有向图 157

图的边是有方向的

1.1有向图的定义及相关术语 157

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第1张图片

 Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第2张图片

1.2有向图的实现 158

 Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第3张图片

二、拓扑排序 159

基于有向图实现拓扑排序。

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第4张图片

2.1检测有向图中的环 160

检测有向图环的目的:

有向图中存在环,就没办法进行拓扑排序了

2.1.1检测有向图中环API设计 160

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第5张图片

 成员变量:onStack的原理:利用栈的思想进行操作的。如下所示:

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第6张图片

2.1.2检测有向环实现 161

2.2基于深度优先顶点排序 162

2.2.1顶点排序API设计

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第7张图片

2.2.2顶点排序实现的原理过程

文档P11

2.2.3顶点排序代码的实现及测试 162、163、164

三、加权无向图 165

 ​​​​​​​Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第8张图片

3.1加权无向图边的表示---加权的边实现 166

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第9张图片

3.2加权无向图边的表示---无向图的实现 167

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第10张图片

四、最小生成图 168

4.1最小生成树定义及相关约定 168

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第11张图片

 Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第12张图片

分别计算各个独立的连通图。这些组合在一起称为最小生成森林。

4.2最小生成树原理---切分定理 169

4.2.1树的性质

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第13张图片

4.2.2切分定理

切分: 

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第14张图片

横切边:

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第15张图片

切分定理:

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第16张图片

4.3贪心算法 170

基于切分定理实现的

步骤一:

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第17张图片

步骤二:

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第18张图片

步骤三:

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第19张图片

 步骤四:

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第20张图片

 步骤五:

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第21张图片

 步骤六:

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第22张图片

 步骤七:

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第23张图片

 步骤八:直到所有的顶点都被连接起来,则说明查找完毕

 Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第24张图片

 贪心算法是基础:

求最小生成树的算法都是贪心算法的一种变形

4.4Prim算法 171

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第25张图片

Prim算法实现的过程:

步骤一:

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第26张图片

 ​​​​​​​步骤二:

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第27张图片

 其他的部分依次类推,就可以找到所有的最小生成树了。

4.4.1Prim算法API设计

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第28张图片

4.4.2Prim算法的实现原理 172  

参考文档P27

4.4.3Prim算法的代码实现及测试173、174、175

4.5kruskal算法 176

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第29张图片

 ​​​​​​​Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第30张图片

 

 是将森林进行连接

4.5.1kruskal算法API设计 

本部分使用了并查集 

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第31张图片

4.5.2kruskal算法的实现原理 177

文档P32

4.5.3kruskal算法代码实现及测试 178、179

五、加权有向图 180

5.1加权有向图边的表示 180

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第32张图片

5.2加权有向图的实现 181

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第33张图片

 

六、最短路径182

 ​​​​​​​

6.1最短路径定义及性质 182

这个不是最小生成树,最小生成树是所有的顶点都要连接起来,这个只是连接需要的两个顶点。

路径:可以是部分的连接

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第34张图片

6.2最短路径树API设计 182

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第35张图片

6.3松弛技术 183

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第36张图片

 边的松弛:

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第37张图片 顶点的松弛:

Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)_第38张图片 

6.4Dijstra算法实现及测试 184、185、186

 

 

你可能感兴趣的:(数据结构与算法,数据结构,jvm,贪心算法,排序算法,算法)