• 大小: 66KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-14
  • 语言: 其他
  • 标签: 生成  pri      Jav  

资源简介

通过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\Myframe$1.class

     文件        718  2018-10-18 11:17  Prim\bin\util\Myframe$PaintThread.class

     文件       1230  2018-10-18 11:17  Prim\bin\util\Myframe.class

     文件       1110  2018-10-18 11:40  Prim\bin\util\MyframeUtil.class

     文件      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\Myframe.java

     文件        914  2018-10-18 11:40  Prim\src\util\MyframeUtil.java

     目录          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


评论

共有 条评论