Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
Ders Notu – 3.2 Bilgisiz (Kör) Arama Yöntemleri
YAPAY ZEKA ve UZMAN SİSTEMLER Ders Notu – 3.2 Bilgisiz (Kör) Arama Yöntemleri
2
Hatırla: Arama algoritmalarının uygulamaları
Function General-Search(problem, Queuing-Fn) returns a solution, or failure nodes make-queue(make-node(initial-state[problem])) loop do if nodes is empty then return failure node Remove-Front(nodes) if Goal-Test[problem] applied to State(node) succeeds then return node nodes Queuing-Fn(nodes, Expand(node, Operators[problem])) end Queuing-Fn(queue, elements) Kuyruğa elemanlar kümesi ekleyen ve düğüm genişletme sırasını belirleyen kuyruk fonksiyonudur. Farklı kuyruk fonksiyonlar farklı arama algoritmaları üretir.
3
Arama stratejilerinin değerlendirilmesi
Bir arama stratejisi düğüm genişletme sırasının seçilmesiyle belirlenir. Stratejiler dört kritere göre değerlendirilebilir: Tamlık (Completeness): Eğer çözüm varsa strateji çözümü garanti ediyor mu? Zaman Karmaşıklığı (Time complexity): Çözümü bulmak ne kadar zaman alıyor? Bellek Karmaşıklığı (Space complexity): Aramyı gerçekleştirmek için ne kadar bellek gerekiyor? Optimallik (Optimality): Birden fazla çözüm olduğu zaman strateji en iyi olanını buluyor mu? (en düşük maliyetli çözüm) Zaman ve bellek karmaşıklığı şu terimler cinsinden ölçülür: b – arama ağazının maksimum dallanma faktörü d – en düşük maliyetli çözümün derinliği m – arama ağacının maksimum derinliği(sonsuz olabilir)
4
Bilgisiz (Kör) arama stratejileri
Sadece problem formulasyonundaki mevcut bilgiyi kullanır. Bilgisiz arama yöntemlerinde çözüme ulaşmak için hiçbir bilgi verilmez. Aramanın herhangi 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 Bilgisiz arama
5
Bilgisiz (Kör) arama stratejileri
Genişlik-önce (Breadth-first) Düzenli-maliyet (Uniform-cost) Derinlik-önce (Depth-first) Derinlik-sınırlı (Depth-limited) Tekrarlanan derinleştirme (Iterative deepening) İki Yönlü (Bi-directional)
6
En sığ (üst seviye, yüzey) genişletilmemiş düğümü aç
1. Genişlik-önce arama CG SC S SR W CS L A SG FA R E arama ağacı başarı 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. En sığ (üst seviye, yüzey) genişletilmemiş düğümü aç Uygulama: Queuing FN (FIFO yapısı) = Ardılları kuyruğun sonuna yerleştir
7
Algoritma Başlangıç düğümlerin bir listesi olan N’yi yerleştir
Eğer N boş ise o zaman çık ve hata mesajı ver N’de ilk düğüm olarak n ‘yi yerleştir ve N’den n’yi sil Eğer n amaç düğümü ise o zaman çık ve başarı mesajı geri gönder Aksi durumda N’nin sonuna n’ nin coçuklarını ekle ve 2. adıma geri dön.
8
Örnek: Arad’dan Bucharest’e seyahat
9
Genişlik-önce arama
10
Genişlik-önce arama
11
Genişlik-önce arama
12
S C B A D G E 1 5 8 9 4 3 7 Genişlik-önce Arama (Problem,EnqueueAtEnd)
G.Düğüm OPEN list CLOSED list { S } {} S { A B C } {S} A { B C D E G } {S A} B { C D E G G' } {S A B} C { D E G G' G" } {S A B C} D { E G G' G" } {S A B C D} E { G G' G" } {S A B C D E} G { G' G" } {S A B C D E} Bulunan çözüm yolu S A G <-- bu G’ nin maliyeti 10 Genişletilen düğüm sayısı(hedef düğüm dahil) = 7
13
Genişlik-önce aramanın özellikleri
Tamlık: Zaman karmaşıklığı: Bellek karmaşıklığı: Optimallik : Stratejiler dört kritere göre değerlendirilebilir: Tamlık (Completeness): Eğer çözüm varsa strateji çözümü garanti ediyor mu? Zaman Karmaşıklığı (Time complexity): Çözümü bulmak ne kadar zaman alıyor? Bellek Karmaşıklığı (Space complexity): Aramyı gerçekleştirmek için ne kadar bellek gerekiyor? Optimallik (Optimality): Birden fazla çözüm olduğu zaman strateji en iyi olanını buluyor mu? (en düşük maliyetli çözüm) Zaman ve bellek karmaşıklığı şu terimler cinsinden ölçülür: b – arama ağazının maksimum dallanma faktörü d – en düşük maliyetli çözümün derinliği m – arama ağacının maksimum derinliği(sonsuz olabilir)
14
Genişlik-önce aramanın özellikleri
Completeness: b sonluysa evet Time complexity: 1+b+b2+…+bd = O(b d), mesela, d‘ de eksponansiyel Space complexity: O(b d), hafızada her düğümü tutar Optimality: Evet (her adım maliyeti = 1 varsayılarak) Bellek sorunu önemlidir. Neden tüm düğümleri hafızada tutalım? Çok kolayca sonsuz döngülere götürecek, zaten gezilmiş bir düğümü tekrar gezmekten kaçınmak için.
15
Genişlik-önce aramanın zaman karmaşıklığı
Eğer hedef düğüm ağacın d derinliğinde bulunursa bu derinliğe kadarki tüm düğümler oluşturulur. G b d m Böylece: O(bd)
16
Genişlik-önce aramanın zaman karmaşıklığı
Kuyruktaki(QUEUE) en büyük düğüm sayısına hedef düğümün d seviyesinde ulaşılır. G m b d QUEUE tüm ve düğümleri içerir. (Böylece: 4) . Genel olarak: bd G
17
s 1 b b^2 b^d 2 1 d derinlikli tam arama ağacı; her bir yaprak olmayan düğümün b oğlu var: Toplam: 1 + b + b^ b^d d Ö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 ^12 = (10^13 - 1) düğüm var
18
2. Düzenli-maliyetli arama
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
19
Düzenli-maliyetli arama
En düşük maliyetli açılmamış düğümü genişlet Uygulama: QueueingFN=artan yol maliyeti sırasına göre ekle Böylece kuyruk fonksiyonu artan yol maliyetine göre sıralanmış düğümler listesini tutar, ve ilk açılmamış düğümü genişletiriz (bu yüzden en küçük yol maliyetli) Maliyet fonksiyonu g(n) ve derinlik Derinlik(n) olarak tanımlanırsa g(n)=Derinlik(n) için Düzenli maliyetli arama genişliğine aramaya eşit olur Genişlik önce stratejisinin bir arıtması
20
Algoritma Başlangıç listesin N ‘ yi oluştur (kök düğüm)
Repeat until (Liste boş ise) veya (ilk düğüm n amaç durum ise): Listenin başındaki ilk düğümü sil Bu düğümü genişlet (çocuk düğümlerini bul) Döngüye takılmamak için daha önce değerlendirilen çocuk düğümleri değerlendirilmeye alma Çocukları Listeye ekle (her defasında azalan yol maliyetine göre) Eğer n Amaç düğüm ise başarı, değilse hata değeri geri döndür
21
Adımı km ile maliyetli Romanya
Bucharest’e kadar olan doğrusal uzaklık
22
A B Z O S F C P R T L M D 118 75 71 151 140 111 70 120 80 99 211 97 146 138 101
23
A Z75 T118 S140 A B Z O S F C P R T L M D 118 75 71 151 140 111 70 120 80 99 211 97 146 138 101 T118 S140 O146 S140 O146 L229 O146 R220 L229 F239 O291 R220 L229 F239 O291 S297 L229 F239 O291 S297 P317 D340 C366 F239 O291 S297 P317 D340 C366 M299 …
24
Düzenli-maliyetli Arama
GENERAL-SEARCH(problem, ENQUEUE-BY-PATH-COST) G.Düğüm D.listesi CLOSED list {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) } Bulunan çözüm yol S B G <-- bu G nin maliyeti 9 dur 10 değil Genişletilen düğüm sayısı(hedef düğüm dahil) = 7 S 1 8 5 A B C 3 9 4 7 5 D E G G’ G”
25
Düzenli-maliyetli aramanın özellikleri
Completeness: Adım maliyeti >0 ise evet Time complexity: g’ li # düğüm optimal çözüm maliyeti, O(b d) Space complexity: g’ li # düğüm optimal çözüm maliyeti, O(b d) Optimality: yol maliyeti düşmediği müddetçe evet g(n) n düğümün yol maliyetidir Hatırla: b = dallanma faktörü d = en düşük maliyetli çözümün derinliği
26
Düzenli-maliyetli aramanın uygulaması
Kuyruğu (Queue) kök düğümle Initialize et (start durumundan inşa et) Repeat until (Queue boş) or (ilk düğüm Hedef durum): İlk düğümü kuyruğun önünden kaldır Düğümü genişlet (çocuklarını bul) Döngüleri önlemek için daha önce dikkate alınan çocukları reddet Kalan çocukları kuyruğa ekle, tüm kuyruğu artan yol maliyetine göre tutacak şekilde If Hedefe ulaşıldı, return başarı, otherwise hata
27
Dikkat! Düzenli maliyetli arama kuyrukta herhangi bir düğüm hedef düğüm olduğunda sonlandırılırsa optimal olmaz. G 100 5 D 10 E 15 F 20 S A C 1 B 2 25 maliyetli bir yol varken Düzenli maliyetli arama 102 maliyetli yolu dönderir (herhangi bir hedef düğüm çözüm olarak alınırsa)
28
Not: Döngü Tespiti Aramanın başarısız olacağını ya da tam optimal olmayacağını gördük eğer: - döngü tespiti yok: o zaman algoritma sonsuz döngülere girer (A -> B -> A -> B -> …) - bizim daha önce gezdiğimiz bir düğümü içeren bir durumu kuyruğa almama : tam optimal çözüm olmaz - basitçe atalara geri dönmekten kaçınma: ümit veren olarak görünür, fakat bunun çalıştığını ispatlamadık Çözüm? Bir düğümü eğer durumu onun herhangi bir atasının durumuyla eşleşiyorsa kuyruğa atma (yol maliyeti>0 varsayılıyor). Aslında, eğer yol maliyeti > 0 ise bu düğümle tekrar ilgilenmek bize ilk seferkinden daha fazla maliyet getirecektir Yeterli mi??
29
Not: Düzenli Maliyetli Aramada Kuyruklama
Amacımız en düşük maliyetli çözümü bulmak ise bir önceki örnekte G durumuyla üç düğümü kuyruklamak gereksizdi(ama yanlış değil) : Farklı yolları temsil etmelerine rağmen emin olarak biliyoruz ki en düşük maliyetli yol(örnekte 9) diğerlerinden daha düşük toplam yol maliyeti sağlayacaktır. Bu yüzden kuyruk fonksiyonunu şu şekilde arıtabiliriz : - düğümü kuyrukla(queue-up node) 1) durumu herhangi bir atasıyla uyuşmuyorsa ve 2) kuyrukta aynı durum ile herhangi genişletilmeyen düğümün yol maliyetinden daha düşük bir maliyeti varsa (ve bu durumda eskisini yeni düğümle(aynı durum) değiş !!!
30
Örnek # Durum Derinlik Maliyet Ata 1 S 0 0 - G 100 5 D E F S A C 1 B
31
S A C B D E F G Örnek 1 100 5 # Durum Derinlik Maliyet Ata 1 S 0 0 -
Siyah = açık kuyruk Gri= kapalı kuyruk Açık kuyruğu sıralı tutacak şekilde genişletilmiş düğümleri ekle
32
S A C B D E F G Örnek 1 100 5 # Durum Derinlik Maliyet Ata 1 S 0 0 -
Düğüm 2’nin 2 atası var biri B durumuyla diğeri S durumuyla. #1 S durumuyla kapalı fakat onun yol maliyeti 0 A’dan S’e açılmakla elde edilen maliyetten daha küçüktür. Bu yüzden S durumuna sahip olan düğüm 2’nin atasını kuyruklamayız
33
S A C B D E F G Örnek 1 100 5 # Durum Derinlik Maliyet Ata 1 S 0 0 -
Düğüm 4 C durumlu ataya sahiptir ve aynı zamanda C durumuna sahip açık düğüm #3 ten daha az maliyetlidir bu yüzden en kısa yolu yansıtmak için açığı güncelleriz
34
S A C B D E F G Örnek 1 100 5 # Durum Derinlik Maliyet Ata 1 S 0 0 -
35
S A C B D E F G Örnek 1 100 5 # Durum Derinlik Maliyet Ata 1 S 0 0 -
36
S A C B D E F G Örnek 1 100 5 # Durum Derinlik Maliyet Ata 1 S 0 0 -
37
S A C B D E F G Örnek 1 100 5 # Durum Derinlik Maliyet Ata 1 S 0 0 -
38
S A C B D E F G Örnek Hedefe ulaşıldı 1 5 1 5 1 5 100 5 5
# Durum Derinlik Maliyet Ata 1 S 0 0 - 2 A 1 1 1 4 B 2 2 2 5 C 3 3 4 7 D 4 8 5 8 E 9 F 10 G 6 G 1 S 5 A C 1 5 B 1 D 5 E 100 5 F G 5 Hedefe ulaşıldı
39
Tekrarlanan durumların aradan kaldırılması
Amaç:Durum uzayının boyutunu küçültmekle arama etkisinin yükseltilmesi 1. 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ı
40
Daha fazla örnek… Demolar:
41
3- Derinlik-önce arama Derinlik öncelikli aramada daima ağacın en derin düğümlerinden biri açılır. Yani arama ağacı yukarıdan aşağıya en sol düğümden başlayarak yaprak düğüme ulaşılana dek geliştiriliyor. Eğer amaçlanmayan düğüme erişilmiş ise veya açılacak düğüm kalmamış ise açma işlemine daha sığ (en sol ve genişletilmemiş) seviyelerden devam edilir. Uygulama: QueueingFN=Ardılları kuyruğun önünde ekle (LIFO yapısı, yani ardıllar öne yazılacak) CG SC S SR W CS L A SG FA R E Arama ağacı
42
Algoritma Başlangıç düğümlerin bir listesi olan N’yi yerleştir
Eğer N boş ise o zaman çık ve başarısızlık mesajı ver N’de ilk düğüm olan n ‘yi yerleştir ve N’den n’yi sil Eğer n amaç düğümü ise o zaman çık ve başarı mesajı ver Eğer n=max derinlik ise o zaman 2. adıma git Aksi durumda N’nin önüne n’nin coçuklarını ekle ve 2. adıma geri dön
43
Seviye 0 Seviye 1 Seviye 2 Seviye 3
44
Adımı km ile maliyetli Romanya
45
Derinlik-önce arama
46
Derinlik-önce arama
47
Derinlik-önce arama
48
return GENERAL-SEARCH(problem, ENQUEUE-AT-FRONT)
Derinlik-önce arama return GENERAL-SEARCH(problem, ENQUEUE-AT-FRONT) G.Düğüm OPEN list CLOSED list { S } S { A B C } A { D E G B C} D { E G B C } E { G B C } G { B C } Bulunan çözüm yolu S A G <-- bu G nin maliyeti 10 Genişletilen düğüm sayısı (hedef düğüm dahil) = 5 S 1 8 5 A B C 3 9 7 D E G
49
Derinlik önce arama CG SC S SR W CS L A SG FA R E SR L A R FA SG S SC
Arama ağacı Derinlik önce arama Derinine arama işlemleri ardışıklığı SR L A R FA SG S SC CG CS W E CS’ 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 SCS SR L A R FA SG
50
Derinlik önce arama S 1 8 5 A B C 3 9 7 D E G Gen. düğüm liste { S }
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 1 8 5 A B C 3 9 7 D E G
51
Derinlik-önce aramanın özellikleri
Completeness: Hayır, sonsuz durum uzayında (sonsuz derinlik,döngülü uzaylar ) başarısız (Evet, sonlu durum uzayı) Time complexity: O(b m) 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ı olabilir. Space complexity: O(bm) Optimality: Hayır Hatırla: b = dallanma faktörü m = arama ağacının max. derinliği
52
Derinlik-önce aramanın zaman karmaşıklığı: detaylar
En kötü durumda: hedef(sadece) dalın en sağında olabilir, m b G Zaman karmaşıklığı == bm + bm-1 + … + 1 = bm+1 -1 Böylece: O(bm) b - 1
53
Derinlik önce aramanın bellek karmaşıklığı
Kuyrukta(QUEUE) en fazla düğüme altta en solda ulaşılır. Örnek: m = 3, b = 3 : ... QUEUE, tüm düğümleri içerir. Böylece: 7. Genelde: ((b-1) * m) + 1 Mertebe: O(m*b)
54
Tekrar eden durumlardan kaçınma
Etkililik : geldiğimiz duruma geri dönme, mesela genişletme fonksiyonu düğümün ebeveyniyle(parent) aynı durumda olan mümkün ardılları atlayacaktır. devirli(cycle) yollar oluşturma, mesela genişletme fonksiyonu düğümün herhangi atası(ancestor) ile aynı durumda olan ardılları atlayacaktır. hafızada üretilen her düğümün izini saklayarak bu duruma en son ulaştığımızdan daha daha düşük maliyete sahip değilse daha önce üretilen bir durumu tekrar üretme.
55
4- Derinlik-sınırlı Arama
Derinliğine aramada karşılaşılan problemi gidermek için yolun maksimum derinliği belirtilerek derinlik sınırlı arama yapılabilir. 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 20 şehrin bulunduğu haritada bir şehirden diğerine gitmek için yapılacak bir aramada maksimum derinlik 19 olarak verilebilir. Yeni işlem formu "eğer A'da iseniz ve seyahat ettiğiniz şehir sayısı 19'dan küçük ise yol uzunluğu bir fazla olan B şehrinde yeni bir durum oluştur" şeklinde ifade edilebilir Derinlik limitli bir derinlik-önce aramadır / Uygulama: l derinliğindeki düğümlerin ardılları yoktur. Complete: kesim uygun şekilde seçilmişse o zaman bir çözümü garanti eder. Eğer derinlik az seçilirse tamlık da tehlikeye girer. Optimal: en düşük maliyetli çözümü garanti etmez Derinliğine aramada olduğu gibi derinlik sınırlamalı aramada da zaman karmaşıklığı O(bl), bellek karmaşıklığı O(bl)'dir. Burada l derinlik sınırıdır
56
Derinlik-sınırlı 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) 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 Zaman karmaşıklığı Uzay karmaşıklığı Tam? Optimal? O(bl) Evet(çözüm <=l derinlikte ise) hayır
57
limit = 0 limit = 1 limit = 2 limit = 3
58
Örnek: Romanya Ziyareti
Haritada 20 şehir var. Maximum derinlik sınırı l = 19 verilebilir
59
5- Tekrarlanan derinleştirme araması
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
60
Tekrarlanan derinleştirme araması l =0
61
Tekrarlanan derinleştirme araması l =1
62
Tekrarlanan derinleştirme araması l =2
63
Tekrarlanan derinleştirme araması l =3
64
Tekrarlanan derinleştirme araması
Function Iterative-deepening-Search(problem) returns bir çözüm ya da hata for depth = 0 to do result Depth-Limited-Search(problem, depth) if result succeeds then return result end return hata Genişlik-önce ve derinlik-önce arama stratejilerinin avantajlarını birleştirir. Genişliğine arama gibi optimal ve tamdır, derinliğine arama gibi az bellek gerektirir Completeness: Evet, Time complexity: (d+1)b0 + d b1 + (d-1)b2 + … + bd = O(b d) Space complexity: O(bd) Optimality: Evet, eğer adım maliyeti = 1
65
Tekrarlanan derinleştirme karmaşıklığı
İteratif derinleşmede köke yakın durumlar çok kez açılırlar. Bu kayıp olarak görülse de derinlik sınırlı arama ile fazla farklı değildir. Örneğin b=10 ve d=5 için derinlik sınırlı arama açma sayısı 1+b + b2 + b bd = = iken derinliğine aramada alt seviyedekiler bir kez, bir üsttekiler iki kez vb kök d+1 kez açılacak ve toplam açılma sayısı (d+1)1+(d)b+(d-1)b bd-1+1bd= = İteratif derinleşme algoritması genişliğine veya derinliğine aramadan yalnız %11 daha fazla düğüm açar. Çünkü düğümlerin çoğu yaprak seviyesindedir(alt) Bu nedenle iteratif derinleşmenin zaman karmaşıklığı O(bd), bellek karmaşıklığı ise O(bn)'dir. Arama uzayı büyük olduğunda ve çözümün derinliği bilinmediği zaman iteratif derinleşme algoritması kullanılır.
66
6- İki yönlü arama İki yönlü aramanın aramada, arama
Goal Start 6- İki yönlü arama İki yönlü aramanın aramada, arama işlemine başlangıç durumu ve amaç durumundan aynı anda başlanır. İki arama ortada karşılaştığı zaman işlem biter. 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 Problem: amaçtan geriye doğru aramak?? Amaçtan geriye doğru aramak ne demektir? Amaç düğümden başlayarak önceki düğümleri (predecessor) sırayla üretmektir. İşlemlerin tersi mümkün olduğunda, önceki düğümler kümesi ve sonraki düğümler (successor) kümesi aynı olacaktır. Bazı problemlerde öncekileri bulmak zor olabilir. Birden fazla amaç durum var ise ne yapılabilir? Amaç durum yerine amaç durum kümesine aynı işlemler uygulanabilir. Amaç durumların tespiti güç olabilir. Örneğin satrançta şahmat amacını üretecek durumlar nelerdir? Yeni oluşturulacak bir düğümün arama ağacının diğer yanında yer alıp almadığını kontrol etmenin etkin bir yolu olmalıdır. Her iki yarıda ne çeşit aramanın yapılacağına karar vermek gerekir. Şekilde gösterilen iki tarafta da genişliğine arama en iyi seçim midir?
67
b=10, d=6 alınırsa her bir yön 3 derinliğinde olur ve oluşturulan düğüm sayısı 2,222 dir. Derinlik öncelikli aramada ise bu sayı 1,111,111 adet düğümdür. Bidirectional search’ te n adet ardıl tanımladığı gibi n adette öncül tanımlanır. Bazı problemler için, öncülleri hesaplamak oldukça zordur.
68
Algoritma 1. Sadece kökü içeren yolu LİSTE1’ e ata ;
Sadece amacı içeren yolu LİSTE2’ ye ata ; 2. WHILE (her iki LİSTE boş değilse) AND (LİSTE1 ve LİSTE2 aynı durumu paylaşmaz ise) DO - Her iki listenin ilk yollarını sil; - Onların yeni yollarını oluştur (tüm çocuklarına giden) - Çıkmaz döngü oluşturan yeni yolları reddet; - Yeni yolları listenin sonuna ekle; 3. IF LİSTE1 ve LİSTE2 bir durum paylaşırsa THEN başarı durumu; ELSE başarısız durum;
69
Bilgisiz arama stratejilerini karşılaştırma
Kriter Breadth- Uniform Depth- Depth- Iterative Bidirectional first cost first limited deepening (uygulanabilirse) Time b^d b^d b^m b^l b^d b^(d/2) Space b^d b^d bm bl bd b^(d/2) Optimal? Evet Evet Hayır Hayır Evet Evet Complete? Evet Evet Hayır Evet ld Evet Evet b – arama ağacının max dallanma faktörü d – en düşük maliyetli çözümün derinliği m – durum uzayının max derinliği (sonsuz olabilir) l – derinlik sınırı
70
Tekrarlayan durumlardan sakınma
71
Fazlalık Arama (Tekrarlı Arama)
Arama ağacı, hareketlerin tüm olası durumlarını araştırır. Eğer farklı hareketler aynı durum sonucunu veriyorsa buna fazlalık arama denir. Başla Durum/Geçiş Uzayı Arama Ağıcı
72
Arama ağacı, hareketlerin tüm olası durumlarını araştırır.
Fazlalık Arama Arama ağacı, hareketlerin tüm olası durumlarını araştırır. Eğer farklı hareketler aynı durum sonucunu veriyorsa buna fazlalık arama denir. Başla Aynı Durum! Durum/Geçiş Uzayı Arama Ağıcı
73
Arama ağacı, hareketlerin tüm olası durumlarını araştırır.
Fazlalık Arama Arama ağacı, hareketlerin tüm olası durumlarını araştırır. Eğer farklı hareketler aynı durum sonucunu veriyorsa buna fazlalık arama denir. Başla Durum/Geçiş Uzayı 3 arama zamanında aynı alt ağaç!
74
Fazlalık arama, aramayı gereğinden fazla üssel olarak büyütebilir.
75
Fazlalık arama, aramayı gereğinden fazla üssel olarak büyütebilir.
Durumlar/Hareketler ~ Herbir durum için 4 mümkün hareket Arama ağıcı
76
Fazlalık arama, aramayı gereğinden fazla üssel olarak büyütebilir.
Durumlar/Hareketler ~ Herbir durum için 4 mümkün hareket Arama ağıcı Fakat bütün arama boyunca durumlar
77
Ard arda gelen tekrarlı düğüm ve hareketler budanmış
Fazlalık Arama Çözüm: Ağaç Arama Algoritması Bütün ziyaret edilmiş düğümleri bellekte tut Yeni düğüm, önceden görünmüş durumlara benziyorsa bu düğümü atama yapma. Ard arda gelen tekrarlı düğüm ve hareketler budanmış
78
Özet 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. Bilgisayar algoritmaları kullanılarak dikkatlice incelenebilecek bir durum uzayını tanımlamak için Problem formulasyonu genellikle gerçek dünya detaylarını soyutlamaya ihtiyaç duyar. Bir kere problem soyut formda formüle edildikten sonra karmaşıklık analizi bize problemi çözmek için en yii algoritmayı seçmemize yardım eder. Çeşitli bilgisiz arama stratejileri daha sonraki aşamada açılacak düğümü seçmede farklılık gösterir. Tekrarlanan derinleştirme arama sadece lineer uzay kullanır ve diğer bilgisiz arama stratejilerinden daha az zaman gerektirir.
79
Özet 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.
80
Arama algoritmaları için demolar
81
SORULAR?!?!?!
82
ÖDEV-1 1) Dallanma faktörü b, derinliği d olan sonlu düzenli bir arama ağacımız olsun. Tek çözüm düğümü en son seviyenin ortasındadır. a) Bilgisiz derinlik-önce arama ile genişletilen düğüm sayısını hesaplayınız. b) Bilgisiz genişlik-önce arama ile genişletilen düğüm sayısını hesaplayınız. c) Bilgisiz tekrarlanan derinleştirmeli arama ile genişletilen düğüm sayısını hesaplayınız.
83
ÖDEV-2 2) Üç misyoner ve üç yamyam nehrin sol tarafından sağa geçmek istemektedir. Yalnız iki kişiyi taşıyabilecek bir bot vardır. Nehir yüzülerek geçilememektedir, bot en az bir kişi tarafından karşı kıyıya götürülebilmektedir. Nehrin her iki kıyısında yamyamların sayısı misyonerleri geçerlerse misyonerlerin yenilme tehlikesi vardır. Problem misyonerlerin yenilmeden herkesin karşı kıyıya geçmesidir Her durumu üç basamaklı sayıyla temsil etmelisiniz (IJK). I, sol taraftaki misyoner sayısı, J sol taraftaki yamyam sayısı ve K da soldaki bot sayısıdır. Bu temsille I ve J 0-3 arasında K da sadece 0-1 olabilir. 331 başlangıç durumu, 000 hedef durumdur. Geçersiz üç durum örneği veriniz. Bu problemdeki tüm geçerli hareketler tersine çevrilebilir mi? Bu problem için tam durum uzayını çiziniz. Çizgede bir durum bir kez bulunmalıdır. Geçersiz durumlar çizilmeyecektir (nehrin herhangi bir tarafında yamyamların misyonerlerden fazla olduğu durum).
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.