public void NeueKante(string quelle, string ziel, double gewicht) { Knoten q = Knoten.Find(y => y.Name == quelle); Knoten z = Knoten.Find(y => y.Name == ziel); NeueKante(q, z, gewicht); }
public Kante(Knoten quellKnoten, Knoten zielKnoten, double gewicht) { Gewicht = gewicht; QuellKnoten = quellKnoten; ZielKnoten = zielKnoten; IstInLoesung = false; }
//GeoWKT;Knoten1;Knoten2;Gewicht public static Graph LeseNetzwerk(string csvDateiPfad) { Graph n = new Graph(); Dictionary <string, Knoten> geleseneKnoten = new Dictionary <string, Knoten>(); Dictionary <string, Kante> geleseneKanten = new Dictionary <string, Kante>(); using (var reader = new StreamReader(csvDateiPfad, Encoding.Default)) { //Kopfzeile reader.ReadLine(); while (reader.Peek() >= 0) { string zeile = reader.ReadLine().Trim(); if (!string.IsNullOrWhiteSpace(zeile)) { string[] spaltenArray = zeile.Split(';'); string k1 = spaltenArray[1]; string k2 = spaltenArray[2]; if (double.TryParse(spaltenArray[3], out double w)) { //check ob Kante (oder Gegenkante) bereits zugefügt if (!(geleseneKanten.ContainsKey($"{k2}_{k1}") | geleseneKanten.ContainsKey($"{k1}_{k2}"))) { //merke Knoten, falls noch nicht eingelesen for (int i = 1; i <= 2; i++) { if (!geleseneKnoten.TryGetValue(spaltenArray[i], out Knoten knoten)) { knoten = new Knoten() { Name = spaltenArray[i] }; geleseneKnoten.Add(knoten.Name, knoten); } } //merke Kante Kante kante = new Kante(geleseneKnoten[k1], geleseneKnoten[k2], w); geleseneKanten.Add($"{k1}_{k2}", kante); } } } } } n.Knoten.AddRange(geleseneKnoten.Values); n.Kanten.AddRange(geleseneKanten.Values); return(n); }
private void Vereinige(Knoten k1, Knoten k2) { Graph baum1 = k1.Graph; Graph baum2 = k2.Graph; //baum 1 erweitern foreach (Knoten knotenAusBaum2 in baum2.Knoten) { baum1.KnotenZufuegen(knotenAusBaum2); } foreach (Kante kanteAusBaum2 in baum2.Kanten) { baum1.Kanten.Add(kanteAusBaum2); } //baum 2 entfernen Teilbäume.Remove(baum2); }
public void NeueKante(Knoten quelle, Knoten ziel, double gewicht) { Kanten.Add(new Kante(quelle, ziel, gewicht)); }
public void KnotenZufuegen(Knoten knoten) { knoten.Graph = this; Knoten.Add(knoten); }
public Graph(Knoten startKnoten) : this() { KnotenZufuegen(startKnoten); Name = startKnoten.Name; }
private string FindeBaum(Knoten knoten) { return(knoten.Graph.Name); }