1 / 25

İçerik

İçerik. Ön Tanımlar Yol, Cevrim(çember) En Kısa Yol Problemi Dijktra’nın Algoritması Bellman ve Ford Algoritması. Yol. B. A. E. D. C. Çevrim (Çember). Çevrim başlangıç ve bitişi aynı olan yoldur. y = {A, E, B, C, D, A} y = {B, A, E, B} y = {D, E , B, A, E , C, D }

Download Presentation

İçerik

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. İçerik • Ön Tanımlar • Yol, Cevrim(çember) • En Kısa Yol Problemi • Dijktra’nın Algoritması • Bellman ve Ford Algoritması

  2. Yol B A E D C

  3. Çevrim (Çember) • Çevrim başlangıç ve bitişi aynı olan yoldur. • y= {A, E, B, C, D, A} • y= {B, A, E, B} • y= {D, E, B, A, E, C, D} • Basit çevrim başlangıç düğümü hariç diğer düğümlerin tekrar etmediği yoldur. • y= {A, E, B, C, D, A} • y= {B, A, E, B} B A E D C

  4. Yol Uzunluğu ve Yol Maliyeti • Yol Uzunluğu: Yoldaki kenar sayısı • Yol Maliyeti: Her kenardaki ağırlıkların/maliyetin toplamı. • Not: ağırlıksız graflarda yol uzunluğu yol maliyetine eşittir. 2 B A • y = {B, A, E, C, D} • Uzunluk(y)= 4 • Maliyet(y)= 2+3+1+5=11 3 6 E 8 4 7 1 D C 5

  5. En Kısa Yol Problemi • G = (D, K) grafı verilsin ve s başlangıç düğümünden V düğümüne giden en az maliyetli yol bulma. • Farklı varyasyonlar mevcut • Ağırlıklı ve ağırlıksız graflar • Sadece pozitif ağırlık veya negatif ağırlığın da olması.

  6. Ağırlıksız En Kısa Yol Problemi • Problem: G = (D, K) ağırlıksız grafında s başlangıç düğümü veriliyor ve s’den diğer düğümlere giden en kısa yol nasıl bulunur. • C’den diğer düğümlere giden en kısa yolu bulun? B A F H C Başlangıç G D E

  7. BFS Tabanlı Çözüm • S’den başla BFS algoritmasını uygula (çevrim graflarda da çalışır.) C B A F H E D A C Source G G B D E F H 7

  8. Ağırlıklı Graflarda En Kısa Yol Problemi • BFS algoritması bu graf içinde çalışır mı? • Hayır! 2 • CdenA’ya en kısa yol: • C->A (uzunluk: 1, maliyet: 9) • BFS ile hesaplandı • C den A’ya en az maliyetliyol: • C->E->D->A (uzunluk: 3, maliyet: 8) • Peki nasıl hesaplayacağız? B A 1 1 9 3 C 8 2 D E 3

  9. Algoritmalar • İki düğüm arasında en az maliyetle gidilebilen bir yolun belirlenmesi için birçok algoritma geliştirilmiştir. Bunlardan en ünlüleri • Dijkstra • Ağırlıklı ve yönlü graflar için geliştirilmiştir. • Graf üzerindeki kenarların ağırlıkları 0 veya sıfırdan büyük sayılar olmalıdır. • Negatif ağırlıklar için çalışmaz. • Bellman ve Ford • Negatif ağırlıklı graflar için geliştirilmiştir. • Floyd

  10. Dijkstra’nın Algoritması • Başlangıç olarak sadece başlangıç düğümünün en kısa yolu bilinir. (0 dir.) • Tüm düğümlerin maliyeti bilinene kadar devam et. • O anki bilinen düğümler içerisinden en iyi düğümü şeç. (en az maliyetli düğümü seç, daha sonra bu düğümü bilinen düğümler kümesine ekle) • Seçilen düğümün komşularının maliyetlerini güncelle.

  11. Güncelleme • Adım-1 de seçilen düğüm u olsun. • u düğümünün komşularının maliyetini güncelleme işlemi aşağıdaki şekilde yapılır. • s’den v’ye gitmek için iki yol vardır. • Kırmızı yol izlenebilir. Maliyet 11. • Veya mavi yol izlenebilir. Önce s’den u’ya 3 maliyeti ile gidilir. Daha sonra (u, v) kenarı üzerinden 8 maliyetle v’ye ulaşılır. u v 5 3 s Güncelle(u, v) 8 0 u v 5 3 s 11 0 11

  12. Güncelleme - Kaba Kod u v 5 3 s 11 0 u v 5 3 s Güncelle(u, v) 8 0 Guncelle(u, v){ if (maliyet[u] + w(u, v) < maliyet[v]){ // U üzerinden yol daha kısa ise maliyet[v] = maliyet[u] + w(u, v); // Evet! Güncelle pred[v] = u; // u’dan geldiğimizi kaydet. } } 12

  13. Dijkstra’nın Algoritması 2 ∞ ∞ 9 B A O anki en iyi düğümü seç – C Bilinen düğümler kümesine ekle Seçilen düğümün tüm komşularının maliyetini güncelle. 1 1 9 C 3 0 0 8 2 8 ∞ ∞ 2 E D 3 Komşu A: 0 + 9 < ∞  maliyet(A) = 9 Komşu D: 0 + 8 < ∞  maliyet(D) = 8 Komşu E: 0 + 2 < ∞  maliyet(E) = 2

  14. Dijkstra’nın Algoritması 2 ∞ 9 B A O anki en iyi düğümü seç – E Bilinendüğümlerkümesineekle Seçilendüğümüntümkomşularınınmaliyetinigüncelle. 1 1 9 C 3 0 8 2 8 5 2 2 E D 3 Komşu D: 2 + 3 = 5 < 8  maliyet(D) = 5

  15. Dijkstra’nın Algoritması 2 ∞ 8 9 B A O anki en iyi düğümü seç – D Bilinendüğümlerkümesineekle Seçilendüğümüntümkomşularınınmaliyetinigüncelle. 1 1 9 C 3 0 8 2 5 5 2 2 E D 3 Komşu A: 5 + 3 = 8 < 9  maliyet(A) = 8

  16. Dijkstra’nın Algoritması 2 O anki en iyi düğümü seç – A Bilinendüğümlerkümesineekle Seçilendüğümüntümkomşularınınmaliyetinigüncelle. ∞ 10 8 8 B A 1 1 9 C 3 0 8 2 5 2 E D 3 Komşu B: 8 + 2 = 10 < ∞  maliyet(B) = 10

  17. Dijkstra’nın Algoritması 2 O anki en iyi düğümü seç – B Bilinendüğümlerkümesineekle Seçilendüğümüntümkomşularınınmaliyetinigüncelle. 10 10 8 B A 1 1 9 C 3 0 8 2 5 2 E D 3

  18. Negatif Ağırlıklı Dijkstra • Eğer kenarların ağırlıkları negatif ise Dijkstra algoritması en az maliyetli yolu bulmada başarısız oluyor. 3 A • A’dan C’yeen az maliyetli yol • Dijkstra : A->C, maliyet: 2 • Gerçek yolA->B->C, maliyet: 1 • Her kenara pozitif sabit eklersek ne olur? B 2 -2 C

  19. Negatif Ağırlıklı Dijkstra • Her kenara pozitif sabit eklersek ne olur? 3 A B Her kenara 2 ekle 2 -2 C • A’dan C’ye en az maliyetli yol • Dijkstra: A->C • Gerçek Yol:A->B->C 5 A B 4 0 C

  20. Negatif Maliyetli Çember • Eğer grafnegatif maliyetli çemberiçeriyorsa, en az maliyetli yol tanımlanamaz. 1 A B 2 -8 4 D C • A’dan D’ye en az maliyetli yol nedir? • Veya B’den C’ye?

  21. Bellman-Ford Algoritması • Ana mantık: • Her düğüm için bir uzaklık tahmini oluşturulur. • Başlangıç olarak maliyet(s)=0 diğer düğümler için maliyet(u)= ∞ olarak atanır. • En az maliyetli yol hesaplanana kadar tüm kenarlar üzerinden güncelleme yapılır. • Algoritma ayrıca grafın negatif maliyetli kenarının olup olmadığını da bulur. • Dijkstra’nın algoritmasına göre daha yavaş çalışır.

  22. Bellman-Ford Alg: Örnek Düğüm Ma. Pred B 4 0 ∞ 4 A A 0 - -3 B ∞ 4 A - -2 ∞ 1 E 2 3 3 A 2 B C ∞ - -1 1 ∞ 6 2 ∞ 3 D ∞ - 6 B C D 1 B E ∞ - (B, D) (B, D) (B, E) (B, E) (D, E) (D, E) (C, D) (C, D) (A, B) (A, B) (A, C) (A, C) (B, C) (B, C) İlk Yineleme

  23. Bellman-Ford Alg: Örnek Düğüm Ma Pred B 4 0 4 A A 0 - -3 B 4 A -2 1 E 2 3 C 2 B -1 1 6 3 2 3 C D 6 B C D E 1 B (B, D) (B, D) (B, E) (B, E) (D, E) (D, E) (C, D) (C, D) (A, B) (A, B) (A, C) (A, C) (B, C) (B, C) İkinci Yineleme

  24. Bellman-Ford Alg: Örnek Düğüm Ma Pred B 4 0 4 A A 0 - -3 B 4 A -2 1 E 2 3 C 2 B -1 1 3 2 D 3 C C D E 1 B (B, D) (B, D) (B, E) (B, E) (D, E) (D, E) (C, D) (C, D) (A, B) (A, B) (A, C) (A, C) (B, C) (B, C) Üçüncü & Dördüncü Yineleme

  25. Bellman-Ford Alg: Sonuç B 4 0 0 4 A A -3 4 -2 1 E 2 3 4 B -1 1 3 2 -3 C D -2 1 E 2 C Düğüm Ma Pred 1 A 0 - 3 D B 4 A C 2 B D 3 C E 1 B

More Related