1 / 72

MIT503 Veri Yapıları ve algoritmalar İleri graf sorunları

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

ehren
Télécharger la présentation

MIT503 Veri Yapıları ve algoritmalar İleri graf sorunları

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 algoritmalarİlerigraf sorunları Y. Doç. Yuriy Mishchenko

  2. İleri graf sorunları Ders planı • En kısa patika problemi • Minimum yayılan ağaç problemi • Maximal akım problemi

  3. Temel Graf Kavramları • Graflar, genel ilişkileri temsil etmek için kullanılır • Birkaç nesne (düğüm) var ve onların arasında ilişkiler (bağlantılar) var • İlişkiler için sayısal değeri (ağırlık) atanabilir (ilişkinin güçlüğü) ve yön atanabilir (ilişkinin yönü) 0.5 0.25 0.77 0.33 1.0 0.5 0.17 1.0 0.33 0.15

  4. Graflar Temel Sorunları • Temel graf soruları – graf araması: • Bağlantıları takip ederek belirli bir nesne bulmak lazım • Belirli bir nesneden diğer bütün nesnelerin uzaklığı bulmak lazım • Grafın yapısını incelemek lazım • Derinlikte ve enine arama algoritmaları graf inceleme için kullanılır

  5. Graflar İleri Sorunları • En kısa patika problemi • Bağlantı ağırlıklarına göre (yanı adımların masraflarına göre), iki nesnelerin arasında asgari ağırlıkta (en üçüz) yolu bulmak lazım • Minimum yayılan ağaç problemi • Bağlantı ağırlıklarına göre (yanı bağlantıların masraflarına göre), bütün nesneleri içeren asgari ağırlıkta ağaç grafı bulmak lazım (ağaç=döngüsüz graf) • Maximal akım problemi • Bağlantı ağırlıklarına göre (yanı bağlantıların aktarımlarına göre), bir ağda mümkünse azami akışı bulmak lazım • Maximal kesim • Bağlantı ağırlıklarına göre (yani bağlantıların güçlerine göre), bir anlamda optimal bölümleri bulmak lazım

  6. En kısa patika problemi • En kısa patika, ileri graf problemlerinden en yaygın karşılaşılanıdır: • Bir ağırlıklı graf var; • örneğin, bağlantılar nesneden nesneye mümkün adımları belirtir ve ağırlıklar böyle mümkün adımların masraflarını belirtir • Grafda, bir başlangıç ve bir sonuç nokta seçilir • Başlangıç ve sonuç arasındaki asgari ağırlıkta, yani en ücüz, en verimli yol bulmak lazım • Yolun ağırlığı, içerdiği bağlantıların ağırlığına eşittir

  7. En kısa patika problemi • En kısa patika probleminin uygulamaları: • İki konum arasında en uygun yolu bulma • Bir süreç için en verimli sırası bulma • Bir üretme tesisinin en verimli yerleşimi bulma • Bir projenin en verimli adımşarın sırası bulma • İnternet ağlarında internet trafiği yönlendirme • Daha çok örneği 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 yolu en “kısa” yoludur 1.0 0.33 0.15

  12. En kısa patika problemi • Ağırlıklar yoksaydı, enine arama algoritması kullanılabilirdi • Ağırlıklar varsa, çok zor bir problemdir • Genellikle, bütün mümkün yolları incelemek gerekiyor ve böyle mümkün yol çok fazla olabilir–2 olanaklı 10 adım varsa 210=1000 yol incelemek gerekebilir • Naif adımlar, gerçek en uygun adımları olmayabilir

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

  14. En kısa patika algoritması • En kısa patika için, “Dijkstra” algoritmasını en çoğu kullanırlar • Dijkstra algoritması, Edsger Dijkstra tarafında 1959 bulundu

  15. En kısa patika algoritması • Ana fikri: • Başlangıçla başlar • Komşularını inceler • Şu ifade kullanılır: ana nesnesinin başlangıçtan uzaklığı D ve ana nesnesi ve bir komşu arasındaki ağırlık d ise, bu yeni komşunun başlangıçtan uzaklığı en çok (D+d) değerinde olmalıdır • Böyle bütün komşular için, bütün onların “ana-nesneleri” kullanarak şöyle “D+d” minimumu bulunur

  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 patika Geri ilerlerken bulunur 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,bütün Graf’daki nesneleriçin// başlama 3 v’nin uzaklığı:= yok ; // uzaklık değerleri, dizi 4 v’nin öncesi := yok ; // nesne “v” için optimum önceki nesnesi, dizi 5 end for ; 6 başlangıç’ınuzaklığı:= 0 ; // Başlangıcın başlangıçtan uzaklığı sıfırdır 7 Q := (grafın nesnelerinin kümesi) ; // komşular kümesi 8 whileQboş değil iken: 9 u := Q’daki en küçük uzaklıkta olan nesnesi; 10 Ifu’nun uzaklığı = yok : 11 break ; // bu nesneler başlangıçtan sağlanamaz 12 end if ; 13 Q’dan uçıkartın ; 14 for v , u’nun bütün komşular için// u’nun komşu v, Q’da olmalı 15 alt := u’nunuzaklığı + u’den→v’yeağırlığı; 16 ifalt < v’nin uzaklığı: // min (u,v,a)bulma 17 v’ninuzaklığı:= alt ; 18 v’nin öncesi := u ; 19end if ; 20end for ; 21end while ; 22endDijkstra.

  26. Algoritma analizi • En kısa yol bulma ne kadar zamandır gerekir? • Bütün adımlarda bütün grafdaki nesneleri incelemek gerekebilir; bu demek ki, • Grafın N nesnesi varsa, en kısa yol bulma O(N2)’a kadar zamandır gerekir • Naif bütün mümkün patika inceleme O(NN) vakit genellikle zamandır gerekir • Dijkstra algoritması, O(N2) algoritmadır

  27. Minimum yayılan ağaç problemi • Minimum yayılan ağaç problemi • Bir ağırlıklı graf var • Örneğin, bağlantılar birkaç konum arasındaki bağlantıları belirtir, ve ağırlıklar bağlantıların fiyatlarını belirtir • Yayılan ağaç, bütün grafdaki nesneler içeren bir ağaçtır • Bu ağacın toplam ağırlığı, toplam içeren bağlantıların ağırlığına eşittir (bağlantıların toplam fiyatı, mesela) • Asgari toplam ağırlıkta (fiyatta) böyle bir ağaç bulmak gerekir

  28. Minimum yayılan ağaç problemi • Uygulamalar: • Bir bölgenin elektrik şebeke ağı tasarımı, yanı bütün santralden bütün tüketicileri sağlayan en az fiyatlı bir elektrik şebeke ağı yapmak lazım • Büyük üreticinin tedarik ağı tasarımı • Büyük magazanın şübe ağı tasarımı • Minimum yayılan altgraf her zaman bir ağaçtır, çünkü döngüler varsa, böyle bir graf asgari ağırlıkta olamaz–döngünün bağlantıları çıkartılabilir

  29. Minimum yayılan ağaç problemi • Yayılan ağaçlar çok var, tek yayılan ağaç yok; • Derinlikte arama bir yayılan agaç oluşturyordu • Enine arama bir yayılan agacı oluşturuyordu • Asğari ağırlıkta (fiyatta) yayılan ağacı bulma zor problem olabilir • Minimum yayılan ağaç birkaç tane de olabilir • Minimum yayılan ağaç bulmak için Kruskal veya Prim algoritmalarını kullanılır

  30. Minimum yayılan ağaç algoritması • Prim algoritması daha basittir • Vojteç Jarnik (1930) ve sonra Robert Prim (1957) tarafından bulundu

  31. Minimum yayılan ağaç algoritması • Prim algoritmasının ana fikri: • Herhangi bir nesne ile başlıyor; bu noktada tek nesneyli yayılan agacı ile başlıyor • Bütün adımlarda önce oluşturulan yayılan ağaca asgari ağırlıkta bitişik bağlantıyı ekliyor • Sonuna kadar devam ediyor • Prim algoritması açgözlü algoritmanın örneğidir–bütün adımlarda lokal, yanı şimdi en iyi görünün, karar edilir, en az “fiyatlı” bağlantı eklenir

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

  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 2. Asgari ağırlıkta bitişik kenarı eklenir

  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 3. 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 4. 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 5. 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 6. 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 7. 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 8. 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 Asgari yayılan ağaç

  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 Birkaç minimum yayılan ağaç da olmayabilir

  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 Aynı ağırlıkta olan başka bir minimum yayılan ağaç →

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

  44. Maximum akım problemi • Maximum akım problemi; • Bir ağırlıklı akım ağını temsil eden bir graf var (mesela – şehirdeki yol ağı, elektrik şebeke ağı, vb) • Ağırlıklar, nesneden nesneye azami akımları belirtiyor • Tasarlanacak akım için başlangıç (ilk) ve sonuç (son) noktalar var • Başlangıçtan sonuca kadar azami toplam akımı bulmak gerekir

  45. Maximum akım problemi • Uygulamalar • Sürecin maximum verimliliği bulma • Ulaşım ağılarının verimliliği arttma • Elektrik devreleri tasarımı • Birkaç başlangıçlı akım problemi için bir başlangıç bir sonuçlu maximum akım problemi hala çözümü verir • Bütün grafdaki nesneleri içeren asgari fiyatlı yol kümesi bulma • Bir başlangıç noktasından bir sonuç noktasına azami bağımsız yol kümesi bulma • Vb

  46. Akım grafının kavramları U ve V nesne arasındaki bağlantının kapasitesi c(u,v) Başlangıç, “b” 0.5 0.3 Bağlantının akımı f(u,v) Sonuç, “s”

  47. Akım graflarının kavramları U ve V nesne arasındaki bağlantının kapasitesi c(u,v) 0.5 Başlangıç, “b” 0.5 0.2 0.2 0.2 0.5 0.3 0.3 1.0 Bağlantı akımı f(u,v) 0.2 0.8 1.0 Koşulları: 0.1 0.3 Akım yetenekten daha küçük f(u,v)≤c(u,v) 0.3 Gelen akım, ∑f(u,v), ve çıkan akım, ∑ f(u,v), eşittir Sonuç, “s”

  48. Akım graflarının kavramları • Bütün bağlantılar için iki tane özellik var; • c(u,v), u nesnesinden v nesnesine kapasitesi yada azami akımı belirtir • f(u,v), u nesnesinden v nesnesine gerçekleştirilen akımı belirtir

  49. Akım graflarının kavramları • Akım uygun olması için, gerçekleştirilen akımlar bağlantıların kağasitelerinden daha küçük olmalıdır – f(u,v)≤c(u,v) • Bütün düğümler için gelen akımlar çıkan akımlara eşit olmalı, (gelen)∑f(u,v)=(çıkan)∑f(u,v)

  50. Akım grafı kavramları Maximum akım matematiksel problemi Başlangıçtan yada sonuca azami akımı bulun bulmak Gerçekleştirilen akımlar kapasitelerden daha küçükler Gelen ve çıkan akımlar eşit olmalı

More Related