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

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

本文目录一览:

1、JAVA中最短路径算法2、用Java实现一个地铁票价计算程序,希望给出主要算法与数据结构3、求帮助一个java地铁换乘问题4、地铁查询(换成) 开发 java5、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(地铁最短路径算法实验报告)

求帮助一个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) {

Dijkstra test=new Dijkstra();

Node start=test.init();

test.computePath(start);

test.printPathInfo();

}

}

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

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月29日 08:37:00
下一篇 2024年3月29日 08:48:32

相关推荐

  • 地铁的票价一般都低于成本,是否赚钱不能只看票价

    所以,对于我国大部分城市来说,地铁的票价定价均低于相关成本。简单点说,地铁票的定价并不是为了回本,而是为了保证各项交通工具发展的平衡性 文/dong 审核/张子扬 校正/知秋 俗话说:要想富,想修路。被称为基建狂魔的中国,将这句俗话展现得淋漓尽致。为了能够方便国人出行,我国一直以来对于高速公路的建设都在紧锣密鼓地进行着。就我国的高速公路发展情况来看,国内高速…

    2024年4月20日
    3400
  • 修建地铁需要符合的条件很苛刻,并不是想修就能修

    成本基本上都是政府靠跟银行贷款来的,后期客流量如果跟不上肯定是不足以还款的,再加上后期运营的成本就导致了大部分修建地铁的城市在亏钱的 截止2021年3月,中国大陆共有地级行政区333个(包括293个地级市,7个地区,30个自治州,3个盟),县级市394个。 这么多城市中,能够修建地铁的城市却只有40多个,可想而知一座城市想要修建地铁是有多么的困难或者说相关部…

    2024年4月20日
    4600
  • 很多城市的地铁亏损严重,少数城市才赚钱

    地铁–大城市的标志;亏损严重,负重前行:我国这35个城市的地铁仅修建就花了六千多亿元,如此大的投入仅靠财政是很难负担的;个城市依然能够盈利 “要想富,先修路”,这是上世纪八、九十年代在我国广为流传的一句话。因为当时为了招商引资,各地纷纷加大在道路交通上的投资,从而方便各类货物的运输。 经过几十年的“补课”,我国的道路交通网络已经非常的完善,从铁路…

    2024年4月20日
    4900
  • 美团、饿了么的红包路径如何获取?

    美团饿了么红包路径如何获取;饿了么:手机打开淘宝联盟,通过自己的淘宝号登录进去,发现-吃喝玩乐路径;其他两个红包路径的获取方法;美团 最近很多人在问,今天再说一下。 饿了么 1、 在饿了么APP里获取 手机进去饿了么APP-我的-互动玩乐-推荐有奖-点击大红包限时分享-点击分享到自己的微信或文件传输助手,这个时候是转发了一个小程序链接到自己的微信。 2、在淘…

    2024年4月20日 用户投稿
    4100
  • 培训如何从内向型转型为外向型,有什么转型路径

    “从0到1”的内向型培训;从0到1,完成内向型到外向型的转型;“培而优则外”;“从1到7”的外向型培训探索之路;“苟日新,日日新,又日新” 本文导读 在大部分企业中,培训是内向型非盈利的,但也不乏有能挣钱的外向型。他们的运营模式、设计思路不一定能复制,但有一定的参考价值。 今天的文章就来跟你聊聊培训部门转型那些事儿—— 如何让培训与学习工作完成“从0到1”蜕…

    2024年4月18日
    4400
  • 运营地铁能够赚钱吗?有的赚,有的不赚

    上面这张统计 运营地铁,能赚钱吗?答案是,赚,也不赚。 上面这张统计 之前网上有人在讨论地铁6号线的问题,以及大家期待的其他地铁线路的问题。小杜哥想说,南宁目前的地铁线路已经是贯穿全市东西南北和几大客运站,而且即将通车的5号线,也和其他四条地铁线有交汇。再者,南宁目前刚晋升为新二线城市,各方面还有待提升,这个过程并不是一年两年的事。 所以我个人觉得,南宁在短…

    用户投稿 2024年4月18日
    4200
  • 做生意赚钱的3条路径:能力,速度,和胆量

    销售净利率,考验你的能力,资产周转率,考验你的速度,权益乘数,考验你的胆量,什么是ROE,为什么它是衡量生意成功的重要标准?为什么它这么重要 (本文首发于“刘润”公号,订阅“刘润”公号,和220万读者一起洞察商业本质) 这个世界上,做生意靠什么赚钱? 有三条路径: 能力,速度,和胆量。 为什么这样说? 你需要拥有财务思维,看懂ROE:净资产收益率。 这是股神…

    2024年4月17日
    5000
  • 在地铁商业街开一个便利店,是不是一个赚钱好项目

    零售业的发展趋势必须依靠人流量的集聚,而地铁站每日都有着几乎过亿的客流量,看上去真是一个开店的好地方。地铁站所产生的集聚效用 开便利店是个能获得稳定收益的项目,也是很多中小投资者中意的项目。但便利店选址一直都是让人头痛的问题。今天我们就要来聊一聊在地铁商业街开家便利店是不是一门赚钱的好项目。 伴随着大城市的发展,地铁已变成大家交通出行的优选交通方式之一,由其…

    2024年4月14日
    4500
  • 我国地铁大多处于亏损状态,只有4个城市赚钱

    首先,如同上文说到的一样,地铁的建造非常耗费成本,其次,地铁的票价比较低。深圳的票价在全国也是排行较前的水平,即2元最低票价覆盖了首4公里 文:百川 如果问城市中最好的出行方式,相信很多人的回答都会是地铁,特别是一线城市的上班族。我国现在的汽车保有量是全球第一,而我国的堵车水平也是全世界闻名的。长期乘公交上下班的人,相信都遇到过被堵到路中央水泄不通的情况。 …

    2024年4月13日
    4400
  • 普通人要想赚钱,需要一个系统化的实战路径

    想从别人身上得到利,你得给予别人利。我们想从别人身上得到自己想要的RMB,那么你必须让别人能够赚到RMB,对自己有利,对别人无利,这行不通 合乎于利则往,无利则不往 利,最直接的是RMB,也可以是信息的交换,做为普通人想赚钱那么就要制定出帮助别人(也可以说是让自己能赚钱的方法与通道。)从打破普通的认知局限、对事物的认知局限性、对自己的了解自我认知与心智的重新…

    2024年4月12日
    5500

发表回复

登录后才能评论



关注微信