Upload
errin
View
82
Download
0
Embed Size (px)
DESCRIPTION
Arama ile sorun çözme. Ders 3. Konular. Sorun çözen vekil Sorun türleri Sorunun ifade edilmesi Sorun örnekleri Temel arama algoritmaları. Arama Türleri. Tüm arama yöntemlerinde başlıca düşünce, kısmı çözüm ardışıklıkları kümesini bulmak ve genişletmektir. Bilgisiz Arama (Körüne arama) - PowerPoint PPT Presentation
Citation preview
Arama ile sorun çözme
Ders 3
Konular
Sorun çözen vekil Sorun türleri Sorunun ifade edilmesi Sorun örnekleri Temel arama algoritmaları
Arama Türleri
Bilgisiz Arama (Körüne arama) Enine arama Derinine arama Özyinelemeli derinine arama
Bilgili Arama Stratejileri Dağa Tırmanma En iyisini arama Hırslı arama Işın arama Algorithm A*
Tüm arama yöntemlerinde başlıca düşünce, kısmı çözüm ardışıklıkları kümesini bulmak ve genişletmektir
Arama parametreleri
Tam- kullanılan arama algoritması ile çözüm bulunuyor mu?
Mekan- algoritmanın kullandığı durum uzayının boyutu (bellek alanı)
Zaman- algoritmanın gerçekleştirilmesi için gereken zaman
Optimal- bu algoritma ile durum uzayında en iyi çözümü bulmak mümkün mü? (bu algoritma ile ilk aramada en iyi çözüme ulaşılmasının mümkünlüğü değil)
14 Jan 2004 CS 3243 - Blind Search 4
Bilgisiz veya Bilgisiz veya
KÖRÜNE ARAMA-KÖRÜNE ARAMA- Blind searchBlind search
Bilgisiz (kör) arama yöntemleri
Bilgisiz arama yöntemlerinde yalnız sorunun tanımında bulunan bilgiler kullanıla bilir Enine arama-Breadth-first search Derinine arama-Depth-first search Sınırlı derinine arama-Depth-limited search Özyinilemeli derinine arama-Iterative
deepening search
Kör Arama
Kör arama yöntemlerinde çözüme ulaşmak için hiçbir bilgi verilmez. Aramanın her hangi adımında çözüme ne kadar yakın (veya uzak) olması hakkında veya çözümün buluna bileceği hakkında fikir söylemek mümkün değildir.
başlangıç durumu içeren elementi (ağacın kökü) seçmeli
listedeki ilk yol amaç durumunda sonlanana dek veya liste boş olana dek aşağıdakileri yapmalı:
listeden ilk yolu almalı
İlk yolu, onun uç düğümünün tüm ardıllarına doğru genişletmekle yeni yollar oluşturmalı
Döngülü tüm yolları gözden atmalı
Amaç durumu bulunursa aramayı bitirmeli, eksi halde yeni yolları gözden geçirmeli
Tüm yollar gözden geçirildikten sonra amaç durumu bulunamazsa aramayı başarısız kabul etmeli
Kör arama
14 Jan 2004 CS 3243 - Blind Search 8
Durum Uzayı CG
CG
SC
S
SR
W
CSLAR
ESG
FA
7
2
1
3 47
4
23
33
3
4
Yol haritası
Enine arama
Enine aramada ağaç soldan sağa, yukarıdan aşağıya doğru taranıyor. Başka değişle, bir seviyedeki tüm düğümler genişlendikten (tarandıktan) sonra bir sonraki aşağı seviyeye geçilir.
CG
SC
S
SRW
CSL
A
SGSG
FA
R
CSL SG
A E
R
FA
arama ağacı
SG
E
başarı
Enine arama En yüzeyde (en üst seviye) olan
genişlenmemiş düğümü genişletmeli FIFO yapısı: yeni ardıllar sona eklenecek
Enine arama
En yüzeyde (en üst seviye) olan genişlenmemiş düğümü genişletmeli
FIFO yapısı: yeni ardıllar sona eklenecek
Enine arama
En yüzeyde (en üst seviye) olan genişlenmemiş düğümü genişletmeli FIFO yapısı: yeni ardıllar sona eklenecek
Enine arama
En yüzeyde (en üst seviye) olan genişlenmemiş düğümü genişletmeli FIFO yapısı: yeni ardıllar sona eklenecek
Enine arama patrametreleri
Tam? evet (b sonlu ise) Zaman? 1+b+b2+b3+… +bd O(bd) Mekan? O(bd) (her bir düğüm bellekte tutuluyor) Optimal? Evet (eğer her adım için değer = 1 ise);
genelde ise optimal değil Mekan sorunu çok önemlidir
Enine Arama
Gen. düğüm { S } S { A B C } A { B C D E G } B { C D E G G' } C { D E G G' G" } D { E G G' G" } E { G G' G" } G { G' G" } Çözüm yolu- S A G <-- G’nin
değeri-10 Genişlenen düğümler sayısı (amaç düğümle birlikte) = 7
Enine Arama-örnek
d derinlikli tam arama ağacı; her bir yaprak olmayan düğümün b oğlu var:
Toplam: 1 + b + b^2 + ... + b^d
s1
b
b^2
b^dd
2
1
– Örnek: 12 derinlikli tam arama ağacında 0,…,11 derinlikte her düğümün 10 oğlu var. 12.ci derinlikteki düğümlerin oğulları yoktur. Böylelikle, ağaçta 1 + 10 + 100 + 1000 + ... + 10^12 = (10^13 - 1) düğüm var
Enine aramada mekan ve zaman değerlendirmesi
14 Jan 2004 CS 3243 - Blind Search 17
Derine Arama
Derine aramada arama ağacı yukarıdan aşağıya en sol düğümden başlayarak yaprak düğüme ulaşılana dek geliştiriliyor.
Eğer bir yolda çözüm bulunamazsa, arama sonraki en sol ve genişlenmemiş düğümle devam ettirilir.
CG
SC
S
SRW
CSL
A
SGSG
FA
R
CSL SG
A E
R
FA
Arama ağacı
SG
E
başarı
Derinine Arama
Derinine aramada arama ağacı yukarıdan aşağıya en sol düğümden başlayarak yaprak düğüme ulaşılana dek geliştiriliyor.
Eğer bir yolda çözüm bulunamazsa, arama sonraki sol ve genişlenmemiş düğümle devam ettirilir.
CG
SC
S
SRW
CSL
A
SGSG
FA
R
CSL SG
A E
R
FA
Arama ağacı
SG
E
başarı
Derinine arama
Derinine arama işlemleri ardışıklığı
SR
L
A
R
FA
SG
S
SC
CG
L CS W
CS W
SG E CS’ CS W
SG E CS’ CS W
SG E CS’ CS W
E CS’ CS W
Başl.kuyruk
Kuyruk 1
Kuyruk 2
Kuyruk 3
Kuyruk 4
Kuyruk 5
Kuyruk 6
Kuyruk 7
Kuyruk 8
CG-SC genişlenmesi
SC-S genişlenmesi
S-SR, L, CS, W genişlenmesi
SR genişlenemez
L-A, SG, E, CS genişlenmesi
A-R genişlenmesi
R-FA genişlenmesi
FA genişlenemez
Başarı
CG
SC
SSR
WCSL
ASG
SGFA
RCS
L SGA E
R
FA
Arama ağacı
SG
E
CG
SCS
SR
L
A
R
FA
SG
Derinine arama
En derindeki genişlenmemiş düğümü genişletmeli
LIFO yapısı, yani ardıllar öne yazılacak
Derinine arama
En derindeki genişlenmemiş düğümü genişletmeli
LIFO yapısı: ardıllar öne yazılacak
Derinine arama
En derindeki genişlenmemiş düğümü genişletmeli
LIFO yapısı, yani ardıllar öne yazılacak
Derinine arama
En derindeki genişlenmemiş düğümü genişletmeli
LIFO yapısı, yani ardıllar öne yazılacak
Derinine arama
En derindeki genişlenmemiş düğümü genişletmeli
LIFO yapısı, yani ardıllar öne yazılacak
Derinine arama
En derindeki genişlenmemiş düğümü genişletmeli
LIFO yapısı, yani ardıllar öne koyulacak
Derinine arama
En derindeki genişlenmemiş düğümü genişletmeli
LIFO yapısı, yani ardıllar öne yazılacak
Derinine arama
En derindeki genişlenmemiş düğümü genişletmeli
LIFO yapısı, yani ardıllar öne yazılacak
Derinine arama
En derindeki genişlenmemiş düğümü genişletmeli
LIFO yapısı, yani ardıllar öne yazılacak
Derinine arama
En derindeki genişlenmemiş düğümü genişletmeli
LIFO yapısı, yani ardıllar öne yazılacak
Derinine arama
En derindeki genişlenmemiş düğümü genişletmeli
LIFO yapısı, yani ardıllar öne yazılacak
Derinine arama
En derindeki genişlenmemiş düğümü genişletmeli
LIFO yapısı, yani ardıllar öne yazılacak
derinine arama (daha bir örnek)
Düğümlerin yanında parantez içinde o düğümün taranma sırası gösterilip.
Derinine aramanın özellikleri
Tam? Değil: sonsuz derinlik,döngülü uzaylar ola biliyor Tekrarlanan durumların önlenmesi için algoritmada
değişiklik yapılıyor sonlu uzayda tamlık
Zaman? O(bm): m , d’den çok büyük ise zaman oldukça büyük olacak; m-yol uzunluğu çözümler çok ise, enine aramadan daha hızlı ola
bilir Uzay? O(bm)- doğrusal uzay Optimal? Değil
Derinine Arama algoritması
Gen. düğüm liste { S }
S { A B C } A { D E G B C} D { E G B C } E { G B C } G { B C }
Çözüm yolu S A G <-- G’nin değeri= 10 Genişlenen düğümler sayısı (amaç düğümle
birlikte) = 5
S
CBA
D E
15 8
937
G
Derinine Arama algoritması
Algoritmanın esas özellikleri: Genişlenme için listeden her zaman en
derindeki düğümü seçmeli ve yeni üretilmiş düğümleri listeye yazmalı
liste LIFO yapılıdır. Genişlenme için seçilmiş düğüm amaç ise
algoritmayı sonlandırmalı
• Sonlu olmaya bilir• Tam değil • Exponensiyel zaman O(b^d)• Doğrusal mekan O(bd) • şansımız varsa çözüm çok hızlı buluna bilir
goal
Sınırlı derinine arama
derinliği sınırlı götürmekle derinine arama
Sınırlı Derinine Arama
Bu arama yönteminde, derinine aramada olası sonsuz (ölü döngü) arama işlemini önlemek için aramanın belirli bir seviyeye kadar yapılması düşünülmektedir.
Örneğin, Yol haritasında hiçbir çözüm 11’den fazla adım gerektirmeyecek. Çünkü, burada yalnız 12 yerleşim vardır. Bu nedenle biz sınır gibi 11’i kullana bileriz. Döngülerin var olduğunu kabul etmiyoruz ve varsayıyoruz ki, sorun sonlu derinlik seviyesinde çözüle bilir.
Sınırlı Derinine arama
Eğer gereken çözüm L+1 derinlikte ise, o hiç zaman bulunamayacak. (L-sınır derinliği)
Karmaşıklık bakımından yöntem sıradan derinine aramaya benzer (azami derinliği ifade eden derinlik sınırını göz önüne almakla)
Zaman karmaşıklığı
Uzay karmaşıklığı
Tam? Optimal?
O(bl) O(bl) Evet(çözüm <=l derinlikte
ise)
hayır
Sınırlı Derinine arama
Sınırlı derinine arama yönteminde iyi arama sınırını bulmak çoğu zaman kolay olmuyor.
Arama uzayı büyük ve çözüm derinliği belli olmayan durumlarda yinelemeli derinine arama tercih edilen yöntemdir
Başarıya ulaşana dek derinlik sınırı her defa 1 arttırılıyor
Yinelemeli derinine arama
Satranç turnuvalarında oyunlar kesin zaman sınırı içinde oynanıyor. Satranç programı her hamle için ne kadar zaman kullanmalı olduğu kararını vermelidir. Pek çok satranç programları arama işlemini yinelemeli derinine arama ile gerçekleştiriyorlar.
Başka değişle, program önce 2 seviyede, sonra 3 , sonra 4… seviyede arama yapıyor. Bu, arama için ayrılan süre dolana dek devam ediyor.
Bundan sonra program, bulunan hamleler içinden en iyisini çözüm gibi kabul ediyor
Yinelemeli derinine arama fonksiyonu
Yinelemeli derinine arama l =0
Yinelemeli derinine arama l =1
Yinelemeli derinine arama l =2
Yinelemeli derinine arama l =3
Yinelemeli derinine arama Sınırlı derinine arama yönteminde üretilen düğümler
sayısı: NDLS = b0 + b1 + b2 + … + bd-2 + bd-1 + bd
Yinelemeli derinine aramada üretilen düğümler sayısı: NIDS = (d+1)b0 + d b^1 + (d-1)b^2 + … + 3bd-2 +2bd-1 +
1bd
Örnek: b = 10, d = 5, NDLS = 1 + 10 + 100 + 1,000 + 10,000 + 100,000 = 111,111 NIDS = 6 + 50 + 400 + 3,000 + 20,000 + 100,000 = 123,456
Yineleme ve sınırlı arama arasındaki fark: (123,456 - 111,111)/111,111 = 11%
Yinelemeli derinine arama yönteminin özellikleri:
Tam? Evet Zaman? (d+1)b0 + d b1 + (d-1)b2 + …
+ bd = O(bd) Mekan? O(bd) Optimal? Evet,eğer adım değeri=1
Sabit maliyet- Uniform-Cost (UCS) g(n) = başlangıç düğümden açık n
düğümüne yolun değeri Algoritma:
her zaman en küçük g(n) değerli düğümü seçmeli; tüm yeni üretilmiş düğümleri listeye kaydetmeli
Listedeki düğümleri g(n) ‘nin artması ardışıklığı ile sıralamalı
Açılmak için seçilmiş düğüm amaç ise algoritmayı sonlandırmalı
Algoritmalarla bağlı kaynaklarda“Dijkstra Algoritması” , yöneylem araştırmasında “Dal ve Sınır Algoritması” denir
Sabit maliyet AramasıAçılan düğüm düğümler listesi
{S(0)} S {A(1) B(5) C(8)} A {D(4) B(5) C(8) E(8) G(10)} D {B(5) C(8) E(8) G(10)} B {C(8) E(8) G’(9) G(10)}
C {E(8) G’(9) G(10) G”(13)} E {G’(9) G(10) G”(13) } G’ {G(10) G”(13) }
çözüm yolu S B G <-- G’nin değeri 10 değil, 9’tur
Açılan düğüm sayısı (amaç düğümle birlikte) = 7
S
CBA
D E
15
937
G G’ G”
8
54
Sabit maliyet yönteminin özellikleri Tam (her bir adımın değeri sonsuz değilse)
g(n) <= g(amaç) koşulu ile durum uzayında düğümler sayısı n sonludur)
n’ düğümü n ’in oğlu ise g(n’) = g(n) + c(n, n’) > g(n) Amaç düğümü nihayette üretilecek ve amaç
denemesinden geçecek
Optimal/Uygun amaç denemesine bağlıdır Çoklu çözüm yolları Açık n düğümünden üretilen her çözüm yolunun değeri
>= g(n) Genişlenme için açılan ve denemeden geçen birinci
düğümün yol değeri listedeki her bir açık düğümün değerinden küçük veya eşittir
Eksponensiyel zaman ve mekan karmaşıklığı (b^d) ; d- en küçük değerli çözüm için çözüm yolunun derinliğidir
Tekrarlanan durumların aradan kaldırılması
Amaç:Durum uzayının boyutunu küçültmekle arama etkisinin yükseltilmesi1. Bir önce bulunduğun duruma geri dönmemeli 2. Döngü yapacak yolları oluşturmamalı 3. Daha önce oluşturulmuş olan bir durumu yeniden
oluşturmamalı
İkiyönlü arama- Bi-directional search
Başlangıç durumdan amaca ve amaç durumundan başlangıca doğru aynı zamanda arama
Yollar kesiştikte durmalı Tek bir başlangıç ve amaç durumu oldukta ve
hareketler değiştirile bilir oldukta iyidir Çözüme daha hızlı ulaşmak mümkün ola bilir
Arama stratejilerinin karşılaştırılması
Arama Yöntemlerinin özeti Yapay Zekada kullanılan arama teknikleri, bizi verilen
başlangıç durumdan amaç durumuna (durumlarına) doğru götüren adımlar ardışıklığının bulunmasına dayanmaktadır.
Enine ve derinine arama algoritmaları sonlu arama ağacında tüm düğümlerin bakılmasını gerektire bilir.
Bu veya diğer algoritmanın seçimi çözülecek soruna bağlıdır.
Kısmı yolların makul derinlikten sonra ölü sona veya başarılı sona ulaşacağına inanıyorsan , derine arama yöntemini kullanmak mantıklıdır.
Yinelemeli Derinine arama küçük bellek alanı ister (derinine arama gibi) ve en kısa yolu önce bular (enine arama gibi)
Arama Yöntemlerinin özeti En kısa yolu bulmak istiyorsanız en iyisi enine
arama yöntemini kullanmaktır Daha az bellek alanı kullanmak gerekiyorsa derinine
arama kullanmak daha etkilidir Sabit Maliyet araması:
Hareketlerin değerleri farklıdır En az değerli çözüm gerekiyor Yalnız sabit maliyet aramasında yol değeri dikkate alınıyor
Çözümü daha çabuk bulmak gerekiyorsa o zaman daha karmaşık algoritmalar kullanılmalıdır!
Çözüm durumlarına götüren pek çok yol varsa derinine arama hızlıdır, fakat yollar çok uzundur.
Hedefe götüren yalnız bir kısa yol varsa enine arama daha hızlıdır. Fakat arama uzayı geniş ve derindir.
Arama algoritmaları için demolar
http://www.cs.rochester.edu/~kautz/Mazes/search/applet.html
http://www.cse.unl.edu/~choueiry/S03-476-876/searchapplet/index.html
http://www.dcs.bbk.ac.uk/~dell/teaching/aiwa/
14 Jan 2004 CS 3243 - Blind Search 57