10. Ders Floyd-Warshal algoritması

Slides:



Advertisements
Benzer bir sunumlar
Yinelemeli Algoritma Analizi & Asimptotik Notasyon
Advertisements

Ayrık Yapılar Algoritma Analizi.
Kontrol Çevrimleri FOR WHILE DO-WHILE IF-ELSE SWITCH-CASE-DEFAULT
Algoritmalar En kısa yollar I En kısa yolların özellikleri
İçerik Ön Tanımlar En Kısa Yol Problemi Yol, Cevrim(çember)
MIT503 Veri Yapıları ve algoritmalar En önemli graf problemleri
Özyinelemeli(Recursive) Algoritma Tasarımı
Recursion (Özyineleme)
Algoritmalar DERS 3 Böl ve Fethet(Divide and Conquer) İkili arama
Algoritmalar Ders 14 En Kısa Yollar II Bellman-Ford algoritması
Çizge Algoritmaları.
Özyineleme(Recursion)
Tam Sayılarda Çarpma İşlemi
GRAPHS ÖZET.
BİRİNCİ DERECEDEN BİR BİLİNMEYENLİ EŞİTSİZLİKLER
Recursion (Özyineleme)
YMT219: Veri Yapıları Ders Saatleri: Pazartesi 9:15-12, 17:30-20:15
DÖNGÜLER.
İŞ SIRALAMA VE ÇİZELGELEME DERS 5
OLAY, İMKÂNSIZ OLAY, KESİN OLAY
PROGRAM DENETİM DEYİMLERİ
KARTEZYEN ÇARPIM Sıralı İkili İki Kümenin Kartezyen Çarpımı
The if statement. if Şartlı kontrol Koşul değimi doğru (1) yada yanlış (0) değeri üretir. Şartın doğru olması durumunda if satırından sonraki değimler.
Çizge Algoritmaları Ders 2.
İşlem Yönetimi (Kilitlenme)
DÖNGÜ DEYİMLERİ Programın belirli bir kesiminin birden fazla tekrarlanması işlemine DÖNGÜ denir. Bir değişken belirli bir değerden başlayıp, son değeri.
Algoritmalar ve Programlama I Ders 2: Akış Diyagramları
Veri Yapıları ve Algoritmalar
GEOMETRİK ŞEKİLLER VE ÖZELLİKLERİ Küre PRİZMA Küp Silindir Koni.
Floyd Algoritması Floyd Algoritması Dijkstra algoritmasının daha genel halidir. Çünkü şebekedeki herhangi iki düğüm arasındaki en kısa yolu belirler. Algoritma,
Algoritma Analizi Algoritma Algoritma bir problemi çözmek için izlenen komutlar kümesidir. Verilen bir problemin birden fazla çözümü dolayısıyla.
Dinamik programlama ve Açgözlü algoritma
İleri Algoritmalar 1. ders.
Algoritmalar II Ders 6 Açgözlü Algoritmalar.
Algoritmalar II Ders 2 Dinamik Programlama Yöntemi.
Ağırlıksız ikili eşleştirme
Algoritmalar II Ders 5 Açgözlü Algoritmalar.
Algoritmalar II Ders 13 Çizgelerde tüm ikililer arasında en kısa yollar.
Tüm ikililer arasında en kısa yollar
Algoritmalar II Ders 7 Açgözlü Algoritmalar.
Algoritmalar II Ders 4 Dinamik Programlama Yöntemi.
Çizgeler Çizge G=(V,E), ikilisine denir, burada V sonlu bir kümedir, E ise bu kümenin elemanları arasında ikili bir bağıntıdır. V kümesine G çizgesinin.
Çizge Algoritmalari 6. ders.
Algoritmalar II Ders 14 Çizgelerde tüm ikililer arasında en kısa yollar.
Maksimum akış.
Kümeleme ve Regresyon Problemleri için Kolektif Öğrenme
MAKSİMUM AKİŞ PROBLEMİ
Algoritmalar II Ders 17 İteratif İyileştirme Yöntemi.
İleri Algoritma Analizi
9. Ders Tüm ikililer arasında en kısa yollar
İleri Algoritma Analizi
PROGRAMLAMAYA GİRİŞ FORTRAN 77.
İleri Algoritma Analizi
Algoritmalar II Ders 11 Çizgeler. Çizgelerin bilgisayarda gösterimi. BFS algoritması.
İleri Algoritma Analizi
Chapter 6 Dönüştür ve Yönet (Transform-and-Conquer)
Chapter 3 Brute Force Copyright © 2007 Pearson Addison-Wesley. All rights reserved.
Algoritmalar II Ders 13 Çizgelerde tüm ikililer arasında en kısa yollar.
Çizge Algoritmalari 5. ders.
TRİGONOMETRİ. 1-AÇI,YÖNLÜ AÇI, YÖNLÜ YAYLAR A- Açı: Başlangıç noktaları aynı olan iki ışının birleşim kümesine ‘açı’ denir. Bu ışınlara açının kenarları,
Çizge Algoritmalari 4. ders.
Algoritmalar II Ders 3 Dinamik Programlama Yöntemi.
İleri Algoritmalar Ders 3.
Çizge Teorisi ve Algoritmalari
Çizge Algoritmaları 3. ders.
Algoritmalar II Ders 2 Dinamik Programlama Yöntemi.
Algoritmalar II Ders 16 Prim algoritması.
8. Ders Tüm ikililer arasında en kısa yollar
Çizge Algoritmalari 10. Ders.
Bölüm 5 Azalt ve yönet (Decrease-and-Conquer)
Sunum transkripti:

