- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- Heredityor environment.doc
- heyiWCDM系统容量的估算.doc
- HEY-H全自动压互感器测试仪.doc
- HG23006-2有毒气体检测报警仪技术条件及检验方法.doc
- HGD100氢气度检测装置说明书.doc
- HCS公路项目建管理系统(sg).doc
- hg内蒙古工业大博源奖学金.doc
- hf浊度仪和手持浊度仪价格.docx
- Hi-FI北京市.docx
- Hibernat+mvc 试卷A.doc
- 英语人教PEP版八年级(上册)Unit4+writing+写作.pptx
- 人美版美术四年级(上册)8 笔的世界 课件 (1).pptx
- 人美版美术七年级(上册)龙的制作.pptx
- 英语人教PEP版六年级(上册)Unit 2 第一课时.pptx
- 数学苏教版三年级(上册)3.3 长方形和正方形周长的计算 苏教版(共12张PPT).pptx
- 音乐人教版八年级(上册)青春舞曲 课件2.pptx
- 音乐人教版四年级(上册) 第一单元 音乐知识 附点四分音符|人教版.pptx
- 英语人教PEP版四年级(上册)Unit 6 Part B let's learn 1.pptx
- 道德与法治人教版二年级(上册)课件-3.11大家排好队部编版(共18张PPT).pptx
- 人美版美术七年级(上册)《黄山天下奇》课件1.pptx
文档评论(0)