关于最短轮径问题的JAVA实现
来源:互联网 发布:三巨网络待遇如何 编辑:程序博客网 时间:2024/09/21 09:23
/*算法步骤:
a.初始时,S只包含源点,即S={v},v的距离为0。U包含除v外的其他顶点,即:U={其余顶点},若v与U中顶点u有边,则<u,v>正常有权值,若u不是v的出边邻接点,则<u,v>权值为∞。
b.从U中选取一个距离v最小的顶点k,把k,加入S中(该选定的距离就是v到k的最短路径长度)。
c.以k为新考虑的中间点,修改U中各顶点的距离;若从源点v到顶点u的距离(经过顶点k)比原来距离(不经过顶点k)短,则修改顶点u的距离值,修改后的距离值的顶点k的距离加上边上的权。
d.重复步骤b和c直到所有顶点都包含在S中。*/
public class TheLeastDistance {
public static void main(String[] args){
//路径用例
int[][] data={{0,7,9,Integer.MAX_VALUE,Integer.MAX_VALUE,14},
{7,0,10,15,Integer.MAX_VALUE,Integer.MAX_VALUE}
{9,10,0,11,Integer.MAX_VALUE,2},
{Integer.MAX_VALUE,15,11,0,6,Integer.MAX_VALUE},
{Integer.MAX_VALUE,Integer.MAX_VALUE,Integer.MAX_VALUE,6,0,9},
{14,Integer.MAX_VALUE,2,Integer.MAX_VALUE,9,0}};
int[] dis=new int[data.length];
//S集合
boolean[] bool=new boolean[data.length];
for(int i=0;i<data.length;i++){
dis[i]=data[0][i];
}
bool[0]=true;
for(int p=1;p<data.length;p++){
int min=Integer.MAX_VALUE;
int pos=0;
for(int i=1;i<data.length;i++){
if(!bool[i]&&dis[i]<min){
min=dis[i];
pos=i;
}
}bool[pos]=true;
for(int j=1;j<data.length;j++){
if((!bool[j]) && data[pos][j]<Integer.MAX_VALUE){
if(dis[pos]+data[pos][j]<dis[j]){
dis[j]=data[0][pos]+data[pos][j];
}
}}}for(int i=0;i<dis.length;i++){
System.out.println(dis[i]);
}
}
}
- 关于最短轮径问题的JAVA实现
- 关于Java编程实现n个小球涂色的问题
- 关于Java多线程实现生产者和消费者的问题
- 关于烙饼排序问题的算法与Java实现
- 关于大数相乘问题(Java实现)
- 关于Java编译的问题
- 关于java socket的问题
- 关于JAVA的中文问题
- 关于JAVA的中文问题
- 关于JAVA的一些问题?
- 关于JAVA解密的问题
- 关于java的知识问题
- 求助关于java的问题
- 关于java的classpath问题
- 一个关于JAVA的问题
- 关于java编辑器的问题
- 关于java配置的问题
- 关于java的路径问题
- Dummy Variable & One-Hot Encoding
- MyBatis中动态SQL
- SLAM
- 宁哥自编自导自演的《C语言,好爽》第7版(2017年)教程内容
- Android-学习记录-四大组件总结(2)
- 关于最短轮径问题的JAVA实现
- NOIP2013 D1
- Hibernate中的缓存机制
- NIPS 全文下载
- 鸟叔linux私房菜--文件权限和目录配置
- win10还原系统
- C语言写的秒速计算四则混合运算项目
- 路由器基本配置
- hibernate 对象的映射关系