Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 39

Arama Yoluyla Problem Çözme

1
Durum Uzay Grafi ve Arama Ağacı

• Durum Uzay grafinda, herbir Durum birkez tekrar eder!


• Genelde her iki agaci bellekte nadiren tam olarak oluştururuz (çok büyük)En küçük agacı hedefle

• Arama Ağacı:
– Başlangıç durum, kök node u temsil eder
– Cocuk durumlar, mevcut durumdan doğan sonraki durumları temsil
eder
– Nodelar durumlari temsil eder fakat bu durumlara ulaşan eylem
2
dizisini (plan) kapsar
Uygulama: durum ve node(düğüm)
 durum dünyanın içsel bir gösterimidir.
 node arama ağacının düğümü olup, durum, ata node,
eylem, yol maliyeti g(x), çözüm derinliği bilgilerini içerir

 Genislet fonksiyonu, izleyenleri üreten fonk = mevcut


duruma olasi tüm operatörleri (eylemleri) uygulayarak,
sonraki durumlara (izleyenlere) ait düğümleri üretir.

3
Genel Ağaç-Arama Algoritması
Aşağıdaki algoritma eylem dizisi aradığımız aramalar için geçerlidir. Cözüm
fonk. nihai eylem dizisini döndürür. Genişlet fonk. izleyenler kümesini
döndürür.
Problem veri yapısı, problemin formalize edilmesi sonucu oluştuğunu ve
baslangıç durum, hedef durum ve olası işlemleri (eylemleri) kapsadığını
varsayoruz, Kuyruk ise başlangıçta boş olup, ekle işlevi Kuyruk tipine
göre ekleme yapar.

function Agac_Arama(Problem,Kuyruk) return çözüm veya hata


KuyrukEkle(Node_Yarat(Problem.Baslangıc_Durum), Kuyruk)
Loop do
If Kuyruk = Boş Then return Hata
NodeÖnden_Uzaklaştır(Kuyruk)
If Problem.Hedef_Testi(Node.Durum) Then
return Cözüm(Node)
KuyrukHepsini_Ekle(Genişlet(Node,Problem), Kuyruk)

4
Arama stratejileri
 Arama stratejisi, düğümlerin kuyruğa hangi sırada eklendiğine
göre değişirkuyruğun sıralanması

 Stratejiler aşağıdaki boyutlar temelinde değerlendirilir:


 Tamlik: her zaman bir çözüm garanti eder mi?
 Zaman karmaşıklığı: üretilen düğüm sayısı
 Bellek karmaşıklığı : bellekteki maximum düğüm sayısı
 Optimallik: her zaman en düşük maliyetli çözümü garanti eder mi?

 Zaman ve bellek karmaşıklığı aşağidaki parametreler temelinde


ölçülür
 b: arama ağacının maximum dallanma faktörü
 s: en düşük maliyetli çözümün derinliği
 m: durum uzayının maximum derinliği(∞ da olabilir)
5
Bilgisiz Arama Metodları
 Bilgisiz arama yöntemleri, mevcut durumun
ne kadar iyi (hedefe ne kadar yakın)
olduğuna dair bilgi içermez.
 İteratif derinleşen arama
 Önce genişlik arama
 Uniform maliyetli arama
 Derinlik öncelikli arama
 Derinlik sınırlı arama
14 Jan 2004 CS 3243 - Blind Search 6
Önce genişlik arama

7
Önce genişlik arama
 En sığ düğümü önce genişlet
 Kuyruk FIFO sıralamasında tutulur, yeni
genişletilen düğümler en sona eklenir
 Uygulama:

8
Önce genişlik arama
 En sığ düğümü önce genişlet
 Kuyruk FIFO sıralamasında tutulur, yeni
genişletilen düğümler en sona eklenir
 Uygulama:

9
Önce genişlik arama
 En sığ düğümü önce genişlet
 Kuyruk FIFO sıralamasında tutulur, yeni
