地铁最短路径java(地铁最短路径算法实验报告)

今日,嗨壳技术分享网小编分享地铁最短路径java(地铁最短路径算法实验报告) 相关内容,内容如下。

  今天给各位分享地铁最短路径java的知识,其中也会对地铁最短路径算法实验报告进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

  本文目录一览:

  1、JAVA中最短路径算法

2、用Java实现一个地铁票价计算程序,希望给出主要算法与数据结构

3、求帮助一个java地铁换乘问题

4、地铁查询(换成) 开发 java

5、java 最短路径算法 如何实现有向 任意两点的最短路径

  JAVA中最短路径算法

  给你个算graph上最短路径的比较流行的方法

  Algorithm Dijkstra(V, E, cost, s)

  T ;

  Cost(V[s]) 0

  Prev(V[s]) none

  for i 0 to length[V] – 1 do

  if (i 6= s) then

  Cost(V[i]) +1

  Prev(V[i]) none

  Build heap NotInTree from V

  for i 1 to length[V] do

  u DeleteMin(NotInTree)

  add (u, Prev(u)) to T

  for each neighbor v of u do

  if (Cost(v) Cost(u) + cost(u,v)) then

  Cost(v) Cost(u) + cost(u,v)

  Prev(v) u

  return T

  用Java实现一个地铁票价计算程序,希望给出主要算法与数据结构

  根据某市地铁线路图写一个地铁票价计算程序

  需求描述:

  1.计费规则:最低2元,超过5站以上每站加收0.5元,换乘重新起算,例如L1先坐4站,换乘L2再坐6站,结果就是2+2.5=5.5元

  2.程序启动以后读取输入文件(in.txt),内容格式如:

  L2-8,L2-2

  X3,L3-8

  ….

  每行表示一次行程,起点站和终点站之间用逗号分隔,行数不限

  4.系统按最短路径方案(尽量少换乘且站数少,假设乘 客换乘一次用的时间相当于坐4个站)规划路线,计算票价,并把路线和票价输出到文件(out.txt),内容格式如:

  L2-8,L2-2=2.5:L2-8,L2-7,L2-6,L2-5,L2-4,L2-3,L2-2

  X3,L3-8=4:X3,X4,L3-8

  ….

  等号后面的表示票价和路径

  地铁线路图如下:共有5条线路,X开头的站点表示 换乘车站

  求帮助一个java地铁换乘问题

  感觉这个没有什么价值啊,现在google,百度地图等已经相当的成熟了,再说开发一个这样的网站实际作用并不明显。大家关心的是”能不能顺利到达目的地”而不是看似能省几分钟的”地铁换乘路线”,再说,没几个人出门前会去专门上网看下换乘路线这个,就目前国内的地铁系统来说还不是太复杂吧.主要就是给每条路线都建立一张表,相关联的路线间用交汇点作为外键.每张表中站点编号即是数据库表的编号,另外表中再存储各点间距和每站的价格,然后程序的设计应该围绕编号,间距,外键了.比方说出发点为A,终点为B.那么算法先查表得出距A最近的地铁是哪张表对应的路线,记为A’;再查找终点B对应的地铁B’;然后双向查找A-B和B-A的交汇点,最终得出最短路径.

  地铁查询(换成) 开发 java

  感觉这个没有什么价值啊,现在google,百度地图等已经相当的成熟了,再说开发一个这样的网站实际作用并不明显。大家关心的是”能不能顺利到达目的地”而不是看似能省几分钟的”地铁换乘路线”,再说,没几个人出门前会去专门上网看下换乘路线

  这个,就目前国内的地铁系统来说还不是太复杂吧.主要就是给每条路线都建立一张表,相关联的路线间用交汇点作为外键.每张表中站点编号即是数据库表的编号,另外表中再存储各点间距和每站的价格,然后程序的设计应该围绕编号,间距,外键展开了.

  比方说出发点为A,终点为B.

  那么算法先查表得出距A最近的地铁是哪张表对应的路线,记为A’;再查找终点B对应的地铁B’;然后双向查找A-B和B-A的交汇点,最终得出最短路径.

  java 最短路径算法 如何实现有向 任意两点的最短路径

  Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。

  Dijkstra一般的表述通常有两种方式,一种用永久和临时标号方式,一种是用OPEN, CLOSE表方式

  用OPEN,CLOSE表的方式,其采用的是贪心法的算法策略,大概过程如下:

  1.声明两个集合,open和close,open用于存储未遍历的节点,close用来存储已遍历的节点

  2.初始阶段,将初始节点放入close,其他所有节点放入open

  3.以初始节点为中心向外一层层遍历,获取离指定节点最近的子节点放入close并从新计算路径,直至close包含所有子节点

  代码实例如下:

  Node对象用于封装节点信息,包括名字和子节点

  [java] view plain copy

  public class Node {

  private String name;

  private MapNode,Integer child=new HashMapNode,Integer();

  public Node(String name){

  this.name=name;

  }

  public String getName() {

  return name;

  }

  public void setName(String name) {

  this.name = name;

  }

  public MapNode, Integer getChild() {

  return child;

  }

  public void setChild(MapNode, Integer child) {

  this.child = child;

  }

  }

  MapBuilder用于初始化数据源,返回图的起始节点

  [java] view plain copy

  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);

  return nodeA;

  }

  }

  图的结构如下图所示:

  Dijkstra对象用于计算起始节点到所有其他节点的最短路径

  [java] view plain copy

  public class Dijkstra {

  SetNode open=new HashSetNode();

  SetNode close=new HashSetNode();

  MapString,Integer path=new HashMapString,Integer();//封装路径距离

  MapString,String pathInfo=new HashMapString,String();//封装路径信息

  public Node init(){

  //初始路径,因没有A-E这条路径,所以path(E)设置为Integer.MAX_VALUE

  path.put(“B”, 1);

  pathInfo.put(“B”, “A-B”);

  path.put(“C”, 1);

  pathInfo.put(“C”, “A-C”);

  path.put(“D”, 4);

  pathInfo.put(“D”, “A-D”);

  path.put(“E”, Integer.MAX_VALUE);

  pathInfo.put(“E”, “A”);

  path.put(“F”, 2);

  pathInfo.put(“F”, “A-F”);

  path.put(“G”, 5);

  pathInfo.put(“G”, “A-G”);

  path.put(“H”, Integer.MAX_VALUE);

  pathInfo.put(“H”, “A”);

  //将初始节点放入close,其他节点放入open

  Node start=new MapBuilder().build(open,close);

  return start;

  }

  public void computePath(Node start){

  Node nearest=getShortestPath(start);//取距离start节点最近的子节点,放入close

  if(nearest==null){

  return;

  }

  close.add(nearest);

  open.remove(nearest);

  MapNode,Integer childs=nearest.getChild();

  for(Node child:childs.keySet()){

  if(open.contains(child)){//如果子节点在open中

  Integer newCompute=path.get(nearest.getName())+childs.get(child);

  if(path.get(child.getName())newCompute){//之前设置的距离大于新计算出来的距离

  path.put(child.getName(), newCompute);

  pathInfo.put(child.getName(), pathInfo.get(nearest.getName())+”-“+child.getName());

  }

  }

  }

  computePath(start);//重复执行自己,确保所有子节点被遍历

  computePath(nearest);//向外一层层递归,直至所有顶点被遍历

  }

  public void printPathInfo(){

  SetMap.EntryString, String pathInfos=pathInfo.entrySet();

  for(Map.EntryString, String pathInfo:pathInfos){

  System.out.println(pathInfo.getKey()+”:”+pathInfo.getValue());

  }

  }

  /**

  * 获取与node最近的子节点

  */

  private Node getShortestPath(Node node){

  Node res=null;

  int minDis=Integer.MAX_VALUE;

  MapNode,Integer childs=node.getChild();

  for(Node child:childs.keySet()){

  if(open.contains(child)){

  int distance=childs.get(child);

  if(distanceminDis){

  minDis=distance;

  res=child;

  }

  }

  }

  return res;

  }

  }

  Main用于测试Dijkstra对象

  [java] view plain copy

  public class Main {

  public static void main(String[] args) {

地铁最短路径java(地铁最短路径算法实验报告)

  Dijkstra test=new Dijkstra();

地铁最短路径java(地铁最短路径算法实验报告)

  Node start=test.init();

  test.computePath(start);

  test.printPathInfo();

  }

  }

  关于地铁最短路径java和地铁最短路径算法实验报告的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

