- packageom.eshore.sweetop.minpath;
- publicclassDijkstraextendsGraphics{
- Dijkstra(Vertex...vs){
- intindex=0;
- for(Vertexv:vs){
- list.add(v);
- v.setIndex(index++);
- }
- }
- @Override
- publicbooleanminPath(Vertexv){
- initSingleSource(v);
- for(inti=0;i<list.size();i++){
- //可以在外循环中使用斐波那契堆实现获取第i个最小值
- //这里考虑到Dijkstra只可以解非负权值的有向图,也就是E(u,v)d(v)>d(u)的特性
- //其实这层的复杂度都是lg(n)
- Quick.sort(list);
- Vertexmin=list.get(i);
- System.out.println(min);
- for(Vertexu:min.getV()){
- relax(min,u);
- }
- }
- returntrue;
- }
- publicvoidrelax(Vertexu,Vertexv){
- if(v.getD()>u.getD()+u.weight(v)){
- v.setD(u.getD()+u.weight(v));
- v.setParent(u);
- }
- }
- }
单源最短路径(四)————Dijkstra算法
迪杰斯特拉算法
最新推荐文章于 2024-06-06 20:23:22 发布
本文介绍了一个基于迪杰斯特拉算法的Java实现,该算法用于寻找带权有向图中的最短路径。通过顶点类和图形类的定义,文章展示了如何初始化单一源点并逐步松弛所有边来找到从源点到其它所有顶点的最短路径。
1582

被折叠的 条评论
为什么被折叠?



