11.Hafta En kısa yollar I-II-III Devam. Negatif Ağırlıklı En Kısa Yollar Doğruluk Çözümleme

Benzer belgeler
10.Hafta Minimum kapsayan ağaçlar Minimum spanning trees (MST)

Algoritmalar. Ders 14 En Kısa Yollar II Bellman-Ford algoritması Floyd-Warshall algoritması

Algoritmalara Giriş. Prof. Erik Demaine. November 16, 2005 Copyright by Erik D. Demaine and Charles E. Leiserson L18.1

Çizgeler (Graphs) Doç. Dr. Aybars UĞUR

GRAPH LAR Düzce Üniversitesi Teknoloji Fakültesi VERİ YAPILARI. Bilgisayar Mühendisliği ÖĞR.GÖR.GÜNAY TEMÜR 1

Algoritmalar. Çizge Algoritmaları. Bahar 2017 Doç. Dr. Suat Özdemir 1

BÖLÜM III: Şebeke Modelleri. Şebeke Kavramları. Şebeke Kavramları. Şebeke Kavramları. Yönlü Şebeke (Directed Network) Dal / ok

VERİ YAPILARI. GRAPH LAR Düzce Üniversitesi Teknoloji Fakültesi ÖĞR.GÖR.GÜNAY TEMÜR 1

Algoritmalara Giriş 6.046J/18.401J

BMT 206 Ayrık Matematik. Yük. Müh. Köksal GÜNDOĞDU 1

BMB204. Veri Yapıları Ders 11. Çizgeler (Graph) Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

YZM 2116 Veri Yapıları

köşe (vertex) kenar (edg d e)

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#6: AZALT VE FETHET YÖNTEMİ

Genel Graf Üzerinde Mutlak 1-merkez

Anadolu Üniversitesi Endüstri Mühendisliği Bölümü İST328 Yöneylem Araştırması 2 Dersi Bahar Dönemi. Hazırlayan: Doç. Dr.

Algoritma Geliştirme ve Veri Yapıları 10 Graf Veri Modeli. Mustafa Kemal Üniversitesi

Mühendislik Mekaniği Statik. Yrd.Doç.Dr. Akın Ataş

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği

Graf Veri Modeli. Düğümler kümesi. Kenarlar kümesi

ULAŞTIRMA MODELİ VE ÇEŞİTLİ ULAŞTIRMA MODELLERİ

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#9: AÇGÖZLÜ ALGORİTMALAR

9.Hafta Veri sıkıştırma ve Aç gözlü algoritmalar

ULAŞTIRMA MODELİ VE ÇEŞİTLİ ULAŞTIRMA MODELLERİ

ÇİZGE KURAMI KESİKLİ MATEMATİKSEL YAPILAR GÜZ

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#1: ALGORİTMA KAVRAMI

Graflar bilgi parçaları arasındaki ilişkileri gösterirler.

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#3: ALGORİTMA ANALİZİ#2

Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM Veri Yapıları Dersi. Proje#2

Azalt ve Fethet Algoritmaları

TOPSIS yönteminin adımları 5 Adım 1. Normalize karar matrisinin oluşturulması 6 Karar matrisinin normalizasyonu aşağıdaki formül kullanılarak yapılır:

a2 b3 cij: birim başına ulaşım maliyeti xij: taşıma miktarı

Problem Set 1 Çözümler

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Algoritmalar. DERS 3 Böl ve Fethet(Divide and Conquer) İkili arama Sayı üstelleri Fibonacci sayıları Matriks çarpımı Strassen in algoritması

VERİ MADENCİLİĞİ (Kümeleme) Yrd.Doç.Dr. Kadriye ERGÜN

İleri Diferansiyel Denklemler

BIP116-H14-1 BTP104-H014-1

VERİ YAPILARI VE PROGRAMLAMA

Sayı sistemleri-hesaplamalar. Sakarya Üniversitesi

EM302 Yöneylem Araştırması 2. Dr. Özgür Kabak

