示例#1
0
        public static void DijikstraCoz(Dugum baslangicDugum, Dugum bitisDugum)
        {
            Dugum dugum = baslangicDugum;

            dugum.yollar.Add(dugum);
            dugum.deger = 0;

            Recursive(null, dugum);
        }
示例#2
0
        public static void Recursive(Dugum parentDugum, Dugum dugum)
        {
            bool isChanged = false;

            for (int i = 0; i < dugum.kenarlar.Count; i++)
            {
                Kenar kenar = dugum.kenarlar.ElementAt(i);

                if (kenar.ucDugum == parentDugum)
                {
                    continue;
                }

                if (kenar.ucDugum.deger > (dugum.deger + kenar.agirlik))
                {
                    // yolları güncelle
                    if (parentDugum != null)
                    {
                        kenar.ucDugum.yollar.Clear();
                        kenar.ucDugum.yollar.AddRange(parentDugum.yollar.ToList());
                    }

                    kenar.ucDugum.yollar.Add(dugum);
                    kenar.ucDugum.yollar.Add(kenar.ucDugum);

                    kenar.ucDugum.deger = dugum.deger + kenar.agirlik;
                    isChanged           = true;
                }
            }

            if (!isChanged)
            {
                return;
            }

            for (int i = 0; i < dugum.kenarlar.Count; i++)
            {
                Kenar kenar = dugum.kenarlar.ElementAt(i);

                if (kenar.ucDugum == parentDugum)
                {
                    continue;
                }

                Recursive(dugum, kenar.ucDugum);
            }
        }
示例#3
0
        static void Main(string[] args)
        {
            Dugum d1, d2, d3, d4, d5, d6;

            d1 = new Dugum()
            {
                isim = "A", deger = 99999999
            };
            d2 = new Dugum()
            {
                isim = "B", deger = 99999999
            };
            d3 = new Dugum()
            {
                isim = "C", deger = 99999999
            };
            d4 = new Dugum()
            {
                isim = "D", deger = 99999999
            };
            d5 = new Dugum()
            {
                isim = "E", deger = 99999999
            };
            d6 = new Dugum()
            {
                isim = "F", deger = 99999999
            };

            Kenar k12, k13, k34, k25, k26, k36, k46, k45;
            Kenar k21, k31, k43, k52, k62, k63, k64, k54;

            k12 = new Kenar()
            {
                ucDugum = d2, agirlik = 2
            };
            k13 = new Kenar()
            {
                ucDugum = d3, agirlik = 1
            };
            k34 = new Kenar()
            {
                ucDugum = d4, agirlik = 1
            };
            k25 = new Kenar()
            {
                ucDugum = d5, agirlik = 2
            };
            k26 = new Kenar()
            {
                ucDugum = d6, agirlik = 5
            };
            k36 = new Kenar()
            {
                ucDugum = d6, agirlik = 2
            };
            k46 = new Kenar()
            {
                ucDugum = d6, agirlik = 5
            };
            k45 = new Kenar()
            {
                ucDugum = d5, agirlik = 7
            };

            k21 = new Kenar()
            {
                ucDugum = d1, agirlik = 2
            };
            k31 = new Kenar()
            {
                ucDugum = d1, agirlik = 1
            };
            k43 = new Kenar()
            {
                ucDugum = d3, agirlik = 1
            };
            k52 = new Kenar()
            {
                ucDugum = d2, agirlik = 2
            };
            k62 = new Kenar()
            {
                ucDugum = d2, agirlik = 5
            };
            k63 = new Kenar()
            {
                ucDugum = d3, agirlik = 2
            };
            k64 = new Kenar()
            {
                ucDugum = d4, agirlik = 5
            };
            k54 = new Kenar()
            {
                ucDugum = d4, agirlik = 7
            };


            d1.kenarlar.Add(k12); d1.kenarlar.Add(k13);
            d2.kenarlar.Add(k25); d2.kenarlar.Add(k26);
            d3.kenarlar.Add(k34); d3.kenarlar.Add(k36);
            d4.kenarlar.Add(k45); d4.kenarlar.Add(k46);

            d2.kenarlar.Add(k21); d3.kenarlar.Add(k31);
            d5.kenarlar.Add(k52); d6.kenarlar.Add(k62);
            d4.kenarlar.Add(k43); d6.kenarlar.Add(k63);
            d5.kenarlar.Add(k54); d6.kenarlar.Add(k64);

            DijikstraCoz(d1, d5);

            foreach (Dugum dgm in d5.yollar)
            {
                Console.WriteLine(dgm.isim + ":" + dgm.deger);
            }

            Console.Read();
        }