public void Alle_Pfade_bestimmen(Netzplan netzplan, string starthaltestellenname, string zielhaltestellenname) { this.netzplan = netzplan; if (this.netzplan == null) { throw new ArgumentNullException("netzplan"); } this.starthaltestelle = this.FindHaltestelle(starthaltestellenname); if (this.starthaltestelle == null) { throw new InvalidOperationException("Starthaltestelle nicht gefunden"); } this.zielhaltestelle = FindHaltestelle(zielhaltestellenname); if (this.zielhaltestelle == null) { throw new InvalidOperationException("Zielhaltestelle nicht gefunden"); } var initialKandidat = new PfadKandidat(starthaltestelle); this.StarteSuche(initialKandidat, numberOfWorkers: 7); this.StarteAusgabe(); this.OutputEndOfSteam(); }
private void Strecke_Hinzufügen(Haltestelle halteStelle, string linienname, Haltestelle ziel) { var strecke = new Strecke(); strecke.Linienname = linienname; strecke.Zielhaltestellenname = ziel.Name; var aktuelleStrecken = halteStelle.Strecken.ToList(); aktuelleStrecken.Add(strecke); halteStelle.Strecken = aktuelleStrecken.ToArray(); }
private IEnumerable<Haltestelle> BerechneHalteStellen() { for (int x = 0; x < this.Breite; x++) { for (int y = 0; y < this.Laenge; y++) { var haltestelle = new Haltestelle(); haltestelle.Name = this.HaltestellenName(x, y); haltestelle.Strecken = this.Strecken(x, y).ToArray(); yield return haltestelle; } } }
private IEnumerable<string> GenerateStrecken(Netzplan netzplan, Haltestelle haltestelle) { return haltestelle.Strecken.Select(strecke => string.Format(streckenformat, strecke.Linienname, strecke.Zielhaltestellenname)); }
public PfadKandidat(Haltestelle starthaltestelle) { this.Starthaltestelle = starthaltestelle; this.strecken = ImmutableStack<Strecke>.Empty; }
private void BackTrack(PfadKandidat kandidat) { if (this.Reject(kandidat)) { return; } if (this.Accept(kandidat)) { this.akzeptiertePfadKandidaten.Add(kandidat); return; } Haltestelle zielhaltestelle; if (kandidat.StreckenCount == 0) { zielhaltestelle = kandidat.Starthaltestelle; } else { var zielhaltestellenname = kandidat.Zielhaltestellenname; zielhaltestelle = this.FindHaltestelle(zielhaltestellenname); } foreach (var strecke in zielhaltestelle.Strecken) { var nextKandidat = kandidat.Clone(); nextKandidat.AddStrecke(strecke); this.kandidaten.Add(nextKandidat); } }