Dial算法.ppt
15.082 和 6.855J 使用简单桶的Dijkstra 算法 (也是闻名的Dial 算法) 例子 更新步 选择最小临时标号 更新步 选择最小临时标号 更新 选择最小临时标号 更新 选择最小临时标号 更新 选择最小临时标号 算法结束 * * 1 2 3 4 5 6 2 4 2 1 3 4 2 3 2 初始化距离标号 1 0 ? ? ? ? ? 选择带有最小临时距离标号的结点 0 1 2 3 4 5 6 7 1 ? 2 3 4 5 6 初始化桶 2 3 4 5 6 2 4 2 1 3 4 2 3 2 2 4 0 ? ? ? ? ? 1 0 1 2 3 4 5 6 7 1 ? 2 3 4 5 6 2 3 1 3 4 5 6 2 4 2 1 3 4 2 3 2 2 4 0 2 ? ? ? 0 1 2 3 4 5 6 7 ? 4 5 6 2 3 通过从最左端的桶开始且向右扫描直到找到非空桶,来寻找最小值. 1 2 3 4 5 6 2 4 2 1 3 4 2 3 2 2 4 6 4 3 0 ? ? ? 0 1 2 3 4 5 6 7 ? 4 5 6 2 3 3 4 5 1 2 4 5 6 2 4 2 1 3 4 2 3 2 2 3 6 4 0 ? 3 0 1 2 3 4 5 6 7 ? 6 3 4 5 通过从最左端的桶开始且向右扫描直到找到非空桶,来寻找最小值. 1 2 4 5 6 2 4 2 1 3 4 2 3 2 0 3 2 3 6 4 ? 0 1 2 3 4 5 6 7 ? 6 3 4 5 1 2 4 6 2 4 2 1 3 4 2 3 2 0 3 2 3 6 4 ? 5 0 1 2 3 4 5 6 7 ? 6 4 5 1 2 4 6 2 4 2 1 3 4 2 3 2 0 3 2 3 6 4 ? 5 6 0 1 2 3 4 5 6 7 ? 6 4 5 6 1 2 6 2 4 2 1 3 4 2 3 2 0 3 2 3 6 4 5 6 4 0 1 2 3 4 5 6 7 4 6 1 2 6 2 4 2 1 3 4 2 3 2 0 3 2 3 6 4 5 6 4 0 1 2 3 4 5 6 7 4 6 1 2 2 4 2 1 3 4 2 3 2 0 3 2 3 6 4 5 6 4 6 0 1 2 3 4 5 6 7 6 没有可更新的了 1 2 2 4 2 1 3 4 2 3 2 0 3 2 3 6 4 5 6 4 6 所有结点都保持不变了 前驱形成一棵树 通过回溯前驱,可以找到从结点 1 到结点 6 的最短路径 Obtain a network, and use the same network to illustrate the shortest path problem for communication networks, the max flow problem, the minimum cost flow problem, and the multicommodity flow problem. This will be a very efficient way of introducing the four problems. (Perhaps under 10 minutes of class time.) * *