【问题描述】

建立一个从源点S到终点T的多段图,设计一个动态规划算法求出从S到T的最短路径值,并输出相应的最短路径。

解

 package org.xiu68.exp.exp4;

 public class Exp4_1 {
//建立一个从源点S到终点T的多段图,设计一个动态规划算法求出从S到T的最短路径值,并输出相应的最短路径。
/*
d[1] = 0
for j = 2 to n:
for all <i,j>∈E :
d[j] = min{ d[i] + wij }
return d[n]
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int m=Integer.MAX_VALUE;
int[][] edges=new int[][]{
{m,1,2,5,m,m,m,m},
{m,m,m,m,4,11,m,m},
{m,m,m,m,9,5,16,m}, {m,m,m,m,m,m,2,m},
{m,m,m,m,m,m,m,18},
{m,m,m,m,m,m,m,13}, {m,m,m,m,m,m,m,2},
{m,m,m,m,m,m,m,m},
}; MGraph graph1=new MGraph(edges);
graph1.minMultistageGraphPath(0, 7); } } class MGraph{
private int[][] edges; //有向图表示多段图
private int vexNum; //顶点数量 public MGraph(int[][] edges){
this.edges=edges;
this.vexNum=edges.length;
} public void minMultistageGraphPath(int start,int end){
int[] dist=new int[vexNum]; //从源点到该点的路径长度
dist[start]=0; int[] pre=new int[vexNum]; //在最短路径中该点的前一个顶点
pre[start]=-1; for(int j=1;j<vexNum;j++){ dist[j]=Integer.MAX_VALUE;
pre[j]=-1; for(int i=0;i<vexNum;i++){
if(edges[i][j]!=Integer.MAX_VALUE && dist[j]>dist[i]+edges[i][j]){
dist[j]=dist[i]+edges[i][j];
pre[j]=i;
}
}
} //打印最短路径
System.out.println(start+" to "+end+" is "+dist[end]); String path=""+end;
int preVex=pre[end]; while(preVex!=-1){
path=preVex+"-->"+path;
preVex=pre[preVex];
}
System.out.println("the path is:"+path);
}
}

Expm 4_1 多段图中的最短路径问题的更多相关文章

  1. 在图中寻找最短路径-----深度优先算法C++实现

    求从图中的任意一点(起点)到另一点(终点)的最短路径,最短距离: 图中有数字的点表示为图中的不同海拔的高地,不能通过:没有数字的点表示海拔为0,为平地可以通过: 这个是典型的求图中两点的最短路径:本例 ...

  2. Expm 4_2 有向无环图中的最短路径问题

    [问题描述] 建立一个从源点S到终点E的有向无环图,设计一个动态规划算法求出从S到E的最短路径值,并输出相应的最短路径. 解: package org.xiu68.exp.exp4; import j ...

  3. javascript实现有向无环图中任意两点最短路径的dijistra算法

    有向无环图 一个无环的有向图称做有向无环图(directed acycline praph).简称DAG 图.DAG 图是一类较有向树更一般的特殊有向图, dijistra算法 摘自 http://w ...

  4. 图中最短路径算法(Dijkstra算法)(转)

    1.Dijkstra 1)      适用条件&范围: a)   单源最短路径(从源点s到其它所有顶点v); b)   有向图&无向图(无向图可以看作(u,v),(v,u)同属于边集E ...

  5. Expm 10_1 带负权值边的有向图中的最短路径问题

    [问题描述] 对于一个带负权值边的有向图,实现Bellman-Ford算法,求出从指定顶点s到其余顶点的最短路径,并判断图中是否存在负环. package org.xiu68.exp.exp10; p ...

  6. Floyd-Warshall求图中任意两点的最短路径

    原创 除了DFS和BFS求图中最短路径的方法,算法Floyd-Warshall也可以求图中任意两点的最短路径. 从图中任取两点A.B,A到B的最短路径无非只有两种情况: 1:A直接到B这条路径即是最短 ...

  7. Expm 10_2 实现Ford-Fulkerson算法,求出给定图中从源点s到汇点t的最大流,并输出最小割。

    package org.xiu68.exp.exp10; import java.util.ArrayDeque; import java.util.ArrayList; import java.ut ...

  8. 图结构练习——最短路径(dijkstra算法(迪杰斯拉特))

      图结构练习——最短路径 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述  给定一个带权无向图,求节点1到节点n的最短路径.   ...

  9. Hanlp中N最短路径分词详细介绍

    N-最短路径 是中科院分词工具NLPIR进行分词用到的一个重要算法,张华平.刘群老师在论文<基于N-最短路径方法的中文词语粗分模型>中做了比较详细的介绍.该算法算法基本思想很简单,就是给定 ...

随机推荐

  1. Thread.currentThread().getContextClassLoader().getResourceAsStream

    Thread.currentThread().getContextClassLoader().getResourceAsStream 2014年04月02日 06:49:47 OkidoGreen 阅 ...

  2. java.lang.OutOfMemoryError及解决方案

    主要有3种比较常见的OutOfMemory Error: java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError: ...

  3. C# BindingSource

    1.引言 BindingSource组件是数据源和控件间的一座桥,同时提供了大量的API和Event供我们使用.使用这些API我们可以将Code与各种具体类型数据源进行解耦:使用这些Event我们可以 ...

  4. windows安装zabbix监控

    在windows下安装zabbix agent,方法非常简单. 首先到zabbix官方下载windows版本agent,地址:http://www.zabbix.com/download.php,找到 ...

  5. JAVA记录-JDBC介绍

    JDBC(Java DataBase Connection),java数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成 ...

  6. Study 1 —— Python简介

    Python与其他语言的区别C\C++:学习成本高,学习周期长,偏系统底层,在开发硬件驱动.嵌入式.游戏引擎开发等领域有广泛的应用:JAVA:目前使用最广泛的编程语言,第一个跨平台运行的语言,在大型E ...

  7. datetimepicker bootstrap的时间插件显示位置问题及其他配置

    位置问题: 在bootstrap中用 datetimepicker 时默认是在输入框下面弹出的, 但是遇到输入框在屏幕最下面时,日期选择框会有一部分在屏幕下面,显示不了,因此需要能够从上面弹出. 可以 ...

  8. 在html中控制自动换行

      其实只要在表格控制中添加一句<td style="word-break:break-all">就搞定了.其中可能对英文换行可能会分开一个单词问题:解决如下:语法: ...

  9. NOIP2018TG题解

    应该不会被禁赛吧qwq Day1 T1 铺设道路 €€£:我 抄 我 自 己 我考场上写的是一个类似于差分的做法,就是开个数组表示某个位置是否贡献答案,从小到大枚举高度,那么一个位置能贡献答案当且仅当 ...

  10. luogu P2123 皇后游戏

    传送门 跟国王游戏一样的分析 考虑相邻的两个大臣,设他们前面的\(\sum a_j\)为\(s\),同时注意到后面人的贡献更大 所以\(i\)在前面时,\(c_j=\max(\max(c_{last} ...