genişletilen düğümler en sona eklenir
Uygulama:

10
Önce genişlik arama
 En sığ düğümü önce genişlet
 Kuyruk FIFO sıralamasında tutulur, yeni
genişletilen düğümler en sona eklenir
Uygulama:

11
Önce genişlik aramanın özellikleri

 Tam? Evet (eğerb sonlu ise)

 Zaman? 1+b+b2+b3+… +bs + b(bs-1) = O(bs+1)

 Bellek? O(bs+1) (her düğümü bellekte saklar)

 Optimal? Evet(eğer her eylemin costu = 1 ise)

 Bellek büyük problem (zamandan daha problemli)

12
Uniform maliyetli arama

13
Uniform maliyetli arama

 Genişletilmemiş En düşük maliyetli düğümü önce genişlet


 Uygulama:Kuyruk = yol maliyetlerine göre sıralı
 Eğer eylemler aynı maliyette ise Önce genişlik aramaya denktir
 Tam? Evet, eğer en düşük eylem maliyeti (ε) ≥ 0 ve çözüm maliyeti
(C*) sonluysa
 Zaman? # çözüme kadar işlenen düğüm sayısı kabaca son katmana
kadar olan hepsi , O(bC*/ ε)
 Space? # O(bC*/ ε), çözüme kadar saklanan düğüm sayısı kabaca son
katmana kadar olan hepsi
 Optimal? Evet – maliyete göre artan sırada test yapacağından
14
Derinlik öncelikli arama

15
Derinlik öncelikli arama
 En derindeki genisletilmemis düğümü önce genişlet
 Uygulama:
 Kuyruk = LIFO, sonraki durumlari ,en öne koy

16
Derinlik öncelikli arama
 En derindeki genisletilmemis düğümü önce genişlet
 Uygulama:
 Kuyruk = LIFO, sonraki durumlari ,en öne koy

17
Derinlik öncelikli arama
 En derindeki genisletilmemis düğümü önce genişlet
 Uygulama:
 Kuyruk = LIFO, sonraki durumlari ,en öne koy

18
Derinlik öncelikli arama
 En derindeki genisletilmemis düğümü önce genişlet
 Uygulama:
 Kuyruk = LIFO, sonraki durumlari ,en öne koy

19
Derinlik öncelikli arama
 En derindeki genisletilmemis düğümü önce genişlet
 Uygulama:
 Kuyruk = LIFO, sonraki durumlari ,en öne koy

20
Derinlik öncelikli arama
 En derindeki genisletilmemis düğümü önce genişlet
 Uygulama:
 Kuyruk = LIFO, sonraki durumlari ,en öne koy

21
Derinlik öncelikli arama
 En derindeki genisletilmemis düğümü önce genişlet
 Uygulama:
 Kuyruk = LIFO, sonraki durumlari ,en öne koy

22
Derinlik öncelikli arama
 En derindeki genisletilmemis düğümü önce genişlet
 Uygulama:
 Kuyruk = LIFO, sonraki durumlari ,en öne koy

23
Derinlik öncelikli arama
 En derindeki genisletilmemis düğümü önce genişlet
 Uygulama:
 Kuyruk = LIFO, sonraki durumlari ,en öne koy

24
Derinlik öncelikli arama
 En derindeki genisletilmemis düğümü önce genişlet
 Uygulama:
 Kuyruk = LIFO, sonraki durumlari ,en öne koy

25
Derinlik öncelikli arama
 En derindeki genisletilmemis düğümü önce genişlet
 Uygulama:
 Kuyruk = LIFO, sonraki durumlari ,en öne koy

26
Derinlik öncelikli arama
 En derindeki genisletilmemis düğümü önce genişlet
 Uygulama:
 Kuyruk = LIFO, sonraki durumlari ,en öne koy

27
Derinlik öncelikli aramanın özellikleri

 Tam? Hayir: aynı durumlara giden döngüler olabilir


 Yol boyunca tekrar eden durumlardan kaçınılırsa Ve Durum uzayi sonluysa