10. Ders Floyd-Warshal algoritması Çizge Algoritmalari 10. Ders Floyd-Warshal algoritması

Tüm ikililer arasında en kısa yollar Matris Çarpımı Algoritması Floyd-Warshall Algoritması

The Floyd-Warshall Algoritması Giriş: Yönlü ağırlıklı çizge G = (V, E) Negatif ağırlıklar olabilir Negatif döngü olamaz Hesapla: Çizgenin her hangi 2 köşesi arasındaki en kısa yolun ağırlığı 1 2 3 5 4 -4 7 6 -5 8

En kısa yolun altyapısı G deki köşeler V = {1, 2, …, n} p = v1, v2, …, vl bir yol olsun p yolundaki ara köşe {v2, v3, …, vl-1} kümesinin herhangi bir elemanıdır Örneğin: p = 1, 2, 4, 5: {2, 4} p = 2, 4, 5: {4} 5 1 3 4 2 6 0.5 2

En kısa yolun altyapısı Her i, j  V için ara köşeleri {1, 2, …, k} kümesinden olan i den j ye giden tüm yollara bakalım p yolu bu yollar arasında ağırlığı en az olan olsun p1 pu j i pt Ara köşeler arasında k dan büyük numaralı köşe yoktur

Örnek dij(k) = i köşesinden j köşesine olan ve ara köşeleri {1, 2, …, k} kümesinden olan en az ağırlıklı yolun (en kısa yolun) ağırlığı d13(0) = d13(1) = d13(2) = d13(3) = d13(4) = 6 6 1 3 4 2 6 0.5 5 5 4.5

En kısa yolun altyapısı k köşesi p de ara köşe değil i den j ye olan ve ara köşeleri {1, 2, …, k} kümesinden olan en kısa yol, i den j ye olan ve ara köşeleri {1, 2, …, k - 1} kümesinden olan en kısa yolun aynısıdır k köşesi p de ara köşe olsun p1 yolu i den k ya en kısa yol olsun p2 yolu k dan j ye en kısa yol olsun k köşesi p1, p2 yollarında ara köşe değil p1 ve p2 yolları sırasıyla i den k ya ve k dan j ye olan ve ara köşeler {1, 2, …, k - 1} den olan en kısa yollardır k i j i  k j p1 p2

Özyinelemeli Çözüm dij(k) = i den j ye olan ve ara köşeleri {1, 2, …, k} kümesinden olan en kısa yolun ağırlığı k = 0 dij(k) = wij

Özyinelemeli çözüm dij(k) = i den j ye olan ve ara köşeleri {1, 2, …, k} kümesinden olan en kısa yolun ağırlığı k  1 Durum1: k köşesi p en kısa yolu için ara köşe değil dij(k) = k i j dij(k-1)

Özyinelemeli çözüm dij(k) = i den j ye olan ve ara köşeleri {1, 2, …, k} kümesinden olan en kısa yolun ağırlığı k  1 Durum2: k köşesi p en kısa yolu için ara köşedir dij(k) =  k j i dik(k-1) + dkj(k-1)

En kısa yol ağırlığının hesaplanması dij(k) = wij if k = 0 min {dij(k-1) , dik(k-1) + dkj(k-1) } if k  1 Çözüm: D(n) = (dij(n)): dij(n) = (i, j)  i, j  V i j j + (k, j) i (i, k) D(k-1) D(k)

FLOYD-WARSHALL(W) n ← rows[W] D(0) ← W for k ← 1 to n do for i ← 1 to n do for j ← 1 to n do dij(k) ← min (dij(k-1), dik(k-1) + dkj(k-1)) return D(n) İşlem süresi: (n3)

Örnek dij(k) = min {dij(k-1) , dik(k-1) + dkj(k-1) } 3 8  -4 1 7 4 2 D(0) = W D(1) 1 2 3 4 5 1 2 3 4 5 1 2 3 5 4 -4 7 6 -5 8 1 3 8  -4 1 7 4 2 -5 6 1 3 8  -4 1 7 4 2 6 2 2 3 3 5 -5 -2 4 4 5 5 D(2) 1 2 3 4 5 D(3) D(4) 3 8 -4  1 7 4 2 5 -5 -2 6 4 3 8 4 -4  1 7 5 11 2 -5 -2 6 3 4 -4 1 5 2 -1 -5 -2 6 -1 3 -4 -1 5 11 7 3 -1 8 5 1