Month: Aralık 2006

http://haber.uyarer.com

Posted by – 18 Ara 2006

http://haber.uyarer.com yayın hayatına http://haberara.net de devam etmektedir. Çalışmaları devam eden sitemizi haber tutkunlarına armağan ediyoruz :)

Arama yöntemleri ile problem çözümü

Posted by – 07 Ara 2006


Merhabalar, hazırlamış olduğum arama yöntemleri ile problem çözümü konulu çalışmamdan bahsetmek istiyorum. Yapay Zeka’da kullanılan Bilgili Arama yöntemlerinden biri olan A* Arama (A* Search) yöntemi ile Bilgisiz Arama yöntemlerinden biri olan Uniform Maliyetli Arama (Uniform Cost Search) yöntemi çalışmamda yer almıştır. Yöntemler hakkında bilgi için http://en.wikipedia.org/wiki/Uniform-cost_search ve http://en.wikipedia.org/wiki/A%2A_search linklerini incelemenizi öneririm.Yaptığım çalışmada Romanya’ya ait harita yer almaktadır.Bu harita üzerinde şeçilen bir başlangıç noktası ile hedefe kullanılan yöntemler ile varılmak istenmektedir.Proje kapsamında elimizde Romanya’ya ait bir harita yer alıyordu. Bizden istenen ilk şey haritada yer alan şehirler arası uzaklıkları dikkate alarak bu uzaklıkları program her çalıştığında mantıklı bir şekilde değiştirmekti. Örneğin Arad ile Zerind şehirlerinin arası haritada 80 verilmiş olsun programımda bu uzaklığı 70-90 arasında değiştirmem gibi. İlk resimde sağ üst köşede yer alan sayılar ise tüm şehirlerin Bucharest(Bükreş) şehrine dik uzaklığıdır. Bu değerlerde program çalıştığında random atanmaktadır. Şehirler arası uzaklığı atama yöntemi gibidir.Programdan beklenen şey; başlangıç noktası olan şehirden hedef şehre varırken bu yöntemlerle alınacak mesafedir.Programımda harita ve yöntemler sonucu oluşan haritalar opengl kullanılarak hazırlanmıştır. .Net ortamında C++ dili ile bu programı hazırladım ve glut kütüphanesini kullandım. Resimlere baktığımızda ilk pencerede Romanya haritası , şehirler arasındaki uzaklıklar ve tüm şehirlerin Bucharest e dik uzaklıkları bulunmaktadır. Sonraki resimde Uniform cost search sonucunda yolcunun gittiği şehirler ve bunlara varırken aldığı yol(maliyet) pencerenin sağ üst köşesinde yer almaktadır. Uniform cost Search den bahsetmek gerekirse örneğimiz üzerinde yolcumuz Arad şehrindedir.Bu şehrin tüm komşu düğümleri açılır. Sonra en yakın komşu seçilir ve yolcu oraya gider. Daha sonra gidilen yeni şehrin de tüm komşu düğümleri açılır ve ilk açılan düğümler ile birlikte tüm açık ve seçilmeyen (yani yolcunun daha gitmediği) düğümler arasından Arad şehrine uzaklığı en yakın olan seçilerek işleme devam edilir,seçilen düğüm Bükreş olduğunda işlem tamamlanıyor.Bir sonraki resimde de A*Search Yöntemi sonucu alınan düğümler ve mesafeler belirtilir.A* Search de ise yolcumuz Arad şehrinden yola çıkmaktadır. Yolcu Arad şehrinin tüm düğümlerine bakmaktadır,düğümlerin Arad şehrine uzaklığı ve bu düğümlerin Bükreş şehrine dik uzaklıkları toplanır. Bu toplam değeri en küçük olan düğüme gider yolcu.Daha sonra gidilen bu şehrin komşu düğümlerinin Arad şehrine uzaklığı + düğümlerin Bükreş’e dik uzaklıkları toplanıp en küçük olan değere göre yola devam edilmektedir. Yöntemler sonucu gidilen düğümler haritada kırmızı renkle belirtilmiştir.Programımda şehirler arası uzaklıklar bana verilen Romanya haritasındaki değerler ile birlikte bir maliyetli grafa atılmıştır.Yani çok boyutlu bir diziye. Şehirler arası uzaklıklar atanırken bu graf kullanılmaktadır. Aynı şekilde şehirlerin Bükreş’e dik uzaklığıda bir dizi ile programda hazır verilmekte ve bu dizi kullanılarak yeni değerler atanmaktadır.

Romanya haritası;

1.resim

Uniform Cost Search sonucu alınan düğümler;

2.resim

A*Search sorunu alınan düğümler;

3.resim

Not: Konu ile ilgili daha fazla bilgi istediğiniz takdirde yorum kısmında bu isteğinizi belirtiniz. Kodlarımı yer kaplamaması için koymadım, örnek olarak kodlarıma ihtiyaç duyan olursa kendisine yollarım.