Tamlik vardir
 Zaman? O(bm): çok kötü eğer m , s’ den çok büyükse
 eğer çözüm yoğunluğu fazlaysa, enlemesine aramadan daha iyi olabilir
 Bellek? O(bm), lineer, cok iyi
 Optimal? Hayir. Derinlik ve maliyete bakmaksizin, En soldaki çözümü bulacaktır
28
Derinlik Sınırlı Arama (DSA)
= Algoritma verilen derinliğe(kesme seviyesi) kadar derinlik öncelikli
arama yapar = kesme seviyesindeki düğümler yaprak düğümler olur (bu
düğümlerin cocuklari olmaz)
function Derinlik_Sınırlı_Arama(Problem,limit) return çözüm/hata/kesme
Rekursif_Derinlik_Arama(Node_Yarat(Problem.Baslangıc_Durum),Problem, limit)

function Rekursif_Derinlik_Arama(Node,Problem, limit)


kesmeOldufalse
If Problem.Hedef_Testi(Node.Durum) Then return Cözüm(Node)
Else If Node.Derinlik == limit Then return kesme
Else For each cocuk_node in Genişlet(Node, Problem) Do
sonucRekursif_Derinlik_Arama(cocuk_node, Problem, limit)
If sonuc == kesme Then kesmeOldutrue
Else If sonuc != hata Then return sonuc
If kesmeOldu Then return kesme else return hata

 Recursif uygulama:
29
Derinlik Sınırlı Arama, limit=2

Kesme Seviyesi

30
İteratif Derinleserek Arama(İDA)
= Algoritma her derinlikte, derinlik sınırlı arama yapar. Derinlik 0
da cözümü bulamazsa, Derinlik 1 de derinlemesine arama yapar,
sonra artan derinliğe göre diğer derinliklerde derinlik öncelikli
arama yapar

Recursif uygulama:
function Iteratif_Derinleserek_Arama(Problem) return çözüm/hata
For derinlik=0 to ∞ Do
sonucDerinlik_Sınırlı_Arama(Problem, derinlik)
If sonuc != kesme Then sonuc

31
İteratif Derinleserek Aramal =0

32
İteratif Derinleserek Arama l =1

33
İteratif Derinleserek Arama l =2

34
İteratif Derinleserek Arama l =3

35
İteratif Derinleserek Arama
 Derinlik sınırlı aramada(DSA) üretilen düğüm sayısı (derinlik d ve
dallanma faktörü b için):
NDSA = b0 + b1 + b2 + … + bd-2 + bd-1 + bd

 İteratif Derinleşerek Aramada (IDA) üretilen düğüm sayısı (derinlik


d ve dallanma faktörü b için):
NIDA = (d+1)b0 + d b^1 + (d-1)b^2 + … + 3bd-2 +2bd-1 + 1bd

 b = 10 ve d = 5 için,

NDSA = 1 + 10 + 100 + 1,000 + 10,000 + 100,000 = 111,111

NIDA = 6 + 50 + 400 + 3,000 + 20,000 + 100,000 = 123,456

 IDA EkYükü= (123,456 - 111,111)/111,111 = 11%


36
İteratif Derinleserek Aramanın
Özellikleri

 Tam? Evet

 Zaman? (d+1)b0 + d b1 + (d-1)b2 + … + bd =


O(bd)
 Bellek? O(bd)

 Optimal? Evet, if eylem maliyeti = 1


37
Bilgisiz Arama Algoritmalarının Özeti

38
Tekrar eden Durumlar
 Tekrar eden durumları dikkate almamak, doğrusal
karmaşıklıktaki bir problemi, üstsel bir probleme dönüştürebilir!
 Tekrarlar yol şeklinde olabilir XYZXY...şeklinde
 Tekrarlar aynı düğümlerin farklı yollarda tekrarı şeklinde de
olabilir. Örneğin

39

You might also like