Example #1
0
        public void kosztCalejSciezki()
        {
            algorytmFloyda();
            suma = new int[liczbaWezlow, liczbaWezlow];
            Wezel   Pierwszy, Ostatni;
            Sciezka S1;
            int     pomocnicza;

            for (int i = 0; i < liczbaWezlow; i++)
            {
                for (int j = 0; j < liczbaWezlow; j++)
                {
                    if (i != j)
                    {
                        pomocnicza = 0;
                        Pierwszy   = wezly[i];
                        Ostatni    = wezly[j];
                        S1         = new Sciezka(Pierwszy, Ostatni);
                        S1.zwroc_ListaKrawedziSciezki = S1.wyznaczSciezke(Pierwszy, Ostatni, tablicaKierowaniaLaczami,
                                                                          tablicaKierowaniaWezlami, ref wezly, 1, Koszty);
                        S1.wyznaczWezly(Pierwszy);
                        foreach (Lacze krawedz in S1.zwroc_ListaKrawedziSciezki)
                        {
                            pomocnicza = pomocnicza + (int)krawedz.Waga;
                        }
                        suma[i, j] = pomocnicza;
                    }
                    else
                    {
                        suma[i, j] = 0;
                    }
                }
            }
        }
Example #2
0
 private int Test_mst(List <int> drzewo, Sciezka galaz)
 {
     for (int i = 0; i < drzewo.Count(); i++)
     {
         if (galaz.Start == drzewo[i])
         {
             for (int j = 0; j < drzewo.Count(); j++)
             {
                 if (galaz.Koniec == drzewo[j])
                 {
                     return(0);
                 }
             }
             return(galaz.Koniec);
         }
         if (galaz.Koniec == drzewo[i])
         {
             for (int j = 0; j < drzewo.Count(); j++)
             {
                 if (galaz.Start == drzewo[j])
                 {
                     return(0);
                 }
             }
             return(galaz.Start);
         }
     }
     return(0);
 }
Example #3
0
        public void testFloyd(ref Lacze[,] tablicaKierowaniaLaczami, ref Wezel[,] tablicaKierowaniaWezlami)
        {
            Console.WriteLine();
            Console.WriteLine();
            Sciezka S1 = new Sciezka();

            Console.WriteLine($"Podaj nr wierzcholka(od 1 do {wezly.Count}), z ktorego wyruszamy");
            int nr1 = 0, nr2 = 0;

            try
            {
                nr1 = Int32.Parse(Console.ReadLine());
            }
            catch (Exception)
            {
                Console.WriteLine($"Podaj liczby od 1 do  {wezly.Count} ");
            }

            Console.WriteLine($"Podaj nr wierzcholka (od 1 do  {wezly.Count}), do ktorego chcesz sie udac:");

            try
            {
                nr2 = Int32.Parse(Console.ReadLine());
            }
            catch (Exception)
            {
                Console.WriteLine($"Podaj liczby od 1 do  {wezly.Count} ");
            }

            S1.Wezel1 = wezly[nr1 - 1]; //Ustawiamy poczatek i koniec Sciezki
            S1.Wezel2 = wezly[nr2 - 1];

            S1.KrawedzieSciezki = S1.wyznaczSciezke(wezly[nr1 - 1], wezly[nr2 - 1], tablicaKierowaniaLaczami,
                                                    tablicaKierowaniaWezlami, ref wezly, 1, Koszty);
            S1.wyznaczWezly(wezly[nr1 - 1]);
            S1.pokazSciezke();
        }
Example #4
0
        public List <Lacze> MaxSciezka()
        {
            algorytmFloyda();
            // kosztCalejSciezki();
            float sumaMax = 0;
            int   poczatek = 0, koniec = 0;

            for (int i = 0; i < liczbaWezlow; i++)
            {
                for (int j = i + 1; j < liczbaWezlow; j++)
                {
                    try
                    {
                        if (tablicaKosztow[i, j] > sumaMax)
                        {
                            sumaMax  = tablicaKosztow[i, j];
                            poczatek = i;
                            koniec   = j;
                        }
                    }
                    catch
                    {
                    }
                }
            }
            Wezel   Pierwszy, Ostatni;
            Sciezka S1;


            Pierwszy = wezly[poczatek];
            Ostatni  = wezly[koniec];
            S1       = new Sciezka(Pierwszy, Ostatni);
            S1.zwroc_ListaKrawedziSciezki = S1.wyznaczSciezke(Pierwszy, Ostatni, tablicaKierowaniaLaczami,
                                                              tablicaKierowaniaWezlami, ref wezly, 1, Koszty);
            return(S1.zwroc_ListaKrawedziSciezki);
        }