Exemple #1
0
        public Graf MinDrzewoRozp_Kruskal()
        {
            Graf mst = new Graf(iloscWierzcholkow);


            // Sortowanie krawedzi
            List <Pair <int, int[]> > listaKrawedzi = new List <Pair <int, int[]> >();

            for (int i = 0; i < iloscWierzcholkow; i++)
            {
                for (int j = i + 1; j < iloscWierzcholkow; j++)
                {
                    if (macierzWag[i, j] != int.MaxValue)
                    {
                        listaKrawedzi.Add(new Pair <int, int[]>(macierzWag[i, j], new int[] { i, j }));
                    }
                }
            }
            listaKrawedzi.Sort();

            // Iterowanie po krawedziach
            foreach (var p in listaKrawedzi)
            {
                var k = p.Value;
                if (mst.CzyIstniejeSciezka(k[0], k[1]))
                {
                    continue;
                }
                else
                {
                    mst.DodajKrawedzNieskierowana(k[0], k[1], macierzWag[k[0], k[1]]);
                    mst.Polacz(k[0], k[1]);
                }
            }

            return(mst);
        }
Exemple #2
0
        static void Main(string[] args)
        {
            Graf   g = new Graf(n);
            Random r = new Random();

            for (int i = 0; i < n; i++) // dodanie krawedzi
            {
                for (int j = i; j < n; j++)
                {
                    g.DodajKrawedzNieskierowana(i, j, r.Next(1, 100));
                }
            }

            Console.WriteLine("Macierz wag grafu g: ");
            WypiszMacierzWag(g.MacierzWag, n);


            Graf mst = g.MinDrzewoRozp_Kruskal();

            Console.WriteLine("Macierz wag drzewa mst stworzonego na podstawie grafu g: ");
            WypiszMacierzWag(mst.MacierzWag, n);

            Console.ReadLine();
        }