DGridSim Gerçek Zamanlı Veri Grid Simülatörü. Gerçek-Zamanlı Veri Dağıtımı Dokümanı v

Bu bölümde; Çok ölçütlü karar verme yöntemlerinden biri olan TOPSİS yöntemi anlatılacaktır.

İçerik: Graflar. Tanım. Gösterim. Dolaşma Algoritmaları. Yönlü ve yönsüz graflar Ağırlıklı graflar. Komşuluk Matrisi Komşuluk Listesi

BLM-431 YAPAY ZEKA. Ders-3 Durum Uzayında Arama. Yrd. Doç. Dr. Ümit ATİLA

Algoritmalara Giriş 6.046J/18.401J

KAREKÖKLÜ SAYILAR. a) 15 h) 18 b) 32 ı) 49 c) 81 i) 72 d) 27 j) 36 e) 9 k) 121 f) 45 l) 256 g) 25 m) 152

Nokta uzayda bir konumu belirtir. Noktanın 0 boyutlu olduğu kabul edilir. Herhangi bir büyüklüğü yoktur.

Algoritmalar ve Karmaşıklık

KENDĐ KENDĐNE YOL BULAN ARAÇ

Problem Seti 8 Çözümleri

İÇİNDEKİLER ÖNSÖZ Bölüm 1 SAYILAR 11 Bölüm 2 KÜMELER 31 Bölüm 3 FONKSİYONLAR

7. BÖLÜM İÇ ÇARPIM UZAYLARI İÇ ÇARPIM UZAYLARI İÇ ÇARPIM UZAYLARI İÇ ÇARPIM UZAYLARI .= Genel: Vektörler bölümünde vektörel iç çarpım;

Ara Sınav 1. Algoritmalara Giriş 14 Ekim 2005 Massachusetts Institute of Technology Profesörler Erik D. Demaine ve Charles E. Leiserson Kitapçık 14

MATEMATiKSEL iktisat

YÖNEYLEM ARAŞTIRMASI - II

Büyük Veri Analitiği (Big Data Analytics)

ALTIN ORAN ARAMA (GOLDEN SECTION SEARCH) METODU

HESSİEN MATRİS QUADRATİK FORM MUTLAK ve BÖLGESEL MAKS-MİN NOKTALAR

MATRİSEL ÇÖZÜM TABLOLARIYLA DUYARLILIK ANALİZİ

VERİ MADENCİLİĞİ (Karar Ağaçları ile Sınıflandırma) Yrd.Doç.Dr. Kadriye ERGÜN

Tek Değişkenli Optimizasyon OPTİMİZASYON. Gradient Tabanlı Yöntemler. Bisection (İkiye Bölme) Yöntemi

Temel Kavramlar. (r) Sıfırdan farklı kompleks sayılar kümesi: C. (i) Rasyonel sayılar kümesi: Q = { a b

Kümeler arası. Küme içi. uzaklıklar. maksimize edilir. minimize edilir

Bir işaretli büyüklük sayısında en soldaki basamak bir işaret içerir. Diğer basamaklarda ise sayısal değerin büyüklüğü (mutlak değeri) gösterilir.

BMB204. Veri Yapıları Ders 12. Dizgi Eşleme (String Matching) Algoritmaları İleri Veri Yapıları

Konu Anlatımı Açık Uçlu Sorular Çoktan Seçmeli Sorular Doğru Yanlış Soruları Boşluk Doldurmalı Sorular Çıkmış Sorular

13. 2x y + z = 3 E) 1. (Cevap B) 14. Dikdörtgen biçimindeki bir tarlanın boyu 10 metre, eni 5 metre. Çözüm Yayınları

Ağaç (Tree) Veri Modeli

Okut. Yüksel YURTAY. İletişim : (264) Sayısal Analiz. Giriş.

THEVENIN VE NORTON TEOREMLERİ. Bu teoremler en güçlü analiz tekniklerindendir EBE-215, Ö.F.BAY 1

Bölüm 1. Elektriksel Büyüklükler ve Elektrik Devre Elemanları

İleri Algoritma (COMPE 574) Ders Detayları

