1 / 83

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. 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

sadah
Télécharger la présentation

Ders Notu – 3.2 Bilgisiz (Kör) Arama Yöntemleri

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. YAPAY ZEKA ve UZMAN SİSTEMLER Ders Notu – 3.2Bilgisiz (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 arama • 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 (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.

  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. arama ağacı FA L SG CG SC S CS A W FA R CS L SG A E SG R SG E SR başarı 1. Genişlik-önce 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. • 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. C B A S D E 8 1 5 3 9 7 4 5 G 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: bsonluysa 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. d m b G 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. • Böylece: O(bd)

  16. d m b G 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. • QUEUE tüm vedüğümleri içerir. (Böylece: 4) . • Genel olarak: bd G

  17. 1 1 b 2 b^2 b^d s • d derinlikli tam arama ağacı; her bir yaprak olmayan düğümün b oğlu var: • Toplam: 1 + b + b^2 + ... + 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 1 + 10 + 100 + 1000 + ... + 10^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. O 151 F 71 S 99 Z 75 211 80 A 140 R B P 97 120 101 118 146 138 D 75 M T 111 70 L C

  23. O F 151 S 71 Z 99 75 211 80 A 140 R B P 97 120 101 118 D 146 138 M 75 T L 111 70 C A Z75 T118 S140 T118 S140 O146 S140 O146L229 O146R220L229 F239 O291 R220 L229 F239 O291S297 L229 F239 O291 S297P317 D340 C366 F239 O291 S297P317 D340 C366 M299 …

  24. G Düzenli-maliyetli Arama GENERAL-SEARCH(problem, ENQUEUE-BY-PATH-COST) G.DüğümD.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 B C A 3 9 4 5 7 E D 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 (Queueboş) or (ilk düğüm Hedefdurum): • İ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. S 1 1 5 5 A C 1 2 5 B 10 D 5 15 E 100 5 F 20 G 5 Dikkat! • Düzenli maliyetli arama kuyrukta herhangi bir düğüm hedef düğüm olduğunda sonlandırılırsa optimal olmaz. • 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. S 1 5 A C 1 5 B 1 D 5 E 100 5 F G 5 Örnek # Durum Derinlik Maliyet Ata 1 S 0 0 -

  31. S 1 5 A C 1 5 B 1 D 5 E 100 5 F G 5 Örnek # Durum Derinlik Maliyet Ata 1 S 0 0 - 2 A 1 1 1 3 C 1 5 1 Siyah = açık kuyruk Gri= kapalı kuyruk Açık kuyruğu sıralı tutacak şekilde genişletilmiş düğümleri ekle

  32. S 1 5 A C 1 5 B 1 D 5 E 100 5 F G 5 Örnek # Durum Derinlik Maliyet Ata 1 S 0 0 - 2 A 1 1 1 4 B 2 2 2 3 C 1 5 1 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 1 5 A C 1 5 B 1 D 5 E 100 5 F G 5 Örnek # Durum Derinlik Maliyet Ata 1 S 0 0 - 2 A 1 1 1 4 B 2 2 2 5 C 3 3 4 6 G 3 102 4 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 1 5 A C 1 5 B 1 D 5 E 100 5 F G 5 Örnek # 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 6 G 3 102 4

  35. S 1 5 A C 1 5 B 1 D 5 E 100 5 F G 5 Örnek # 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 5 13 7 6 G 3 102 4

  36. S 1 5 A C 1 5 B 1 D 5 E 100 5 F G 5 Örnek # 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 5 13 7 9 F 6 18 8 6 G 3 102 4

  37. S 1 5 A C 1 5 B 1 D 5 E 100 5 F G 5 Örnek # 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 5 13 7 9 F 6 18 8 10 G 7 23 9 6 G 3 102 4

  38. Örnek # 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 5 13 7 9 F 6 18 8 10 G 7 23 9 6 G 3 102 4 S 1 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: http://pages.pomona.edu/~jbm04747/courses/spring2001/cs151/Search/Strategies.html

  41. Arama ağacı E A CG SC S FA W L CS R SG FA R CS L SG SG A E SR SG 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)

  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. 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 B C A 3 9 7 E D G

  49. CG Arama ağacı SC S Başl.kuyruk CG-SC genişlenmesi SR L CS W Kuyruk 1 SC-S genişlenmesi L CS W Kuyruk 2 SR R L SG FA CS A SC CG FA CS SG R L SG E E SG S W A S-SR, L, CS, W genişlenmesi Kuyruk 3 SR genişlenemez A SG E CS’ CS W L-A, SG, E, CS genişlenmesi Kuyruk 4 R SG E CS’ CS W A-R genişlenmesi Kuyruk 5 R-FA genişlenmesi Kuyruk 6 FA SG E CS’ CS W FA genişlenemez Kuyruk 7 SG E CS’ CS W Başarı Kuyruk 8 Derinlik önce arama • Derinine arama işlemleri ardışıklığı CG SCS SR L A R FA SG

  50. Derinlik önce arama 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 1 8 5 B C A 3 9 7 E D G

More Related