gerichtete und gewichtete Multi-Graph

ihdnag8

Grünschnabel
Hallo

Ich möchte einen gerichteten und gewichteten Multi-Graphen in java Implementieren.
Dazu habe ich mir eine Klasse für Kanten und eine Klasse für Knoten erstellt.
In der Klasse Graph wird der eigentliche Graph implementiert.
Nun bin ich mir nicht sicher welche Container für die Kanten und Knoten in der Klasse Graph benutzen soll. Ich würde für die Kanten ein HashSet benutzen. Und in einer HashMap speichere ich die Knoten als key und die dazugehörigen Kanten als value. HashMap<Knoten,HashSet<Kanten>.
Die Gewichtung der Kanten muss ich in der Klasse Graph,so ist es in der Aufgabenstellung verlangt. Bevor ich jetzt mit etwas schwierigeren Algorithmen (Dijkstra, Bellman Ford) wollte ich ob ich den richtigen Container verwendet habe.

Klasse Knoten
Code:
public class Knoten {
   private String beschreibung;

    * Erzeugt einen neuen Knoten mit Beschreibung.
    */
   Knoten(String be){
       beschreibung = be;
   }

   public String getBeschreibung(){
       return beschreibung;
   }


}//class Knoten

Klasse Kanten
Code:
public class Kanten {

   private Knoten start;
   private Knoten end;
   private String beschreibung;
   /**
    * Erzeugt eine neue Kante mit Start und End Knoten.
    */
   public Kanten(Knoten start, Knoten end, String be)  {
       this.start = start;
       this.end = end;
      beschreibung = be;
   }

     public Knoten getEndKnoten(){
       return end;
   }
     public Knoten getStartKnoten(){
       return start;
   }
     
     public String getBeschreibung(){
       return beschreibung;
   }  

}//class Kanten


Klasse Graph:
Code:
import java.util.*;


public class Graph{

    private HashMap<Knoten, HashSet<Kanten>> knoten;
    private HashMap<Kanten, Double> kanten;


    public Graph() {
        knoten = new HashMap<Knoten, HashSet<Kanten>>();
        kanten = new HashMap<Kanten, Double>();
    }

    public void add(Kante kante){
            kanten.put(kante, 1.0);
            HashSet<Kanten> ka = knoten.get(kante.getStartKnoten());
            ka.add(kante);
    }
    
    
    public void add(Knoten knote){
        knoten.put(knote, new HashSet<Kanten>());
    } 

    public void setGewicht(Kanten kante, double gewicht){      
        kanten.put(kante, gewicht);
    }//class Graph

Danke
 
Zurück