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)}"); } }
public void CsucsHozzaad(Csucs csucs) { if (csucs != null && !Csucsok.Contains(csucs)) { Csucsok.Add(csucs); if (csucs.Muzeum.Erdekesseg == ErdekessegiSzint.NagyonJo) { NagyonJoMuzeumLancoltLista.BeszurasElejere(csucs.Muzeum); } } else { Console.WriteLine($"A paraméter null vagy már szerepel a gráfban: {nameof(csucs)}"); } }
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)}"); } }