Esempio n. 1
0
        private void AstarSezgisel()
        {
            Astar = new Astar();
            Astar.degeroku(baslangıclabel);
            List <Astar> Listeacik   = new List <Astar>();
            List <int[]> Listekapalı = new List <int[]>();

            if (!TersSıraKontrol(Astar.matrisDegerler, Astar.bitismatris))
            {
                lbl_durum.Text = "Ters sıralı eleman sayısı çift olmalı";
                return;
            }
            else
            {
                lbl_durum.Text = "Liste hazır...";
            }

            Astar.Hdeger();
            Astar.Fdeger();

            Listeacik.Add(Astar);
            Astar minimumYol;

            do
            {
                minimumYol = MinYol(Listeacik);
                Listekapalı.Add(minimumYol.matrisDegerler);
                ListeKuyruğu(minimumYol, Listeacik, Listekapalı);
            } while (minimumYol.h != 0 && Listeacik.Count > 0);

            // sonuç duruma ulaşana kadar
            // veya liste boş olana akdar sürdür
            SonucYaz(minimumYol, textBox_Adimlar, 0);
        }
Esempio n. 2
0
        private Astar CocukOlustur(Astar minYol, int bosluk, int deger)
        {
            // yeni düğüm ekle/oluştur
            Astar cocuk = new Astar();

            Array.Copy(minYol.matrisDegerler, cocuk.matrisDegerler, minYol.matrisDegerler.Length);

            // başlangıçtan gelinen mesafeyi bul
            cocuk.g = minYol.g + 1;

            DegisimDegerleri(cocuk.matrisDegerler, bosluk, deger);

            cocuk.Hdeger();
            cocuk.Fdeger();
            cocuk.parent = minYol;
            return(cocuk);
        }