Beispiel #1
0
        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());
        }
Beispiel #2
0
 private void КратчайшийПуть(Вершина вершина, ref List <string> l)
 {
     if (вершина.Источник != null)
     {
         l.Add($"из '{вершина.Источник.НомерВершины}' в '{вершина.НомерВершины}'");
         КратчайшийПуть(вершина.Источник, ref l);
     }
 }
Beispiel #3
0
 public void ДобавитьВершину(Вершина вершина)
 {
     if (Вершины.Where(f => f.НомерВершины == вершина.НомерВершины).Any())
     {
         MessageBox.Show($"Вершина c номером '{вершина.НомерВершины}' уже существует в графе.",
                         "", MessageBoxButtons.OK, MessageBoxIcon.Error);
         return;
     }
     Вершины.Add(вершина);
 }
Beispiel #4
0
 public ебро(int Вес, Вершина ВекторНачало, Вершина ВекторКонец)
 {
     this.Вес          = Вес;
     this.ВекторНачало = ВекторНачало;
     this.ВекторКонец  = ВекторКонец;
 }