KONU 8: SİMPLEKS TABLODA KARŞILAŞILAN BAZI DURUMLAR - II 8.1. İki Evreli Yöntem Standart biçime dönüştürülmüş min /max Z cx (8.1)

YÖNEYLEM ARAŞTIRMASI - III

BLM-431 YAPAY ZEKA. Ders-4 Bilgisiz Arama Yöntemleri. Yrd. Doç. Dr. Ümit ATİLA

Bir özvektörün sıfırdan farklı herhangi bri sabitle çarpımı yine bir özvektördür.

DENKLEM DÜZENEKLERI 1

Kafes Sistemler. Birbirlerine uç noktalarından bağlanmış çubuk elemanların oluşturduğu sistemlerdir.

MIT OpenCourseWare Ekonomide İstatistiksel Yöntemlere Giriş Bahar 2009

Graflar - Çizgeler. Ders 9. Graflar ve Tanımlar

BLM 210 PROGRAMLAMA LABORATUVARI II PROJELERİ

Dik koordinat sisteminde yatay eksen x ekseni (apsis ekseni), düşey eksen ise y ekseni (ordinat ekseni) dir.

Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi

KILAVUZ SORU ÇÖZÜMLERİ Matematik

YZM 2116 Veri Yapıları

Yöneylem Araştırması II

Her bir polis devriyesi ancak bir çağrıyı cevaplayabilir. Bir çağrıya en fazla bir devriye atanabilir.

A GRUBU Her bir yüzü düzgün beşgen olan düzgün 12-yüzlünün kaç ayrıtı vardır? A) 30 B) 24 C) 12 D) 36 E) 48

Ayrık Fourier Dönüşümü

Arızalara Karşı Dayanaklı Optik Örgüsel (Mesh) Ağlar 1. Kısım: Koruma. BSM 450 Fiber Optik Ağlar Bahar Yrd. Doç. Dr.

3B CBS'DE AĞ ANALİZLERİNE YÖNELİK COĞRAFİ VERİTABANININ OTOMATİK OLARAK ÜRETİLMESİ

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

MAT223 AYRIK MATEMATİK

KONU 4: DOĞRUSAL PROGRAMLAMA MODELİ İÇİN ÇÖZÜM YÖNTEMLERİ I

DENEY 2: TEMEL ELEKTRİK YASALARI (OHM, KİRCHOFF AKIM VE GERİLİM)

2. K 6 tam çizgesinde kaç farklı mükemmel eşleme vardır? 4. Düzlemsel kodu (planar code) olan ağacın kaç köşe noktası vardır?

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

Transkript:

11.Hafta En kısa yollar I-II-III Devam Negatif Ağırlıklı En Kısa Yollar Doğruluk Çözümleme 1

En Kısa Yollar II Bellman-Ford algoritması 2

3 Negatif Maliyetli Çember Eğer graf negatif maliyetli çember içeriyorsa, en az maliyetli yol tanımlanamaz. A 1 B -8 2 C 4 D A dan D ye en az maliyetli yol nedir? veya B den C ye?

Negatif-ağırlık çevrimleri 4

5 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. (Dijkstra algoritması negatif kenarlarda kullanılmaz.)

Bellman-Ford algoritması 6

Bellman-Ford örneği 7

Bellman-Ford örneği 8

Bellman-Ford örneği 9

Bellman-Ford örneği 10

Bellman-Ford örneği 11

Bellman-Ford örneği 12

Bellman-Ford örneği 13

Bellman-Ford örneği 14

Bellman-Ford örneği 15

16 Bellman-Ford örneği A 0 B -1 3-1 2 C 2 1 E -3 D -2

Doğruluk 17

Doğruluk 18

Negatif ağırlık çevrimlerini bulma 19

20 Bellman-Ford Alg: Örnek A C 0 3 3-2 4 1 2 B -3-1 D E Düğüm M Ata A 0 - B - C - D - E - 1 2 3 4 5 6 7 (C, D) (A, B) (A, C) (B, C) (B, D) (B, E) (D, E) İlk Yineleme (İlklendirme)

