Transcript Yapay Zeka

Yapay Zeka
DR.KORHAN KAYIŞLI
A* Algoritması
Sezgisel bilgilerin kullanımında değer fonksiyonunun
bilinmesi ve belirlenmesi büyük önem taşımaktadır.
Bu fonksiyon, durumları ifade eden çözüm grafı
üzerinde verilmiş başlangıç durumdan hedefe ulaşmak
için gereken minimum yolun bulunmasında daha az
tarama yapmaya olanak tanımalıdır.
A* Algoritması
Değer fonksiyonlarının belirlenmesinde farklı yaklaşımlar vardır.
Değer fonksiyonlarına örnek olarak;
 Düğümün çözüme dahil olmasının olasılık değerlendirilmesi,
 Verilmiş düğümden hedefe olan uzaklık
 Diğer farklılık ölçütleri gösterilebilir.
A* Algoritması
Problem çözümünde sonuca ulaşmak için düğümlerin
seçilmesinde bu düğümlerin sıralanmasını sağlayan bir
f fonksiyonu olduğunu varsayalım. Herhangi x
düğümünün fonksiyon değeri, f(x) ile ifade edilsin. Bu
fonksiyon, x düğümünden geçmek şartı ile başlangıç
düğümden hedefe olan yollar içerisinden minimum
olanının değerlendirilmesine karşılık gelmektedir.
Açılması gereken düğümler burada f fonksiyonunun
artışına göre sıralanmaktadır ve sıralı arama
algoritmaları olarak bilinmektedir.
A* Algoritması

•
•
Sıralı arama algoritmaları:
Başlangıç durum çözüm ağacının köküne yerleştirilir
ve geçerli gidişler ve operatörlerle bu durumdan
mümkün olan yeni durumlar - ”çocuklar” elde edilir.
Çocuk düğümler için f(xi) fonksiyon değerlendirmesi
yapılarak minimum değerli düğüm seçilir aynı değere
sahip olan birkaç düğüm varsa bu düğümler
içerisinden operatörlerin kullanım sırasına göre
herhangi birisi seçilir.
A* Algoritması
• Açılan minimum değerli düğümün benzeri şekilde,
çocuk düğümlerinin değerlendirilmesi yapılır. O anki
düğümden yeni bir çocuk düğüm elde edilemiyorsa
(önce açılmış bir duruma rastlanırsa) ve henüz hedefe
erişilmemişse üst seviyeye geri dönülerek arama yönü,
minimum olan fonksiyon değerine göre değiştirilir.
• İşlemler hedefe ulaşılıncaya kadar tekrarlanır. Hedef
bulunmuşsa başlangıç durumundan hedefe olan yol
çözümü verir.
A* Algoritması
 Sıralı algoritmanın çalışma mantığı;
 Ormanda yol bulma örneği:
 Bir ormanda yolu kaybettiğinizi düşünün. Doğal olarak sonunda
nereye erişmeniz gerektiğini bilmektesiniz (Bu hedef
durumunuzdur). Çıkış için dağları, çayları değil de daha kolay
geçilebilin yolları seçmektesiniz. Şayet bu seçimler sonucunda
tekrar önce bulunduğunu herhangi bir yere erişirseniz, en iyi
çözüm bu noktaya vardığınız yere tekrar geri dönerek başka bir
yön seçmeniz olacaktır. Dolayısıyla algoritma bir pusula gibi
çalışarak hedefe olan yolu belirlemektedir. Hedeften sapmalar
olursa, pusula rolünü üstlenen değer fonksiyonu yeni ayarlama
yapmaktadır.
A* Algoritması
 Yöntemde minimum yol bilinmemektedir. Bu yol
başlangıç durumundan bulunduğumuz duruma kadar
bilinen ve bulunulan durumdan hedefe kadar tahmin
edilecek bileşenlerden oluşmaktadır.
Sezgisel çözümlemenin açıklanması
A* Algoritması
 Eğer başlangıç s düğümünden x düğümüne kadar olan
yolu g(x) ile, x düğümünden f hedef düğümüne kadar
olan yol değerini h(x) ile ifade edersek A* algoritması
denilen sezgisel arama için aşağıdaki bağıntı elde
edilir.
 f(x)=g(x)+h(x)
 Burada g(x), x durumunun gerçek olan o anki
değeridir, h(x) ise x düğümünden çözüme olan
gidişlerin sezgisel değeridir.
A* Algoritması
 g(x) değeri, genellikle başlangıç düğümden x
düğümüne olan dolaysız uzaklığı ifade etmektedir.
h(x)’ in kesin değeri bilinmemekte ve yerine, sezgisel
bir
yaklaşımla
hesaplanan
h(x)
değeri
kullanılmaktadır. Bu fonksiyon, iyi bir değerlendirme
sonucu hedefe yaklaştıkça daha küçük, uzaklaştıkça
daha büyük değerler oluşturmaktadır.
 Yani seçilen sezgisel fonksiyon hedefe ulaşmayı
hızlandırma bakımından bir öneme sahiptir.
A* Algoritması
 Kötü seçilmiş sezgisel fonksiyonlarda daha çok
tarama ile sonuca ulaşılabilir.
 Hart, Nilson, Rafael, tarafından önerilen A*
Algoritması’ nın (1968-1972) genel biçimi Pohl
tarafından verilmiştir
 f(x)=α.g(x)+(1-α).h(x)
 Burada α, 0α1
 α nın büyük değerleri için daha çok enine ve küçük
