资源简介
通过prim计算最小生成树。读取文本数据(矩阵),保存为二维数组格式,通过prim算法得到最小生成树的数组格式,并将其保存为文本。最后画出简易图。

代码片段和文件信息
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import util.Myframe;
public class prim extends Myframe{
/**
*
*/
private static final long serialVersionUID = 1L;
public static final int size = 22;//地点个数或矩阵大小
Image map = util.MyframeUtil.getImage(“Image\\map.png“);
Image adr = util.MyframeUtil.getImage(“Image\\adr.png“);
int time=0;//画图次数
int mincost=0;//记录当前路径距离和
// 读入TXT文件中的数据,即矩阵
public static int[][] getcost(String pathname){
int[][] cost = new int[size][size];
int line=0;
try {
File filename = new File(pathname); // 新建对应路径文件的文件对象
InputStreamReader reader = new InputStreamReader( new FileInputStream(filename)); // 建立一个输入流对象reader
BufferedReader br = new BufferedReader(reader); // 建立一个对象,它把文件内容转成计算机能读懂的语言
String str=null;
while(( str= br.readLine())!=null&&line {
String[] date = str.split(“\t“); //以‘\t‘做分隔符将str分割并保存为字符数组
if(date.length System.out.println(“size值大于矩阵行列数!ERROR!!!“);
System.exit(0);
}
for (int i = 0; i < size; i++) {//date.length
cost[line][i] = Integer.parseInt(date[i]); //将字符数组中的字符串转换为int类型并存入二维数组中
}
line++;
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
return cost;
}
//根据传入的矩阵(二维数组)计算出最小生成树
public static int[][] gettree(int[][] cost) {
int mincosti=0j=0k=0l=0;
int [][]T=new int[size][2];
int []Near=new int[size];
int mindistance=2000;
for(i=0;i for(j=0;j if(cost[i][j]!=0&&cost[i][j] mindistance = cost[i][j];
k=i;
l=j;
}
}
}
mincost = mindistance;//加入距离总和
T[0][0]=k;
T[0][1]=l;
for(i=0;i if(cost[i][l] Near[i]=l;
else Near[i]=k;
}
Near[k]=Near[l]=-1;
//寻找T的剩余n-2条边
for(i=1;i {
for(int a=0;a {
if(Near[a]!=(-1))
{
j=a;
break;
}
}
int minnearcost = cost[j][Near[j]];
for(int a=0;a {
if(Near[a]!=(-1)&&cost[a][Near[a]] {
minnearcost = cost[a][Near[a]];
j=a;
}
}
T[i][0]=j;
T[i][1]=Near[j];
mincost=mincost+cost[j][Near[j]];
Near[j]=-1;
for (int a=0;a {
if(Near[a]!=(-1)&&cost[a][Near[a]]>cost[a][j])
Near[a]=j;
}
}
return T;
}
//输入地点序号返回每个地点在地图的位置坐标的转换函数
public int[] Switchloc(int a) {
int[] xy=new int[2];
switch(a) {
case 0:
xy[0]=620;xy[1]=234;
break;
case 1:
xy[0]=
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 396 2018-10-05 10:51 Prim\.classpath
文件 380 2018-10-05 10:51 Prim\.project
文件 595 2018-10-05 10:51 Prim\.settings\org.eclipse.jdt.core.prefs
文件 6707 2018-10-18 11:48 Prim\bin\prim.class
文件 343 2018-10-18 11:17 Prim\bin\util\Constant.class
文件 647 2018-10-18 11:17 Prim\bin\util\Myfr
文件 718 2018-10-18 11:17 Prim\bin\util\Myfr
文件 1230 2018-10-18 11:17 Prim\bin\util\Myfr
文件 1110 2018-10-18 11:40 Prim\bin\util\Myfr
文件 17618 2018-10-06 11:09 Prim\Image\adr.png
文件 1900 2018-10-06 11:13 Prim\Image\cost.txt
文件 938794 2018-10-06 11:09 Prim\Image\map.png
文件 435 2018-10-18 11:48 Prim\Image\print.txt
文件 7305 2018-10-18 11:48 Prim\src\prim.java
文件 182 2018-10-05 17:27 Prim\src\util\Constant.java
文件 1394 2018-10-17 19:03 Prim\src\util\Myfr
文件 914 2018-10-18 11:40 Prim\src\util\Myfr
目录 0 2018-10-18 11:51 Prim\bin\util
目录 0 2018-10-18 11:51 Prim\src\util
目录 0 2018-10-18 11:51 Prim\.settings
目录 0 2018-10-18 11:51 Prim\bin
目录 0 2018-10-18 11:51 Prim\Image
目录 0 2018-10-18 11:51 Prim\src
目录 0 2018-10-18 11:51 Prim
----------- --------- ---------- ----- ----
980668 24
相关资源
- 多传感器标定算法
- 易语言加解密例程源码易语言生成随
- 上海交大计算机图形学课程视频31集
- 计算机数值分析.rar
- ISOMETR图标生成器教程(mp4视频教程)
- 简单好用的Nhibernate代码自动生成工具
- 终于解决了 Delphi XE 编译生成的EXE文件
- SpringMVC文件上传与的实现.rar
- pcbtemp电流计算软件
- 信号奇异点Lipschitz指数计算
- SpringBoot+H2+mybatis-plus59130
- 04741计算机网络原理知识点整理.docx(
- 2018全国大学生计算机博弈大赛 棋谱
- GBT 15532-2008 计算机软件测试规范
- SVR算法程序可运行
- 弹塑性力学Fortran算例
- 计算机图形学 边填充算法实现代码
- 电力系统潮流计算程序集合
- 右键属性文件校验插件可同时生成十
- CCS中如何生成LIB文件-并在另外CCS项目
- 中深层地热单井换热数值计算
- 电脑卡西欧计算器 fx-991CN X Emulator19中
- 根据硬件ID和程序ID生成注册码
- railroad铁路CAD生成
- Xpath生成器,自动生成可用的Xpath。
- 信号估计DOAmusicespritcapon
- 福建师范大学历年算法考卷
- 栈的实现及应用,六种基本算法
- 用汇编实现的学生成绩档案管理系统
- [免费]A320可靠性计算分析
评论
共有 条评论