9. Ders Tüm ikililer arasında en kısa yollar

Slides:



Advertisements
Benzer bir sunumlar
Yinelemeli Algoritma Analizi & Asimptotik Notasyon
Advertisements

Ayrık Yapılar Algoritma Analizi.
BPR151 ALGORİTMA VE PROGRAMLAMA - I
Algoritmalar Ders 8 Dinamik Programlama.
Bölüm 2: Program Denetimi
Algoritmalar En kısa yollar I En kısa yolların özellikleri
İçerik Ön Tanımlar En Kısa Yol Problemi Yol, Cevrim(çember)
Özyinelemeli(Recursive) Algoritma Tasarımı
Algoritmalar Ders 14 En Kısa Yollar II Bellman-Ford algoritması
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 3: Döngüler
Algoritma ve Akış Diyagramları
Çizge Algoritmaları.
Bölüm 2 – Kontrol Yapıları
GRAPHS ÖZET.
YMT219: Veri Yapıları Ders Saatleri: Pazartesi 9:15-12, 17:30-20:15
PROGRAM DENETİM DEYİMLERİ
Outline 4.1 Giriş 4.2 Algoritmalar 4.3 Pseudocode 4.4 Kontrol İfadeleri 4.5 if tek-seçimli ifadeler 4.6 if else seçimli ifadeler 4.7 while döngü ifadeleri.
Çizge Algoritmaları Ders 2.
Algoritmalar ve Programlama I Ders 2: Akış Diyagramları
Veri Yapıları ve Algoritmalar
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,
AB-2016 / Kablosuz Duyarga Ağlarında Yönlendirme Algoritmalarının Performans Analizi Yard. Doc Coşkun Atay Sinem Seçgin.
Hatırlatma: Durum Denklemleri
Dinamik programlama ve açgözlü yaklaşım soruları.
Bölüm10 İteratif İyileştirme Copyright © 2007 Pearson Addison-Wesley. All rights reserved.
Dinamik programlama ve Açgözlü algoritma
O R T L G İ M A A Ve Akış şemaları.
Dynamic Programming Introduction to Algorithms MIT Press (Chapter 15)
Algoritma ve Akış Şemaları
İ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 1: Alan zaman takası yöntemi.
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ış.
MAKSİMUM AKİŞ PROBLEMİ
Algoritmalar II Ders 17 İteratif İyileştirme Yöntemi.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
En Kısa Yol Problemleri (Shortest Path Problems)
En Kısa Yol Algoritmaları Dijkstra
Algoritmalar II Ders 3 Dinamik Programlama Yöntemi.
Algoritmanın Hazırlanması
4- OPERATÖR – koşul - döngü Nesne Yönelimli Programlama - i
PROGRAMLAMAYA GİRİŞ FORTRAN 77.
İleri Algoritma Analizi
Algoritmalar II Ders 11 Çizgeler. Çizgelerin bilgisayarda gösterimi. BFS algoritması.
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.
Çizge Algoritmalari 4. ders.
Algoritmalar II Ders 3 Dinamik Programlama Yöntemi.
İleri Algoritmalar Ders 3.
Çizge Teorisi ve Algoritmalari
İleri Algoritma Analizi
Ç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.
10. Ders Floyd-Warshal algoritması
Sunum transkripti:

9. Ders Tüm ikililer arasında en kısa yollar Çizge Algoritmalari 9. Ders Tüm ikililer arasında en kısa yollar

Tüm ikililer arasında en kısa yollar Matris Çarpımı Benzeri Algoritma

Tüm ikililer arasında en kısa yollar Verilen: Yönlü çizge G = (V, E) Ağırlık fonksiyonu w : E → R Hesapla: Çizgenin herhangi 2 köşesi arasındaki en kısa yolu Sonucun ifade edilmesi: en kısa yolları gösteren δ(u, v) sayılarından oluşan bir n × n matrisi 1 2 3 5 4 -4 7 6 -5 8

Motivasyon Bilgisayar ağları Uçak ağları (e.G. Flying time, fares) Demiryolu ağları Her hangi 2 şehir arasındaki en kıs ayol uzunluklarını gösteren tablo

Bilinen algoritmaların yardımıyla çözümler BELLMAN-FORD algoritmasını her köşeyi başlangıç köşe alarak çalıştır: İşlem süresi O(V2E) olur ve eğer çizge yoğun çizge ise E = (V2) olduğundan işlem süresi O(V4) olur Negatif ağırlık yoksa her köşe için Dijkstra algoritması çalıştır: İşlem süresi O(VElgV) olur (ikili yığın veri yapısı ile) ve çizge yoğun ise bunun anlamı O(V3lgV) demek olur Biz bu derste işlem süresi O(V3) olan ve veri yapısından bağımsız algoritma göreceğiz.

