JAVA编程语言序开发技术Dijkstra.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JAVA编程语言序开发技术Dijkstra

以下资料为广州java培训整理 Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。   Dijkstra一般的表述通常有两种方式,一种用永久和临时标号方式,一种是用OPEN, CLOSE表方式   用OPEN,CLOSE表的方式,其采用的是贪心法的算法策略,大概过程如下:   1.声明两个集合,open和close,open用于存储未遍历的节点,close用来存储已遍历的节点   2.初始阶段,将初始节点放入close,其他所有节点放入open   3.以初始节点为中心向外一层层遍历,获取离指定节点最近的子节点放入close并从新计算路径,直至close包含所有子节点   代码实例如下:   Node对象用于封装节点信息,包括名字和子节点   [java]   public class Node {   private String name;   private MapNode,Integer child=new HashMapNode,Integer();   public Node(String name){   =name;   }   public String getName() {   return name;   }   public void setName(String name) {    = name;   }   public MapNode, Integer getChild() {   return child;   }   public void setChild(MapNode, Integer child) {   this.child = child;   }   }   MapBuilder用于初始化数据源,返回图的起始节点   [java]   public class MapBuilder {   public Node build(SetNode open, SetNode close){   Node nodeA=new Node(A);   Node nodeB=new Node(B);   Node nodeC=new Node(C);   Node nodeD=new Node(D);   Node nodeE=new Node(E);   Node nodeF=new Node(F);   Node nodeG=new Node(G);   Node nodeH=new Node(H);   nodeA.getChild()。put(nodeB, 1);   nodeA.getChild()。put(nodeC, 1);   nodeA.getChild()。put(nodeD, 4);   nodeA.getChild()。put(nodeG, 5);   nodeA.getChild()。put(nodeF, 2);   nodeB.getChild()。put(nodeA, 1);   nodeB.getChild()。put(nodeF, 2);   nodeB.getChild()。put(nodeH, 4);   nodeC.getChild()。put(nodeA, 1);   nodeC.getChild()。put(nodeG, 3);   nodeD.getChild()。put(nodeA, 4);   nodeD.getChild()。put(nodeE, 1);   nodeE.getChild()。put(nodeD, 1);   nodeE.getChild()。put(nodeF, 1);   nodeF.getChild()。put(nodeE, 1);   nodeF.getChild()。put(nodeB, 2);   nodeF.getChild()。put(nodeA, 2);   nodeG.getChild()。put(nodeC, 3);   nodeG.getChild()。put(nodeA, 5);   nodeG.getChild()。put(nodeH, 1);   nodeH.getChild()。put(nodeB, 4);   nodeH.getChild()。put(nodeG, 1);   open.add(nodeB);   open.add(nodeC);   open.add(nodeD);   open.add(nodeE);   open.add(nodeF);   open.add(nodeG);   open.add(nodeH);   close.add(nodeA);   r

文档评论(0)

yasou511137 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档