以上【 地铁最短路径java(地铁最短路径算法实验报告) 】是嗨壳技术分享网(www.heikehao.com)编辑整理。嗨壳技术分享网包含技术投稿、C语言、Excel、Java、Linux、网络安全和账号安全等丰富的栏目,并分享一些互联网安全技术知识和安全防护经验,帮助网友注重网络安全,让网络安全不再是问题。

原创文章,作者:java,如若转载,请注明出处:https://www.heikehao.com/11123.html

(0)
javajava
上一篇 2020年5月10日
下一篇 2020年5月10日

相关推荐

  • 包含java1234视频破解的词条

    包含java1234视频破解的词条   毕向东java基础全套视频教程(最好是百度云盘)   杜老师的授课模式非常幽默风趣,如果你想看看的话可以去B站上搜一下Java教程,播放量最…

    2020年5月13日
  • java证书解析(java考证书)

    java证书解析(java考证书)   本篇文章给大家谈谈java证书解析,以及java考证书对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。   本文目录一览:   1、J…

    2020年6月19日
  • java程序设计与实践教程王薇 – java程序设计教程微课版课后答案

    关于java程序设计与实践教程王薇 – java程序设计教程微课版课后答案话题,今日,嗨壳技术分享网小编抽出大半天的时间整理一些java程序设计与实践教程王薇 &#82…

    2020年10月17日
  • 张孝祥java高级教程,java高级程序设计实战教程答案戴远泉课后答案

    今天,嗨壳技术分享网给大家整理一些张孝祥java高级教程,java高级程序设计实战教程答案戴远泉课后答案内容。   给初学者推荐学习java的书籍   1、初学者《零基础学Java…

    2020年4月8日
  • java中set和get用法

    set和get这两个词的表面意思,set是设置的意思,而get是获取的意思,顾名思义,这两个方法是对数据进行设置和获取用的,一般来说set和get方法都是对私有域变量进行操作的,因…

    java 2023年12月17日
  • 包含mjpegjava的词条

    今天,嗨壳技术分享网给大家整理一些包含mjpegjava的词条内容。   java如何定义扫描仪   Scanner是jdk5新增的一个类,使用该类可创建一个对象,Scanner …

    2020年2月22日
  • 求黑客高手帮忙追款

    近年来,网络诈骗事件频发,许多人因为不慎上当受骗而遭遇经济损失。面对这种情况,很多人会选择报警或者通过法律手段追回自己的损失。有些黑客高手却通过自己的技能和经验,成功地帮助受害者追回了损失。在网络诈骗事件中,黑客高手能够通过技术手段获取到诈骗者的信息,包括账户、IP地址等,从而追踪到诈骗者的。有些黑

    2024年3月28日
  • myeclipse能部署java工程么,myeclipse支持jdk18

    myeclipse能部署java工程么,myeclipse支持jdk18 大家并不陌生,借来给大家详细说说吧!   myeclipse如何建java文件   1、点击【File】&…

    2020年2月16日
  • 24小时接单的专业黑客qq

    24小时接单的专业黑客qq,这个神秘而诱人的标题让人无法不好奇,想要深入了解这个神秘的世界。黑客,是一个充满着神秘和挑战的职业,他们拥有着超凡的技术和智慧,可以轻易地突破各种安全系统,获取各种信息。而24小时接单的专业黑客q

    2024年3月28日
  • 微信小程序上传java,微信小程序上传视频大小限制

    微信小程序上传java,微信小程序上传视频大小限制   微信小程序怎么开发   网页搜索小程序平台,进入小程序搭建系统,如图1。进入平台右上角点击“注册”按钮,如图2。编辑一个用户…

    2020年2月17日

网上怎么找黑客帮忙多少钱

怎么网上找到的黑客?黑客的收费标准是什么呢?找黑客一般费用是多少?


找黑客帮忙一般要多少钱

黑客服务的价格范围很广,主要取决于服务的类型和难度。根据提供的信息如下:


1.攻击服务:


攻击范围:这包括了通过扫描入侵、种植木马等方式对他人计算机实施非法控制,并利用被控制的计算机对网站、App等服务器发起攻击


。1

2.特定账户的售价:


账户信息:如垂钓者、而勒索软件,显示市场对特定黑客工具的需求和价格波动。

3.攻击工具:

“RIG”攻击工具包的租用费用,提供了不同时长的选择。

4.远程访问木马(RAT)的价格:

相比去年有所下降,显示出市场价格的波动。

5.DDOS攻击的报价:

DDOS攻击服务按不同时长定价选择。

黑客服务的价格因服务类型、难度、以及市场需求的不同而有很大的差异。这些价格反映了黑客服务市场的复杂性和多样性,同时也提醒人们网络安全的重要性。