1 / 69

MIT503 Veri Yapıları ve algoritmalar En önemli graf problemleri

MIT503 Veri Yapıları ve algoritmalar En önemli graf problemleri. Y. Doç. Yuriy Mishchenko. En önemli graf problemleri. Ders planı En kısa patika problemi Minimum yayılan ağaç problemi Maximal akım problemi. Graf Temelleri. Graflar, genel ilişkileri temsil etmek için kullanılır

ervin
Télécharger la présentation

MIT503 Veri Yapıları ve algoritmalar En önemli graf problemleri

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. MIT503 Veri Yapıları ve algoritmalarEn önemligraf problemleri Y. Doç. Yuriy Mishchenko

  2. En önemli graf problemleri Ders planı • En kısa patika problemi • Minimum yayılan ağaç problemi • Maximal akım problemi

  3. Graf Temelleri • Graflar, genel ilişkileri temsil etmek için kullanılır • Birkaç nesne (düğüm) ve onlar arasında ilişkiler (bağlantılar) var • İlişkilere sayısal değerler atanabilir (ilişkilerin ağırlıkları) ve yönler atanabilir (ilişkilerin yönleri) 0.5 0.25 0.77 0.33 1.0 0.5 0.17 1.0 0.33 0.15

  4. Graf Arama Problemi • Temel graf problemi – graf arama/incelenmesi: • Bağlantıları takip ederek belirli bir düğüm bulmak • Belirli bir düğümden diğer düğümlerin uzaklıklarını bulmak • Grafın yapısını incelemek (örneğin bağlı parçaları) • Derinlikte ve enine graf arama algoritmalar veya stratejileri

  5. Graflar İleri Sorunları • En kısa patika problemi • Bağlantı ağırlıklarına göre (örneğin bağlantıların masraflarına göre) iki düğüm arasında asgari ağırlıkta olan (örneğin en üçüz) patikayı bulmak • Minimum yayılan ağaç problemi • Bağlantı ağırlıklarına göre (örneğin masraflar) grafın tüm elemanlarını içeren ve asgari ağırlıkta olan yayılan ağaç bulmak • Maximal akış problemi • Bağlantı ağırlıklarına göre (bağlantı aktarımlarına göre) bir ağı geçen azami akış sistemi bulmak • Maximal kesim • Bağlantı ağırlıklarına göre (bağlantı güçlerine göre) grafın iki parçaya optimal bölme bulmak

  6. En kısa patika problemi • En kısa patika, ileri graf problemlerinden en yaygın karşılaşılananlardan biridir: • Bir ağırlıklı graf var, örneğin bir üretim sürecinin mümkün adımları belirten ve ağırlıklar ilişkili masraflarını belirten bir graf • Bir başlangıç ve sonuç noktasını bağlayan asgari ağırlıkta olan, yani en ücüz, patikayı bulmak lazım (patikanın ağırlığı, içeren bağlantı ağırlıkların toplamı demektir)

  7. En kısa patika problemi • Uygulamaları: • İki konum arasında en uygun yol bulmak (harita ve yol tarifleri) • Bir süreç için en verimli işlem sırası bulmak • Üretim tesisinin en uygun yerleşimi bulmak • Bir projede en verimli adım sırası bulmak • İnternet trafiği yönlendirmek • Birçok örnek kolayca bulunabilir

  8. En kısa patika problemi • En kısa patika problemi sonuç 1.5 0.25 0.77 0.33 1.0 başlangıç 0.5 0.17 1.0 0.33 0.15

  9. En kısa patika problemi • En kısa patika problemi “A” yol masrafı = 1.0+0.33+0.5+0.77=2.5 sonuç 1.5 0.25 0.77 0.33 1.0 başlangıç 0.5 0.17 1.0 0.33 0.15

  10. En kısa patika problemi • En kısa patika problemi “A” yol masrafı = 1.0+0.33+0.5+0.77=2.5 sonuç 1.5 0.25 “B” yol masrafı= 1.0+0.25+1.5=2.75 0.77 0.33 1.0 başlangıç 0.5 0.17 1.0 0.33 0.15

  11. En kısa patika problemi • En kısa patika problemi “A” yol masrafı= 1.0+0.33+0.5+0.77=2.5 sonuç 1.5 0.25 “B” yol masrafı= 1.0+0.25+1.5=2.75 0.77 0.33 1.0 başlangıç 0.5 0.17 A yol daha“kısa” 1.0 0.33 0.15

  12. En kısa patika problemi • Note: Ağırlıksız grafta enine arama bu işi zaten yapar • Ağırlıklı graflarda çok zor problemdir • Bütün mümkün yolları incelersek, 4 olanaklı 10 adım için 410=1,000,000 olanak incelenmesi gerekiyor • Naif adımlar da zararlı olabilir

  13. En kısa patika problemi Naif ilk adım 3 0.5 1.5 1 Doğru adım En kısa yol

  14. En kısa patika algoritması • En kısa patika problemi çözmek için “Dijkstra” algoritması kullanılır • Dijkstra algoritması, matematikçi Edsger Dijkstra tarafında 1959 da keşfedilmiştir

  15. En kısa patika algoritması • Ana fikri: • Başlangıç düğümünde başlayın • Düğümün komşularını inceleyip başlangıçtan onların mesafelerini hesaplayın • Komşuların mesafelerini hesaplamak için bu formulü kullanın: önceki düğümün başlangıçtan uzaklığı D ve o düğüm ve komşu arasında ağırlık d ise, komşunun başlangıçtan uzaklığı en çok (D+d) dir

  16. En kısa patika algoritması 0.5 x 0 0.2 0.2 0.5 0.3 x 1.0 x x 0.2 0.8 x 1.0 0.3 0.1 x x 0.3

  17. En kısa patika algoritması 0.5 0.5 0 0.2 0.2 0.5 0.3 0.2 1.0 x x 0.2 0.8 1.0 1.0 0.3 0.1 x x 0.3 1. Başlangıcın komşularını incelenir; uzaklıklarını doğrudan atanır (önceki D=0, başlangıç zaten)

  18. En kısa patika algoritması 0.5 0.5 0 0.2 0.2 0.5 0.3 0.2 1.0 x x Bu nesneyi geçtik 0.2 0.8 1.0 1.0 0.3 0.1 2.0 x 0.3 2. Birinci “komşu” nesnesinin komşuları incelenir

  19. En kısa patika algoritması Bu nesneyi geçtik şimdi 0.5 0.5 0 0.2 0.2 0.5 0.3 0.2 1.0 0.5 x 0.2 0.8 1.0 1.0 0.3 0.1 2.0 0.4 0.3 3. İkinci “komşu” nesnesinin komşuları incelenir

  20. En kısa patika algoritması Burada, yeni uzaklık (0.7) önce uzaklık (0.5)’tan daha büyük; değiştirmiyoruz 0.5 0.5 0 0.2 0.2 0.3 0.2 1.0 0.5 1.0 0.2 0.8 1.0 1.0 0.3 0.1 2.0 0.4 0.3 4. Üçüncu “komşu” nesnesinin komşuları incelenir

  21. En kısa patika algoritması Tekrar, yeni uzaklık (2.3) önce uzaklık (0.5)’tan daha büyük; değiştirmiyoruz 0.5 0.5 0 0.2 0.2 0.3 0.2 1.0 0.5 1.0 0.2 0.8 1.0 1.0 0.3 0.1 2.0 0.4 0.3 5. Sonraki “komşu” nesnesinin komşuları incelenir

  22. En kısa patika algoritması Burada yeni 1.3 uzaklık önce uzaklıktan daha büyük; değiştirmiyoruz 0.5 0.5 0 0.2 0.2 0.5 0.3 0.2 1.0 0.5 1.0 0.2 0.8 1.0 1.0 0.3 0.1 2.0 0.4 0.3 6. Sonraki “komşu” nesnesinin komşuları incelenir

  23. En kısa patika algoritması Burada yeni uzaklık (0.5) önce uzaklık (1.0)’tan daha küçük; şimdi değiştiriyoruz 0.5 0.5 0 0.2 0.2 0.5 0.3 0.2 1.0 0.5 0.5 0.2 0.8 1.0 1.0 0.3 0.1 2.0 0.4 0.3 7. Son nesne için onun komşusu incelenir

  24. En kısa patika algoritması 0.5 En kısa patikayi GERİ giderken buluruz 0.5 0 0.2 0.2 0.5 0.3 0.2 1.0 0.5 0.5 0.2 0.8 1.0 1.0 0.3 0.1 2.0 0.4 0.3

  25. Dıjkstra algoritmasının sözde kodu 1 functionDijkstra(Graf, başlangıç): 2 forv,Graf’ın bütün elemanları için// başlama 3 uzaklık(v):= nan; 4 önce_eleman(v):= nan; 5 end for ; 6Q := (Graf’ın eleman kümesi) ; 7uzaklık(başlangıç):= 0 ; 8 whileQboş değil 9 u:= Q’nun en küçük uzaklığa sahip olan elemanı ; 10Q’dan uçıkartın ; 11ifu’nun uzaklığı= nan 12devam edin ; // bu eleman başlangıçtan sağlanamaz, faklı bağlı parçası 13else 14 for v , u’nun bütün komşuları için 15 d:= u’nunuzaklığı + u’den→v’yeağırlığı; 16 ifd< uzaklık(v): // min (u,v,a)bulma 17 uzaklık(v):= d; 18 önce_eleman(v):= u ; 19end if ; 20end for ; 21 end if ; 21end while ; 22endDijkstra ;

  26. Algoritma analizi • En kısa yol bulma ne kadar zaman gerekir? • Bütün adımlarda bütün grafın elemanlarının incelenmesi gerekebilir, demek ki grafın Nelemanı varsa, en kısa yol bulma O(N2)’a kadar zaman gerekebilir • Dijkstra algoritması, O(N2) algoritmadır

  27. Minimum yayılan ağaç problemi • Bir ağırlıklı graf var, örneğin bağlantılar birkaç konum arasında mümkün yollar belirtir ve ağırlıklar yolların fiyatlarını belirtir • Yayılan ağaç, bütün grafın elemanları bağlayan grafın altağacıtır • Bu ağacın toplam ağırlığı içindeki bağlantıların toplam ağırlığıdır; örneğin yolların toplam fiyatı • Asgari toplam ağırlıkta olan yayılan ağaca minimum yayılan ağaç denir

  28. Minimum yayılan ağaç problemi • Uygulamalar: • Bir bölgenin elektrik şebeke, yanı santralları ve tüketicileri bağlayan en düşük masraflı elektrik şebeke • Üreticinin veya ticari şirketin tedarik ağı • Bir şirketin şübeler ağı

  29. Minimum yayılan ağaç problemi • Yayılan ağaçlar çok olabilir: • Derinlikte arama yayılan agacı • Enine arama yayılan agacı • Minimum yayılan ağaçların birkaç tanesi de olabilir, yani tek çözüm yok • Minimum yayılan ağaç bulmak için Kruskal ve Prim algoritmaları kullanılır

  30. Minimum yayılan ağaç algoritması • Prim algoritması, Vojteç Jarnik (1930) ve sonra Robert Prim (1957) tarafından keşfedilmiştir

  31. Minimum yayılan ağaç algoritması • Prim algoritmasının ana fikri: • Herhangi bir eleman ile başlıyoruz; bu noktada tek elemanlı yayılan agacı kuruyoruz • Bütün adımlarda önce oluşturulan yayılan ağaca asgari ağırlıkta bitişik bağlantı ekleniyor • Sonuna kadar

  32. Minimum yayılan ağaç algoritması • Prim algoritması açgözlü algoritmanın örneği, yani tüm adımlarda şimdilik en iyi görünen bağlantı eklenir

  33. Minimum yayılan ağaç algoritması 0.5 0.2 0.2 0.5 0.3 1.0 0.2 0.8 1.0 0.3 0.1 0.3 1. Başlangıç nesnesi

  34. Minimum yayılan ağaç algoritması 0.5 0.2 0.2 0.5 0.3 1.0 0.2 0.8 1.0 0.3 0.1 0.3 2. Asgari ağırlıkta bitişik kenarı eklenir

  35. Minimum yayılan ağaç algoritması 0.5 0.2 0.2 0.5 0.3 1.0 0.2 0.8 1.0 0.3 0.1 0.3 3. Asgari ağırlıkta bitişik kenarı eklenir

  36. Minimum yayılan ağaç algoritması 0.5 0.2 0.2 0.5 0.3 1.0 0.2 0.8 1.0 0.3 0.1 0.3 4. Asgari ağırlıkta bitişik kenarı eklenir

  37. Minimum yayılan ağaç algoritması 0.5 0.2 0.2 0.5 0.3 1.0 0.2 0.8 1.0 0.3 0.1 0.3 5. Asgari ağırlıkta bitişik kenarı eklenir

  38. Minimum yayılan ağaç algoritması 0.5 0.2 0.2 0.5 0.3 1.0 0.2 0.8 1.0 0.3 0.1 0.3 6. Asgari ağırlıkta bitişik kenarı eklenir

  39. Minimum yayılan ağaç algoritması 0.5 0.2 0.2 0.5 0.3 1.0 0.2 0.8 1.0 0.3 0.1 0.3 7. Asgari ağırlıkta bitişik kenarı eklenir

  40. Minimum yayılan ağaç algoritması 0.5 0.2 0.2 0.5 0.3 1.0 0.2 0.8 1.0 0.3 0.1 0.3 8. Asgari ağırlıkta bitişik kenarı eklenir

  41. Minimum yayılan ağaç algoritması 0.5 0.2 0.2 0.5 0.3 1.0 0.2 0.8 1.0 0.3 0.1 0.3 Asgari yayılan ağaç

  42. Minimum yayılan ağaç algoritması 0.5 0.2 0.2 0.5 0.3 1.0 0.2 0.8 1.0 0.3 0.1 0.3 Birkaç minimum yayılan ağaç da olmayabilir

  43. Minimum yayılan ağaç algoritması 0.5 0.2 0.2 0.5 0.3 1.0 0.2 0.8 1.0 0.3 0.1 0.3 Aynı ağırlıkta olan başka bir minimum yayılan ağaç →

  44. Algoritma analizi • Prim algoritması; • minimum yayılan ağaç oluşturur • açgözlü algoritmadır • O(N2) algoritması

  45. Maximum akış problemi • Maximum akış problemi; • Bir ağırlıklı akış ağı var, örneğin şehir yol ağı, elektrik şebeke ağı, bilgisayar ağı, vb • Ağırlıklar, bağlantının azami akışı belirler • Akışın başlangıç (ilk) ve sonuç (son) noktaları var • Başlangıçtan sonuca giden toplam akışı olarak en yüksek akış sistemi bulmak gerekmektedir

  46. Maximum akış problemi • Uygulamalar: • Bir üretim süreci için maximum çıktısını sağlayan yöntemi • Yok sisteminin iyileştirilmesi • Elektrik devrelerinin tasarımı • Bütün graf elemanlarını içeren asgari fiyatta olan yolların kümesini bulma • Bir başlangıç noktasından bir sonuç noktasına giden azami bağımsız yolların kümesi bulma • VB

  47. Akış grafının temelleri Bağlantının kapasitesi c(u,v) Başlangıç “b” 0.5 0.3 Gerçekleştirilmiş bağlantının akışı f(u,v) Sonuç “s”

  48. Akış graflarının temelleri Bağlantının kapasitesi c(u,v) Başlangıç “b” 0.5 0.5 0.2 0.2 0.2 0.5 0.3 0.3 1.0 Gerçekleştirilmiş bağlantının akışı f(u,v) Koşullar: 0.2 0.8 Mümkün akış f(u,v)≤c(u,v) 1.0 0.1 0.3 Tüm düğümlerin gelen ve çıkan akışları eşittir 0.3 Sonuç “s”

  49. Akış graflarının temelleri • Bütün bağlantılar için iki özellik var; • c(u,v), u elemandan v elemana azami kapasitesi veya akış • f(u,v), u elemandan v elemana gerçek akış

  50. Akış graflarının temelleri • Akışın uygun olması, gerçek akışların ilişkili bağlantıların kapasitelerinden küçük olması demektir, f(u,v)≤c(u,v) • Bütün düğümlere gelen ve çıkan akışlar eşit olmalıdır, (gelen)∑f(u,v)=(çıkan)∑f(u,v)

More Related