21 Bellman-Ford Alg: Örnek A C 0 3 3-2 4 1 4 2 B -3-1 D E Düğüm M Ata A 0 - B 4 A- C 3 A- D - E - 1 2 3 4 5 6 7 (C, D) (A, B) (A, C) (B, C) (B, D) (B, E) (D, E) Köşe gevşetme düzeni

22 Bellman-Ford Alg: Örnek A C 0 3 32-2 4 1 4 2 B -3-1 D E Düğüm M Ata A 0 - B 4 A- C 2 B- D - E - 1 2 3 4 5 6 7 (C, D) (A, B) (A, C) (B, C) (B, D) (B, E) (D, E) Köşe gevşetme düzeni

23 Bellman-Ford Alg: Örnek A C 0 3 32-2 4 1 B Düğüm M Ata 4-3 A 0 - B 4 A- 2 1 E C 2 B- -1 6 D D 6 B- E 1 B- 1 2 3 4 5 6 7 (C, D) (A, B) (A, C) (B, C) (B, D) (B, E) (D, E) 1.Tur tamamlandı

24 Bellman-Ford Alg: Örnek B=AB 4, min(a,b)= 0-> 0+4 = 4, C=AC 3, min(a,c)=0->0+3 =3 C= BC -2, min(b,c)= 4-> 4-2 = 2, D=BD 2, min(b,d)=4->4+2 =6 E= BE -3, min(b,c)= 4-> 4-3 = 1, A C 0 3 2 3-2 4 1 B Düğüm Ma. Pred 4-3 A 0 - B 4 A- 2 1 E C 2 3 BA - -1 6 D D 6 B- E 1 B- (C, D) (A, B) (A, C) (B, C) (B, D) 1.Tur sonu (B, E) (D, E)

25 Bellman-Ford Alg: Örnek D=CD 1, min(c,d)= 2-> 2+1 =3 A C 3 0 2-2 4 1 B Düğüm Ma Pred 4-3 A 0 - B 4 A 2 1 E C 2 B -1 63 D D 63 BC E 1 B 1 2 3 4 5 6 7 (C, D) (A, B) (A, C) (B, C) (B, D) 2. tur yineleme (B, E) (D, E)

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

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

En kısa yollar III Tüm-ikili en kısa yollar All-Pairs Shortest Paths Tüm-ikili en kısa yollar Matris-çarpımı algoritması Floyd-Warshall algoritması Johnson algoritması 28

29 Hatırlatma Şu ana kadar tek-kaynaklı-en kısa-yollar üzerinde kaynak bir köşeden diğer köşelerin her birine en kısa yolu bulmak için geliştirilen algoritmalardan bahsedildi. Ağırlıksız durumda ve bütün kenar ağırlıkları bir olan graph için BFS (enine arama) uygulandı. Bu yapıda çalışma zamanı köşelerin sayıları ile kenarların sayılarının toplamından oluştuğundan doğrusal zaman (O(V+E) ) a mal olur. İkinci en kolay durum ise negatif olmayan kenar ağırlıkları yani Dijkstra algoritması. Eğer iyi bir fibonacci heap structure yani yığın yapısı kullanılırsa, yaklaşık doğrusal zamana mal olmakta, yani O(E+Vlog V).

30 Hatırlatma Ayrıca negatif ağırlıklar için geliştirişmiş genel ağırlıklar için Bellman-Ford algoritmasından bahsedildi ve çalışma zamanı O(VE) ye mal olmaktaydı(bu biraz daha kötü) Eğer log faktörlerini hesaba alınmazsa, E nin V düzeyinde olduğu, seyrek halde (komşuluk listesi) Dijkstra, doğrusal zamanlı (O(V+E)), Bellman-Ford ise (eğer bağlantılı bir grafik varsa) en az karaseldir (O(V 2 )). Yoğun durumda (komşuluk matrisi) yani, E yaklaşık V 2 olduğunda, Dijkstra karesel O(V 2 ), Bellman-Ford ise kübik O(V 3 ) olur.

