private List <Вершина> асчетПотенциалаВершин(Вершина вершина, ref int УровеньДостижимости) { var СмежныеВершины = new List <Вершина>(); var Счетчик = УровеньДостижимости; Счетчик--; foreach (var ребро in ебра.Where(f => f.ВекторНачало.Equals(вершина)).ToList()) { if (ребро.ВекторКонец.Потенциал > (ребро.ВекторНачало.Потенциал + ребро.Вес)) { ребро.ВекторКонец.Потенциал = (ребро.ВекторНачало.Потенциал + ребро.Вес); ребро.ВекторКонец.Источник = ребро.ВекторНачало; } if (Счетчик > 0) { СмежныеВершины.AddRange(асчетПотенциалаВершин(ребро.ВекторКонец, ref Счетчик)); } else { СмежныеВершины.Add(ребро.ВекторКонец); } } return(СмежныеВершины.Distinct().ToList()); }
private void КратчайшийПуть(Вершина вершина, ref List <string> l) { if (вершина.Источник != null) { l.Add($"из '{вершина.Источник.НомерВершины}' в '{вершина.НомерВершины}'"); КратчайшийПуть(вершина.Источник, ref l); } }
public void ДобавитьВершину(Вершина вершина) { if (Вершины.Where(f => f.НомерВершины == вершина.НомерВершины).Any()) { MessageBox.Show($"Вершина c номером '{вершина.НомерВершины}' уже существует в графе.", "", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } Вершины.Add(вершина); }
public ебро(int Вес, Вершина ВекторНачало, Вершина ВекторКонец) { this.Вес = Вес; this.ВекторНачало = ВекторНачало; this.ВекторКонец = ВекторКонец; }