Esempio n. 1
0
        public static Csucs LegkozelebbiCsucs(IEnumerable <Csucs> csucsok, Csucs celCsucs, Graf graf)
        {
            double legrovidebbTavolsag = -1;
            Csucs  legkozelebbiCSucs   = null;

            int index = 0;

            foreach (Csucs csucs in csucsok)
            {
                double tavolsag = Tavolsag(csucs, celCsucs, graf);
                if (index == 0)
                {
                    legrovidebbTavolsag = tavolsag;
                    legkozelebbiCSucs   = csucs;
                }
                else if (legrovidebbTavolsag > tavolsag)
                {
                    legrovidebbTavolsag = tavolsag;
                    legkozelebbiCSucs   = csucs;
                }
                index += 1;
            }

            return(legkozelebbiCSucs);
        }
Esempio n. 2
0
 public bool VezetEL(Csucs honnan, Csucs hova)
 {
     if (Elek.SingleOrDefault(el => el.Honnan == honnan && el.Hova == hova) != null)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Esempio n. 3
0
        public double ElHossz(Csucs honnan, Csucs hova)
        {
            double hossz = 0;

            if (VezetEL(honnan, hova))
            {
                El el = GetEl(honnan, hova);
                hossz = el.Tavolsag;
            }
            return(hossz);
        }
Esempio n. 4
0
 public void UjCsucs(Csucs csucs)
 {
     if (csucs != null && !Csucsok.Contains(csucs))
     {
         Csucsok.Add(csucs);
         if (csucs.Latvanyossag.Erdekesseg == ErdekessegiSzint.NagyonJó)
         {
             LatvanyossagokNagyonJo.UjFelvetel(csucs.Latvanyossag);
         }
     }
     else
     {
         Console.WriteLine($"A paraméter null vagy már szerepel a gráfban: {nameof(csucs)}");
     }
 }
Esempio n. 5
0
 public void CsucsTorol(Csucs csucs)
 {
     if (csucs != null && Csucsok.Contains(csucs))
     {
         Csucsok.Remove(csucs);
         Elek.RemoveAll(el => el.Honnan == csucs || el.Hova == csucs);
         if (csucs.Latvanyossag.Erdekesseg == ErdekessegiSzint.NagyonJó && LatvanyossagokNagyonJo.Contains(csucs.Latvanyossag))
         {
             LatvanyossagokNagyonJo.Torol(csucs.Latvanyossag);
         }
     }
     else
     {
         Console.WriteLine($"A paraméter null vagy nincs ilyen csúcs a gráfban: {nameof(csucs)}");
     }
 }
Esempio n. 6
0
        public List <Csucs> Szomszedok(Csucs aktualisCsucs, Graf graf)
        {
            List <Csucs> szomszedok = new List <Csucs>();

            foreach (Csucs csucs in graf.Csucsok)
            {
                if (!csucs.Equals(aktualisCsucs)) //az aktuális csúcs nem szomszédja önmagának
                {
                    if (Utkereses.Tavolsag(aktualisCsucs, csucs, graf) > 0)
                    {
                        szomszedok.Add(csucs);
                    }
                }
            }

            return(szomszedok);
        }
Esempio n. 7
0
        public static List <Csucs> LegrovidebbUt(Map map, Csucs forrasCsucs, Csucs celCsucs, Graf graf)
        {
            //Útvonalkeresés a forrás és cél cúcsok között
            List <Csucs> utvonal = new List <Csucs>();

            utvonal.Add(forrasCsucs);

            Csucs aktualisCsucs = forrasCsucs;

            while (true)
            {
                // Aktuális csúcs összes szomszédjának feltérképezése
                List <Csucs> osszesSzomszed = map.Szomszedok(aktualisCsucs, graf);

                //Duplikátumok elkerülése
                IEnumerable <Csucs> szomszedok = from szomszed in osszesSzomszed
                                                 where !utvonal.Contains(szomszed)
                                                 select szomszed;

                //Kilép, ha nincs szomszéd, vagy elértük a cél csúcsot
                if (szomszedok.Count() == 0)
                {
                    break;
                }
                if (szomszedok.Contains(celCsucs))
                {
                    utvonal.Add(celCsucs);
                    break;
                }

                // Kiválasztjuk a következő csúcsot (a legközelebbi szomszédot)
                Csucs legkozelebbiCsucs = LegkozelebbiCsucs(szomszedok, celCsucs, graf);
                utvonal.Add(legkozelebbiCsucs);
                aktualisCsucs = legkozelebbiCsucs;
            }

            return(utvonal);
        }
Esempio n. 8
0
 public El(Csucs honnan, Csucs hova, float tavolsag)
 {
     Honnan   = honnan;
     Hova     = hova;
     Tavolsag = tavolsag;
 }
Esempio n. 9
0
        public static double Tavolsag(Csucs csucs1, Csucs csucs2, Graf graf)
        {
            double tavolsag = graf.ElHossz(csucs1, csucs2);

            return(tavolsag);
        }
Esempio n. 10
0
 public El GetEl(Csucs honnan, Csucs hova)
 {
     return(Elek.SingleOrDefault(el => el.Honnan == honnan && el.Hova == hova));
 }
Esempio n. 11
0
 public bool VezetElInnen(Csucs csucs) => Elek.Any(el => el.Honnan == csucs);
Esempio n. 12
0
 public bool VezetElIde(Csucs csucs) => Elek.Any(el => el.Hova == csucs);