31 Hatırlatma Dijkstra ve Bellman-Ford, birbirlerinden bir V faktörü kadar farklıdırlar ve bu da oldukça kötüdür. Ancak, tek kaynaklı en kısa yollarda, negatif kenar ağırlıklarının olduğu durumlarda bildiklerimizin en iyisi Bellman-Ford dur. Bu bağlamda daha önce DAG-Directed Acylic Graphs (Döngü Olmayan Yönlü Graflar) örneğini de görmüştük ve orada Topolojik sıralama yapıyorduk. Demek oluyor ki, köşeler açısından bir düzenleme elde etmek için topolojik bir sıralama yapabiliriz. Sonra Bellman- Ford u bir kere çalıştırırsak bir doğrusal zamanlı algoritma elde ederiz. DAG, ağırlıklarla dahi iyi bir uygulamanın nasıl yapılacağını bildiğimiz bir durum.

En kısa yollar 32

33 Tüm-ikili en kısa yollar All-Pairs Shortest Paths Her iki köşe arasındaki en kısa yolun ağırlığını nasıl hesaplayabiliriz? Graph ağırlıksız ise, BFS algoritmasını kullanabiliriz. Çalışma zamanı V *BFS olur yani, O(V 2 +VE) olur. Yani en kısa yol ağırlığını hesaplayabilmemiz için kesinlikle, en az V 2 gibi bir süreye ihtiyacımız var. Çünkü çıkışın boyutu V 2 ; yani hesaplamanız gereken en kısa yol ağırlığı. Negatif olmayan kenar ağırlıkları durumunda, Dijkstra yı, V defa uygulamak bunun koşma süresi de, gene O(VE+V 2 log V) olur. BFS yi uygulamak ile aynı (Eğer log faktörünü dikkate almazsanız, ağırlıklı terim budur). Bu durum, Bellman-Ford artı bir log faktörü zaman alıyor, ki eğer negatif olmayan kenar ağırlıklarınız varsa, bu sürede tüm-ikili-en-kısa-yollar ın hepsini hesaplayabiliriz.

34 Tüm-ikili en kısa yollar Negatif ağırlıkların olduğu durumda Amacımız daha iyisini yapmak (Dinamik Programlama)

35 Dinamik programlama

36 İddianın Kanıtı O(n 4 )

37 Matris Çarpımı =A m =A 0

Matris Çarpımı 38

Geliştirilmiş matris çarpım algoritması 39

Tüm-ikili en kısa yollar Floyd-Warshall algoritması 40

Floyd-Warshall yinelemesi 41

Floyd-Warshall için sözde kod 42

Bir yönlendirilmiş grafiğin geçişli kapanışı (transitive closure) 43

44 Floyd-Warshall Algoritması Atasını hesaplama

45 Floyd-Warshall Örnek Kenar ağırlıkları İkili en kısa yolları hesaplama Gidilecek düğümün atasını hesaplama

Floyd-Warshall Örnek 46

47 Floyd-Warshall Örnek 1.Düğüm için: 5'in atası 1, 4'ün atası 5, 3'ün atası 4, 2'nin atası da 3 tür. 1-5=-4, 5-4 =-4+6=2, 4-3=-5+2=-3, 3-2=-3+4=1, Yol: 1-5-4-3-2

48 Johnson algoritması 1977 yılında Donald B. Johnson tarafından geliştirilmiştir. Bellman Ford, Reweighting ve Dijkstra Algoritması tabanlı, All pairs problemini çözmek için kullanılan bir algoritmadır. Sparse(dağınık) ve directed(yönlü) graflar için kullanılan güzel bir çözüm yoludur. Bağlantıların negatif olmasına izin vermektedir ve bu en önemli özelliğidir. Negatif bağlantıları reweighting yöntemiyle işlem sırasında ağırlıkları yeniden hesaplayarak pozitif ağırlıklara güncellemektedir. Bu yönüyle Floyd Warshall a benzemektedir fakat O(V 3 ) olan çalışma süresi Johnson Algoritması nın tercih edilmesine neden olur. Ayrıca Floyd Marshall daha sık graflarda tercih edilirken, Johnson seyrek graflarda daha iyidir. Ağırlıkların pozitif olması durumunda Dijkstra nın kullanılması daha iyi performans sağlar.

