数组列表中的最小生成树

时间:2017-04-30 20:14:04

标签: java arraylist minimum-spanning-tree

我想知道是否可以从ArrayList中找到最小生成树。

这就是我目前所拥有的:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;


public class GraphReading 
{
public static void main(String[] args) throws FileNotFoundException 
{
    File f= new File("Bridges.txt");
    Scanner sc= new Scanner(f);

    ArrayList < ArrayList<Integer>  >   Vertices = new ArrayList<>();

    while(sc.hasNext())
    {
        String Line =     sc.nextLine();
        String numbers[] = Line.split(" ");

        ArrayList<Integer>  List = new ArrayList<>();
        for(int i=0;i <  numbers.length ;i++)
        {
                if(numbers[i].equals("")==false)
                    List.add(  Integer.parseInt( numbers [i]));
        }
        Vertices.add(List);
    }
    printAllvertices(Vertices);
}
public static  void printAllvertices(  ArrayList < ArrayList<Integer>  >   Vertices  )
{
    for(int i=0;i<  Vertices .size();i++)
    {
        System.out.print("Vertice "+i+ " has ");
             ArrayList<Integer>  List =  Vertices.get(i);
             for(int j=0;j<List.size();j++)
             {
                 System.out.print(List.get(j)+" ");
             }
             System.out.println();




    }

}

}

我正在考虑从每个顶点找到最小数字,但我不太确定它必然会按我想要的方式工作。

1 个答案:

答案 0 :(得分:0)

当然可以!我发现这个网站有一些很好的文档,说明如何使用PRIM的算法。

http://www.geeksforgeeks.org/greedy-algorithms-set-5-prims-minimum-spanning-tree-mst-2/

您可能需要转换一些代码,但这应该是微不足道的。寻找最便宜的边缘是一种解决方案,但可能并不总是导致最小的生成树。这样,您可能会在图表中意外地“走弯路”,使您的树比预期的大。