地铁最短路径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日

相关推荐

  • 线程阻塞java的方法,线程阻塞的几种情况

    今日,嗨壳技术分享网小编分享线程阻塞java的方法,线程阻塞的几种情况 相关内容,内容如下。   Java中如何使一个线程进入阻塞态   sleep方法Thread的静态方法sle…

    2020年2月4日
  • 如何联系黑客帮忙追款(怎么找到黑客的联系方式)

    电子论坛:可以利用专业技术论坛,可以在这里联系黑客帮忙,讨论技术问题,交换信息,分享经验,并寻求黑客的帮助; 站点留言:可以在多个专业的黑客站点上留言,比如Organization…

    java 2023年12月28日
  • 专业黑客追款,先做事后付款

    在当今社会,网络黑客已经成为了一个不容忽视的问题。黑客们不仅会攻击企业和个人的电脑,还会通过各种手段盗取他们的财产。专业黑客追款,先做事后付款的服务应运而生。我们将从多个方面对这种服务进行详细的阐述。1. 专业黑客追款的背景随着互联网的普及,越来越多的人开始使用电脑和网络进行各种活动。网络安全问

    2024年3月28日
  • 如何用java实现支付宝支付

    今日,嗨壳技术分享网小编分享如何用java实现支付宝支付 相关内容,内容如下。   java支付宝支付需要什么参数   吐槽一下:支付宝的接口文档真心太难看懂了,乱七八糟,都不知道…

    2021年10月2日
  • 包含java读取txt文件存入数据库的词条

    针对包含java读取txt文件存入数据库的词条的内容, 嗨壳技术分享网今天给大家作出详细的解答吧!   用java如何将txt文件导入mysql   1、先读取txt文件的内容,文…

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

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

    2020年4月8日
  • 关于3d动画和java的结合的信息

    关于3d动画和java的结合的信息   java3d的介绍   1、JAVA 3D从高层次为开发者提供对三维实体的创建、操纵和着色,使开发工作变得极为简单。   2、JAVA3D可…

    2020年2月29日
  • 阿里java社招

    今日,嗨壳技术分享网小编分享阿里java社招 相关内容,内容如下。   成人大学本科学历、自学Java编程可以进阿里巴巴吗?   校招不可能了(这两年阿里校招 最低211以上或者硕…

    2020年1月19日
  • 单机测试javascript,单机测试是哪一种检验方法

    针对单机测试javascript,单机测试是哪一种检验方法的内容, 嗨壳技术分享网今天给大家作出详细的解答吧!   JavaScript代码测试必备的12款工具?   1、WebS…

    2020年1月21日
  • 包含java3元组的词条

    今天,嗨壳技术分享网给大家整理一些包含java3元组的词条内容。   python中元祖对应java中的什么   python中的None 就是JAVA里的null python中…

    2023年10月21日

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

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


找黑客帮忙一般要多少钱

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


1.攻击服务:


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


。1

2.特定账户的售价:


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

3.攻击工具:

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

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

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

5.DDOS攻击的报价:

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

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