Grafik yeniden ağırlıklandırması Johnson algoritması 49

50 Yeniden ağırlıklandırılan grafiklerde en kısa yollar

Johnson algoritması 51

52 Johnson algoritması Örnek: Algoritmanın adımlarını aşağıdaki graf üzerinde açıklayalım.

53 Johnson algoritması Adım 1: Öncelikle grafa aşağıda görüldüğü üzere yeni bir düğüm ve bu düğümden grafta bulunan tüm düğümlere bağlantılar eklenir. Bu düğümün ve bağlantılarının ağırlığı sıfır olarak belirlenir.

54 Johnson algoritması Adım 2 : Her düğüm için Bellman-Ford Algoritması bir kez çalıştırılır ve düğümlerin ağırlıkları belirlenir. Aşağıda görüldüğü üzere her düğümün ağırlığı içerisine yazıldı.

55 Johnson algoritması Adım 3 : Adım 4 te Dijkstra Algoritması kullanılacaktır. Bilindiği üzere Dijkstra Algoritması negatif bağlantı uzunluklarını kabul etmemektedir. Bu yüzden bu adımda ağırlıklar tekrar hesaplama yöntemiyle yenilecek ve negatif bağlantı kalmayacaktır. Yeniden hesaplama yöntemi şu şekildedir; ŵ(u, v) = w(u, v) + d(s, u) - d(s, v) h(u) h(v)

56 Johnson algoritması Ağırlıkların yeniden hesaplanması Reweighting Teorem ile yapılır. Formülde yeni kenar ağırlığı eski kenar ağırlığı ile düğümün, algoritmanın birinci adımında eklenen yeni düğümüne olan ağırlığı ile toplanır. Bu değerden gidilecek olan düğümün S düğümüne olan ağırlığı çıkarılır ve yeni ağırlık bulunur. (d h [u,v]= d[u,v]+h[u]-h[v]) Reweightin işlemi sonucunda shortest path değişmezken, ağırlıkların hepsi nonnegative olur. Burada akla şu soru gelebilir, ağırlıkları bu şekilde hesaplayacağımıza tüm düğümlere minimum bağlantı uzunluğunu eklesek olmazmı? Olmaz çünkü bu en kısa yolun değişmesine sebep olabilir.