Tüm ikililer arasında en kısa yollar 1 2 3 5 4 -4 7 6 -5 8 G çizgesi ağırlıkların komşuluk matrisi ile verilmiş olsun W = (wij), n x n matris, |V| = n Köşeler 1 den n e numaralı olsun if i = j wij = if i  j , (i, j)  E if i  j , (i, j)  E Çıkış bir n x n matrisi olacak D = (dij), burada dij = δ(i, j) Dinamik programlama kullanılacak Ağırlık (i, j) ∞

En kısa yolun optimal altyapısı  11 j En fazla m kiriş En kısa yolun her alt yolu en kısadır p: i ile j arasında en fazla m kiriş kullanan en kısa yol olsun If i = j w(p) = 0 ve p yolunda kiriş yok k En fazla m - 1 kiriş If i  j: p = i k  j p’ yolunda en fazla m-1kiriş var p’ en kıs ayoldur δ(i, j) = p’ δ(i, k) + wkj

Özyinelemeli çözüm  min { , } lij(m-1) min {lik(m-1) + wkj} lij(m) = i ile j arasında en fazla m kirişi olan en kısa yolun ağırlığı m = 0: lij(0) = if i = j if i  j m  1: lij(m) = i ile j arasında en fazla m kirişi olan en kısa yolun ağırlığı: ya en fazla m – 1 kirişi olan en kısa yolun ağırlığına eşit olur ya da j den önce gelen tüm k lara bakılarak k dan j ye geçen m kirişli en kısa yolun ağırlığına eşit olur i  11 j En fazla m kiriş  k min { , } lij(m-1) min {lik(m-1) + wkj} 1  k  n = min {lik(m-1) + wkj} 1  k  n

En kısa yolun hesaplanması m = 1: lij(1) = İ den j ye en fazla 1 kiriş kullanarak giden en kısa yolun ağırlığı W = (wij) veriliyor, hesapla: L(1), L(2), …, L(n-1), burada L(m) = (lij(m)) L(n-1) matrisinde tüm kısa yolların ağırlıkları olur L(m-1) ve W verildiğinde hesapla L(m) En kısa yolu bir kiriş daha kullanarak genişlet Eğer çizgede negatif döngü yoksa en kısa yolda en fazla n - 1 kiriş olur δ(i, j) = lij(n-1) and lij(n), lij(n+1). . . wij L(1) = W = lij(n-1)

EN KISA YOLUN GENİŞLETİLMESİ lij(m) = min {lik(m-1) + wkj} 1  k  n k j k j i * i = L(m-1) n x n W L(m) Değiştir: min  + +   L(m) matrisinin hesaplanması Matris çarpımı hesaplanmasına benzer

EXTEND(L, W, n) create L’, an n × n matrix for i ← 1 to n do for j ← 1 to n do lij’ ←∞ for k ← 1 to n do lij’ ← min(lij’, lik + wkj) return L’ Running time: (n3)

SLOW-ALL-PAIRS-SHORTEST-PATHS(W, n) L(1) ← W for m ← 2 to n - 1 do L(m) ←EXTEND (L(m - 1), W, n) return L(n - 1) Running time: (n4)

Örnek … en son L(4) 3 8  -4 1 7 4 2 -5 6 3 8  -4 1 7 4 2 -5 6 3 8 2 L(m-1) = L(1) W 3 8  -4 1 7 4 2 -5 6 3 8  -4 1 7 4 2 -5 6 3 8 2 -4 3 -4 1 7 L(m) = L(2) … en son L(4) 4 5 11  2 -1 -5 -2 8 1 6 

Örnek  1 6 l14(2) = (0 3 8  -4)  = min (, 4, , , 2) = 2

Matris çarpımı ile benzerliği C = a  b cij = Σk=1n ( aik bkj ) Karşılaştır: L(m) = L(m-1)  C  lij(m) = min1≤k≤n {lik(m-1) + ckj}

İŞLEM ZAMANINI İYİLEŞTİRME Tüm L(m) matrislerini hesaplama gereksinimi yoktur Eğer negatif döngü yoksa: L(m) = L(n - 1) tüm m  n – 1 için L(n-1) matrisini aşağıdaki gibi hesaplayabiliriz: L(1) = W L(2) = W2 = W  W L(4) = W4 = W2  W2 L(8) = W8 = W4  W4 …

FASTER-APSP(W, n) L(1) ← W m ← 1 while m < n - 1 do L(2m) ← EXTEND(L(m), L(m), n) m ← 2m return L(m) : L(n - 1) matrsisinden sonra matrisler değişmez İşlem zamanı: (n3lg n)