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); }
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); }