57 Johnson algoritması Aşağıda ağırlıkların güncellenmiş hali bulunmaktadır. Kenarların yeni ağırlıklarının bulunma işlemine örnek verecek olursak ; eski ağırlığı 8 olan kenarın (1-3) yeni ağırlığı yukarıda bahsettiğimiz yöntemle 8 + 0 (-5) = 13 e olarak hesaplanır. (1-2 kenarı için:3+0-(-1)=4

58 Johnson algoritması Aşağıdaki grafikta tüm düğümlere minimum düğüm ağırlığının eklenmesi durumunda ortaya çıkacak bozulma görülmektedir. Birinci durumda kısa yol alttaki iken, ikinci durumda üstteki oluyor. Bu metod görüldüğü üzere kısa yolun değişmesine sebep oluyor. Adım 4 : Birinci adımda eklenen düğüm graftan silinir ve geri kalan tüm düğümler için Dijkstra Algoritması uygulanır. Tüm çiftler arası en kısa yol bulunur. Aşağıda tüm düğümler için ağırlıkların Dijkstra Algoritması yla yeniden hesaplanması görülmektedir.

Johnson algoritması 59

Johnson algoritması 60

61 Johnson algoritması analizi Algoritmanın adımlarını kontrol edelim. İlk adımda yeni düğüm ekleniyor ve her düğümün ağırlığı Bellman Ford ile hesaplanıyor. Bu durumun getirdiği karmaşıklık O(VE) dir. Daha sonra negatif kenarlardan kurtarmak için reweighting işlemi yapılıyor. Bu durumun getirdiği karmaşıklık O(E) dir. Her düğüm için Djikstra Algoritması nın getirdiği karmaşıklık O(V 2 logv + VE logv ) dir. Bu durumda Johnson Algoritması nın karmaşıklığı O(V 2 logv + VE logv) olarak hesaplanır. (V: Düğümler Kümesi, E: Bağlantılar Kümesi )

62 Örnek

63 Floyd-Warshall Algoritması for i = 1 to N for j = 1 to N if(i'den j'ye bir yol varsa) yol[0][i][j] = i ile j arasındaki mesafe else yol[0][i][j] = sonsuz for k = 1 to N for i = 1 to N for j = 1 to N yol[k][i][j] = min(yol[k-1][i][j], yol[k-1][i][k] + yol[k-1][k][j])

64 Floyd-Warshall Örnek Algoritmanın çalışmasını daha iyi anlayabilmek için aşağıdaki örnek üzerinden adım adım algoritmayı kullanarak en kısa yolu bulalım:

65 Floyd-Warshall Örnek Yukarıdaki şekil incelendiğinde A dan E ye giden birden çok yol bulunabilir: Yol 1: A -> B -> E 20 Yol 2: A -> D -> E 25 Yol 3: A -> B -> D -> E 35 Yol 4: A -> D -> B -> E 20 Yukarıdaki yollar çıkarıldıktan sonra en kısasının 20 uzunluğunda olduğu bulunabilir. Şimdi bu yollardan en kısasını Floyd-Warshall algoritmasının nasıl bulduğunu adım adım inceleyelim:

66 Floyd-Warshall Örnek 1. Adımda komşuluk listesine göre matris inşa edilir. Yukarıdaki şekilde doğrudan ilişkisi bulunan düğümler ve ağırlıkları aşağıda verilmiştir: A B C D E A 0 10 5 B 10 0 5 5 10 C 5 0 D 5 5 0 20 E 10 20 0 Yukarıdaki grafta doğrudan ilişkisi bulunmayan düğümlerin değerleri olarak gösterilmektedir. Diğer değerler doğrudan ağırlıkları göstermektedir.

67 Floyd-Warshall Örnek Şimdi algoritmanın 2. adımına geçerek yolların tutulduğu bu matrisi adım adım güncelleyelim: A B C D E A 0 10 5 B 10 0 5 5 10 C 5 0 D 5 5 0 20 E 10 20 0

68 Floyd-Warshall Örnek B üzerinden atlanarak ulaşılan düğümleri güncelleyelim A B C D E A 0 10 15 5 20 B 10 0 5 5 10 C 15 5 0 10 15 D 5 5 10 0 15 E 20 10 15 15 0

69 Floyd-Warshall Örnek C üzerinden atlanan düğümler: A B C D E A 0 10 15 5 20 B 10 0 5 5 10 C 15 5 0 10 15 D 5 5 10 0 15 E 20 10 15 15 0 D üzerinden atlanan düğümler: A B C D E A 0 10 15 5 20 B 10 0 5 5 10 C 15 5 0 10 15 D 5 5 10 0 15 E 20 10 15 15 0

70 Floyd-Warshall Örnek E üzerinden atlanan düğümler: A B C D E A 0 10 15 5 20 B 10 0 5 5 10 C 15 5 0 10 15 D 5 5 10 0 15 E 20 10 15 15 0 Yukarıda son elde edilen bu matriste görüldüğü üzere herhangi bir düğümden diğer bütün düğümlere giden en kısa yollar çıkarılmıştır. Örneğin A düğümünden E ye 20 uzunluğunda veya C düğümünden D ye 10 uzunluğunda yolla gidilebilir. Yukarıdaki matrislerde diyagona göre simetri bulunmasının sebebi grafın yönsüz graf (undirected graph) olmasıdır. Şayet graf yönlü graf (directed graph) olsaydı bu simetri bozulurdu (tabi yönlerin ağırlıklarının aynı olmaması durumunda).