değerleri için daha çok derinine arama yapılır.
A* Algoritması
 α değeri problemin beli aşamalarında aramayı
yönlendirmek için kullanılabilir.
 A* Algoritması için α=0.5 alınır ve bu durumda
f(x)=0.5.g(x)+0.5.h(x)
 α= 0 durumu saf gradyan yöntemine,
 α= 1 ise çözüm ağacının tam taranmasına karşılık
gelmektedir.
A* Algoritması
 Bilgisayar bilimlerinde en kısa yol bulmak için kullanılan
algoritmalardan birisidir. Örneğin seyyar tüccar problemi
(travelling salesman problem, TSP) gibi bir problemin
çözümünde
kullanılabilir.
Benzer
şekilde
oyun
programlamada, oyunda bulunan oyuncuların en kısa yolu
bularak hedefe gitmeleri için de sıklıkla kullanılan
algoritmadır.
 Kısaca bir düğümden (node) hedef bir düğüme (target
node) en kısa hangi düğümler üzerinden gidileceğini
bulmaya
yarayan
“en
iyi
yerleştirme
(best
fit)” algoritmasıdır.
A* Algoritması
 A* algoritması yapı olarak muteber(geçerli, güvenilir) sezgisel
(admissable heuristic) bir algoritma olarak sınıflandırılabilir. Bunun
sebebi algoritmasının mesafe hesaplamada kullandığı fonksiyondur:
 f(n) = g(n) + h(n) denklemindeki;
 f(n)
=hesaplama
yapan
sezgisel
(heuristic)
fonksiyon.
g(n)
=başlangıç düğümünden mevcut düğüme kadar gelmenin
maliyeti
 h(n) = Mevcut düğümden hedef düğüme varmak için tahmin edilen
mesafe.
 Dikkat edileceği üzere f(n) fonksiyonunun sezgisel olma sebebi, bu
fonksiyon içerisinde bulunan ve tahmine dayalı olan h(n) sezgisel
fonksiyonudur.
A* Algoritması
 Algoritmanın çalışması:
 Algoritma yukarıdaki toplama işlemini kullanan oldukça basit bir yapıya
sahiptir. Veri yapısı olarak bir öncelik sırası (priority queue) kullanan
algoritmada en öncelikli olan düğüm f(n) değeri en düşük olan düğümdür.
 Algoritma her adımda en düşük değeri (Ve dolayısıyla en önemli) düğümü alır
(yani bu düğüme gider) ve düğümü sıradan (queue) çıkarır.
 Gidilen bu düğüme göre komşu olan bütün düğümlerin değerleri güncellenir
(artık bu düğüme gelmenin bir maliyeti vardır ve dikkat edilirse f(n)
fonksiyonu içerisinde bu değer yer almaktadır.)
 Algoritma yukarıdaki adımları hedefe varana kadar (yani hedef düğümü
öncelik sırasında (priority queue) en öne gelene kadar) veya sırada (queue)
düğüm kalmayana kadar tekrarlar.
A* Algoritması
 Örnek: 8 taş problemi üzerinde A* algoritmasının
çalışmasının açıklanması.
 Problemde, verilen başlangıç durumdan hedefe
ulaşmak için boşluğun yapması gereken en kısa
hareket dizisinin bulunması istenmektedir. Boşluğun
bir rakamla yer değiştirmek üzere hareket ettiğini
düşünürsek, geriye hareketler yapılmadığı taktirde,
A* Algoritması
 Her durumda en çok 3 operatör vardır.
 8 taş probleminde başlangıç durumundan hedef
duruma ulaşmak için n minimum hareket sayısı,
 Problemin algoritma karmaşıklı O(3n) şeklinde
belirlenir.
A* Algoritması
4
1
3
2
8
5
7
6
A* Algoritması
 Bu problem için çözüme on adımda ulaşılır.
 310 =59049 farklı düğümün açılması anlamına gelir.
 Sezgisel yöntem kullanılmazsa bilgisayarda çok uzun
zamanda çözüme ulaşılır.
A* Algoritması
A* Algoritması
 Burada her durum için f fonksiyonunun değeri, durumların yan
taraflarında yuvarlak içerisinde verilmektedir. Minimum f fonksiyonu
değerine sahip olan durum seçildikten sonra, operatörler
uygulanarak çocuk düğümler açılır ve yeni fonksiyon değerleri
hesaplanır. Sürekli olarak küçük değerli düğümler seçilerek hedefe
varan çözüm aranır. Durumların üstlerinde kara içerisindeki sayılar
ise düğümlerin açılma ardışıklığını ifade etmektedir. Örneğin 2.
sırada açılan durum için derinlik g(x)=1 ve hedef durumunda yerinde
olmayan taşlarının sayısını ifade eden h^(x) değeri 5 olduğundan f
fonksiyonunun değeri 6’dır. İşlemler, f=7 olan sınır değeri aşılana
kadar bu dalın çocukları boyunca devam ettirilmektedir. Örnekte
herhangi bir derinlikte bu sınır değeri aşılsaydı, tekrar 2. seviyedeki
(derinlik g=1) en sağ duruma geçilerek yeni sınır değeri 8 olarak
belirlendikten sonra işlemler devam ettiriliecektir.
A* Algoritması
A* Algoritması