Dijkstra算法
来源:互联网 发布:js产生1到3随机数 编辑:程序博客网 时间:2024/06/05 08:30
突然用到Dijkstra算法,网上找了找资料,简单阐述一下:
设有一个图(有向/无向都可以),这里我们假设图为无向图,如下图,设A为源节点,Dijkstra算法主要目的是找到A到其余所有节点的最短路径,怎么找呢?
下面介绍具体做法:
设置两个集合,一个是找过点的集合(集合S),另一个是没有找的点的集合(H),A为源节点。
1,将A加入集合S(A->A=0),此时集合H{B,C,D,E,F},我们可以找出(A->B=6)(A->C=3),这里(A->C=3)为最短;
2,将C加入集合S{A,C},集合H{B,D,E,F},沿着A->C这条最短路径找,(A->C->B=5小于A->B=6,B的权值赋值为5,A->C->B为A到B的最短路径)(A->C->D=6)(A->C->E=7);
3,将B加入集合S{A,C,B},集合H{D,E,F},沿着A->C->B路径找,(A->C->B->D=10大于A->C->D=6,A->C->D为A到D的最短路径);
4,将D加入集合S{A,C,B,D},集合H{E,F},沿着A->C->D路径找,(A->C->D->E=8大于A->C->E=7,因此A到E的最短路径为A->C->E)(A->C->D->F=9);
5,将E加入集合S{A,C,B,D,E},集合H{F},沿着A->C->E路径找,(A->C->E->F=12大于A->C->D->F=9,因此A到F的最短路径为A->C->D->F)
至此,源节点A到所有节点的最短路径已经找完,分别为A, A->C, A->C->B, A->C->D, A->C->E, A->C->D->F。
代码这里不再加,网上好多
- Dijkstra算法
- dijkstra算法
- Dijkstra算法
- Dijkstra算法
- Dijkstra算法
- Dijkstra算法
- Dijkstra 算法
- Dijkstra算法
- Dijkstra算法
- Dijkstra算法
- Dijkstra 算法
- Dijkstra 算法
- dijkstra算法
- Dijkstra 算法
- Dijkstra算法
- Dijkstra算法
- Dijkstra算法
- dijkstra算法
- memcached与redis实现的对比
- H3C S6800交换机基本配置命令
- Android Telephony分析(四) ---- TelephonyManager详解
- 训练CNN你需要知道的tricks/tips
- 程序员日常工作英文记录 20170410
- Dijkstra算法
- getAttribute和getParameter的区别
- Java 反射机制应用实践
- 如何做时间估算--计划纸牌
- pyqt signal slot thread 多线程
- QT error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall Widget::metaObjec
- Linux常用挂载卸载命令
- NSHTTPURLResponse的localizedStringForStatusCode
- SurfaceView全屏