public bool VezetEL(Csucs honnan, Csucs hova) { if (Elek.SingleOrDefault(el => el.Honnan == honnan && el.Hova == hova) != null) { return(true); } else { return(false); } }
public void ElTorol(El el) { if (el != null && Elek.Contains(el)) { Elek.Remove(el); } else { Console.WriteLine($"A paraméter null vagy nincs ilyen él a gráfban: {nameof(el)}"); } }
public void ElHozzaad(El el) { if (!Elek.Any(e => (el.Hova == e.Hova && el.Honnan == e.Honnan) || (el.Honnan == e.Hova && el.Hova == e.Honnan))) { Elek.Add(el); } else { Console.WriteLine($"Már van él a két múzeum között: {el.Honnan}, {el.Hova}"); } }
private Dictionary <int, (Csucs csucs, float tavolsagStarttol, Csucs honnanJottem)> DijkstraElemek(Csucs start) { var dijkstraAdatszerkezet = new Dictionary <int, (Csucs csucs, float tavolsagStarttol, Csucs honnanJottem)>(); var csucsPrioritasosSor = new Dictionary <int, Csucs>(); Csucsok.ForEach(csucs => { dijkstraAdatszerkezet.Add(csucs.GetHashCode(), (csucs, int.MaxValue, null)); csucsPrioritasosSor.Add(csucs.GetHashCode(), csucs); }); var kiindulo = dijkstraAdatszerkezet[start.GetHashCode()]; kiindulo.tavolsagStarttol = 0; dijkstraAdatszerkezet[start.GetHashCode()] = kiindulo; while (csucsPrioritasosSor.Any()) { var vizsgalandoMaradek = dijkstraAdatszerkezet .Where(rekord => csucsPrioritasosSor.ContainsValue(rekord.Value.csucs)); var kivalasztottLegkisebb = vizsgalandoMaradek .FirstOrDefault(rekord => rekord.Value.tavolsagStarttol == vizsgalandoMaradek.Min(elem => elem.Value.tavolsagStarttol)) .Value; csucsPrioritasosSor.Remove(kivalasztottLegkisebb.csucs.GetHashCode()); var szomszedok = Csucsok.Where(csucs => Elek.Any(el => GetEl(kivalasztottLegkisebb.csucs, csucs) != null)).ToList(); foreach (var szomszedCsucs in szomszedok) { var ossztavolsag = dijkstraAdatszerkezet[kivalasztottLegkisebb.csucs.GetHashCode()].tavolsagStarttol + GetEl(kivalasztottLegkisebb.csucs, szomszedCsucs).Tavolsag; if ( ossztavolsag < dijkstraAdatszerkezet[szomszedCsucs.GetHashCode()].tavolsagStarttol ) { var szomszed = dijkstraAdatszerkezet[szomszedCsucs.GetHashCode()]; szomszed.tavolsagStarttol = ossztavolsag; szomszed.honnanJottem = kivalasztottLegkisebb.csucs; dijkstraAdatszerkezet[szomszedCsucs.GetHashCode()] = szomszed; } } } return(dijkstraAdatszerkezet); }
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)}"); } }
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.Muzeum.Erdekesseg == ErdekessegiSzint.NagyonJo && NagyonJoMuzeumLancoltLista.Contains(csucs.Muzeum)) { NagyonJoMuzeumLancoltLista.Torles(csucs.Muzeum); } } else { Console.WriteLine($"A paraméter null vagy nincs ilyen csúcs a gráfban: {nameof(csucs)}"); } }
private (List <Csucs> csucsok, List <El> elek) UtatVisszafejt(Csucs vegpont, Csucs kezdopont) { var dijkstra = DijkstraElemek(kezdopont); var cel = dijkstra.SingleOrDefault(rekord => rekord.Value.csucs == vegpont); var csucsok = new List <Csucs>(); var elek = new List <El>(); while (cel.Value.honnanJottem != null) { csucsok.Add(cel.Value.csucs); cel = dijkstra.SingleOrDefault(rekord => rekord.Value.csucs == cel.Value.honnanJottem); } csucsok.Add(dijkstra.SingleOrDefault(rekord => rekord.Value.tavolsagStarttol == 0).Value.csucs); csucsok.Reverse(); for (int i = 0; i <= csucsok.Count - 2; i++) { elek.Add(Elek.SingleOrDefault(el => el.Honnan == csucsok[i] && el.Hova == csucsok[i + 1])); } return(csucsok, elek); }
public El GetEl(Csucs honnan, Csucs hova) { return(Elek.SingleOrDefault(el => el.Honnan == honnan && el.Hova == hova)); }
public bool VezetElInnen(Csucs csucs) => Elek.Any(el => el.Honnan == csucs);
public bool VezetElIde(Csucs csucs) => Elek.Any(el => el.Hova == csucs);
public void ElHozzaad(El el) { Elek.Add(el); }
private bool VezetElIde(Csucs csucs) => Elek.Any(el => el.Hova == csucs);