Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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));
 }
Ejemplo n.º 5
0
 public PfadKandidat(Haltestelle starthaltestelle)
 {
     this.Starthaltestelle = starthaltestelle;
      this.strecken = ImmutableStack<Strecke>.Empty;
 }
Ejemplo n.º 6
0
        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);
            }
        }