2017-04-30 5 views
0

Je me demande s'il est possible de trouver le spanning tree minimum à partir d'une ArrayList.Spanning tree minimum à partir de la liste de tableaux

C'est ce que j'ai actuellement:

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(); 




    } 

} 

} 

Je pensais juste de trouver le nombre minimum de chacun des sommets, mais je ne suis pas trop sûr que nécessairement travailler comme je le voulais aussi.

Répondre

0

Bien sûr, vous pouvez! J'ai trouvé ce site qui a une bonne documentation sur la façon de le faire en utilisant l'algorithme de PRIM.

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

Vous devrez peut-être convertir un peu de code autour, mais cela devrait être trivial. La recherche des arêtes les moins chères est une solution, mais peut ne pas toujours aboutir à l'arborescence minimale. De cette façon, vous pourriez accidentellement faire des «détours» dans votre graphique, rendant votre arbre plus grand que prévu.

+0

Merci pour votre aide! –

+0

Pourriez-vous marquer la réponse comme "répondue" en appuyant sur la coche verte si cela a vraiment aidé? Cela aiderait les autres utilisateurs qui ont la même question, comme vous. :-) – Thoma