C# ile A* (Star) Algoritması kullanarak 8 Taş Bulmacasını Çözmek | Yapay Zeka – Solving 8 Stone Puzzles using A * (Star) Algorithm with C# Artificial Intelligence

A star algoritması sezgisel bilgileri kullanarak bir durumdan bir amaca ulaşmaktır. Bu amaç duruma ulaşmak için minimum yolun bulunmasında daha az tarama yapmaya olanak tanımalıdır.

İyi seçilmiş bir sezgisel fonksiyon ile çok az dallanma yaparak hedefe yaklaşabiliriz.

Bu görselde yeşil kutudan kırmızı kutuya gitmeye çalışalım. Ancak kutuların ortasında bir duvar olsun.

Öncelikle yeşil kutudan başlayarak çevre alanları taramaya başlayacağız. Daha sonra taradığımız alanları açık bir listeye ekleyeceğiz.

Eğer karenin çevresinde duvar var ise bunu listeye eklemeyeceğiz.

Daha sonra ise başlangıç karesini kapalı bir listeye ekleyeceğiz.

Yukarıdaki görsel gibi çevresini tarayacağız.

Daha sonra açık listeye eklediğimiz kareleri her birisini F = G + H denklemi ile en küçük F değerini seçeceğiz.

G = Başlangıç noktasına göre yoldur.

H = Amacımıza ulaşmak için tahmini bir değerdir. (Heuristic) Tahmin

F değerinin en küçüğünü seçeceğiz çünkü o yol bizi kısadan amacımıza ulaştıracaktır.

Her kare hareketi için 10’ar puan diyelim. Köşegen üzerinde yapılan çaprak hareket 14 puandır (10*kök(2))

Yani ilk kutumuzu ele alırsak üstteki gibi bir sonuç çıkacaktır. Sol üst F değeri Sol alt G değeri sağ alt H değeridir.

Bu değerlere baktığımızda F değerinin en küçüğüne gideceği için kutumuz sağa gitmelidir.

Daha sonra aşağı aşağı gidecektir. Fakat bir kısa yolumuz daha vardır. Direk F 40 olan yere gitmek yerine çaprazdaki 54 değerine sahip olan kutuya gitmek bizi daha kısadan götürecektir.

Şu şekilde bir soru olabilir. Öncelikle F 54’e gidiyoruz daha sonra aşağı 74 gidiyoruz ama çapraz gitsek daha kısa olabilir denilebilir fakat duvar buna engel olacaktır. Kutu şeklinde hareket edeceği için önce aşağı sonra sağa gitmeliyiz.

A Star Algoritması Mantığı Özeti

Başlangıç karesini açık listeye ekle.

Çevresini dolaş en küçük F değerli kareyi bul. Seçilen kareyi kapalıya ekle.

Seçili kare için aynı şekilde yap. Duvar gibi engellere bakma.

Eğer amacımız gerçekleşirse yol bulunmuştur.

8 Taş Bulmacası

8 Taş bulmacasını da A* algoritması ile çözebiliriz.

Buradaki maliyetimiz her hareket için 1’dir.

Üstteki gibi bir başlangıcımız var ve bir amacımız var.

Boş olan kareyi hareket ettirmemiz gerekiyor.

Sadece yukarı, aşağı, sağa , sola hareket ettirebiliriz.

Üstteki fotoğraftaki gibi hareketler yaparak sonuca ulaşabiliriz.

C# ile yapmış olduğum programda başlangıç durumu ve amaç durumu 2 tane kullanıcının girmesi için beklenen yer vardır ve ‘,’ ile ayrılmalıdır.

Çöz denildiğinde çözdükten sonra animasyonlu olarak ‘0’ yer değiştirecektir. Yer değiştirmeler sağda gösterilir. Yaptığı işlemler en altta yazmaktadır.

Kodlar: https://github.com/eraykisabacak/A-Star-Algorimasi-8-Bulmacasi

Hello world!

Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

Eray Kısabacak - Teknoloji Bilim Programlama Kitap Mühendislik Yapay Zeka

Merhabalar bugün 26.10.2018’de sitemi açmış bulunuyorum.Öncelikle kendimi tanıtmak istiyorum.Ben Eray Kısabacak Selçuk Üniversitesi Bilgisayar Mühendisliği 2.Sınıf öğrencisiyim.

Bu siteyi hem kendimi geliştirebilmek hem de sizlere bişeyler paylaşmak için kurdum. Hem benim açımdan yararlı olacağını düşünüyorum hem de okuyan kişiler açısından yararlı olacağını düşünüyorum. Aklıma gelen ya da yararlı olacağını düşündüğüm bazı konular da paylaşım yapmayı planlıyorum. Bunların bazılarının kategorilerini söyleyecek olursam YAPAY ZEKA, MÜHENDİSLİK, TEKNOLOJİ, PROGRAMLAMA, BİLİM, KİTAP, WEB TEKNOLOJİLERİ gibi gibi daha birçok konuyu bu sitede görebilirsiniz. Yakında bir çok yazı ile karşınıza çıkacağım.

Beni sosyal medyalardan da takip edebilirsiniz :

Linkdln

Instagram