Algoritmalar II Ders 13 Çizgelerde tüm ikililer arasında en kısa yollar.

Slides:



Advertisements
Benzer bir sunumlar
Yinelemeli Algoritma Analizi & Asimptotik Notasyon
Advertisements

Veri Yapıları ve Algoritmalar
Algoritma.  Algoritma, belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir.  Başka bir deyişle; bir sorunu çözebilmek için gerekli olan.
Çıkış katmanındaki j. nöron ile gizli katmandaki i. nörona ilişkin ağırlığın güncellenmesi Ağırlığın güncellenmesi Hangi yöntem? “en dik iniş “ (steepest.
Hat Dengeleme.

Verilen eğitim kümesi için, ortalama karesel hata ‘yı öğrenme performansının ölçütü olarak al ve bu amaç ölçütünü enazlayan parametreleri belirle. EK BİLGİ.
Zihinsel engellilerin sınıflandırılması
Greedy Algorithms.
Momentum Terimi Momentum terimi Bu ifade neyi anımsatıyor? Lineer zamanla değişmeyen ayrık zaman sistemi HATIRLATMA.
KONUŞMA EĞİTİMİ 11. HAFTANIN DEVAMI YRD. DOÇ. DR. SELİM EMİROĞLU.
Çok Katmanlı Algılayıcı-ÇKA (Multi-Layer Perceptron)
Süreç... Rehberlik Nedir? Rehberlik Ne Değildir? Reberlik İlkeleri Nelerdir? Rehberlik Servisinden Hangi Konulara Dair Yardım Alınabilir? - Bireysel Alan.
BİLGİSAYAR PROGRAMLAMA DERSİ
Ders notlarına nasıl ulaşabilirim
0-1 Sırt Çantası Problemi
TAM SAYILAR.
Algoritmalar II Ders 13 Çizgelerde tüm ikililer arasında en kısa yollar.
Tüm ikililer arasında en kısa yollar
DENEYSEL TERTİPLER VE PAZAR DENEMESİ
1. Bernoulli Dağılımı Bernoulli dağılımı rassal bir deneyin sadece iyi- kötü, olumlu-olumsuz, başarılı-başarısız, kusurlu-kusursuz gibi sadece iki sonucu.
Yapay Sinir Ağı Modeli (öğretmenli öğrenme) Çok Katmanlı Algılayıcı
Algoritmalar II Ders 14 Çizgelerde tüm ikililer arasında en kısa yollar.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
. . AÇILAR ..
İleri Algoritma Analizi
En Kısa Yol Problemleri (Shortest Path Problems)
En Kısa Yol Algoritmaları Dijkstra
Derinlik öncelikli arama (Depth-first Search(DFS))
Çözülemiyen Matematik Soruları
İleri Algoritmalar 2. ders.
Çizge Teorisi ve Algoritmaları
Çizge Algoritmaları 3. ders.
İleri Algoritma Analizi
“Bilgi”’nin Gösterimi “Bilgi” İnsan veya Makina Yorumlama Öngörme
Ağırlıksız ikili eşleştirme
9. Ders Tüm ikililer arasında en kısa yollar
Seminer Dersi Sunumu Sunum Adı Öğrenci Ad ve Soyadı Ay Yıl
İleri Algoritma Analizi
PARAMETRİK HİPOTEZ TESTLERİ
Bölüm 7 İfadeler ve atamalar.
Algoritmalar II Ders 11 Çizgeler. Çizgelerin bilgisayarda gösterimi. BFS algoritması.
Çizge Teorisi ve Algoritmalari
İleri Algoritma Analizi
Algoritmalar II Ders 12 DFS algoritması. Kirişlerin sınıflandırılması. Topolojik Sıralama.Kuvvetli bağlantılı bileşenler.
Doğrusal Mantık Yapısı İle Problem Çözme
Algoritmalar II Ders 15 En Küçük Örten Ağaçlar.
Çizge Algoritmaları.
Çizge Algoritmalari 5. ders.
NİŞANTAŞI ÜNİVERSİTESİ
İleri Algoritma Analizi
Bilgisayar Bilimi Koşullu Durumlar.
Üç bileşenli sistemlerde uygulamalar
NİŞANTAŞI ÜNİVERSİTESİ
Algoritmalar II Ders 16 Prim algoritması.
Düzenli Dillerin Kapalılık Özellikleri
Tanımlar Sonlu Özdevinirlerle Eşdeğerlik
MTM216 GÖRSEL PROGRAMLAMA
Kesikli Olay benzetimi Bileşenleri
İleri Algoritma Analizi
Algoritmalar II Ders 15 En Küçük Örten Ağaçlar.
Algoritmalar II Ders 16 Prim algoritması.
Ders 9: İkili arama ağaçları
8. Ders Tüm ikililer arasında en kısa yollar
RASTGELE DEĞİŞKENLER Herhangi bir özellik bakımından birimlerin almış oldukları farklı değerlere değişken denir. Rastgele değişken ise tanım aralığında.
Çizge Algoritmalari 10. Ders.
Chapter 4 Divide-and-Conquer
10. Ders Floyd-Warshal algoritması
Ortam-Bağımsız Gramerler (OBG)
Çizge Algoritmalari 6. ders.
Sunum transkripti:

Algoritmalar II Ders 13 Çizgelerde tüm ikililer arasında en kısa yollar

En kısa yol algoritmaları Bellman-Ford Algoritması Dijkstra algoritması

Algoritmalar Bellman-Ford algorithm Dijkstra’s algorithm Negatif ağırlıklara izin veriliyor Negatif döngünün varlığını buluyor Dijkstra’s algorithm Negatif ağırlıklara izin verilmiyor Her iki algoritmanın ortak işlemleri: Başlangıç değerleri atama işlemi(Initialization) Hafifletme işlemi (Relaxation)

EN KISA YOL İŞARETLEMELERİ Her v  V köşesi için: δ(s, v): s den v ye en kısa yolun ağırlığı d[v]: bakılan adıma kadar s den v ye bulunan en kısa yolun ağırlığı Başlangıçta, d[v]=∞ d[v]δ(s,v) algoritma bitiminde [v] = bakılan adımda s den v ye bulunan en kısa yolda v den bir önceki köşe Bu köşe yoksa, [v] = NIL  yardımıyla bir ağaç oluşur en kısa yol ağacı 3 9 5 11 6 7 s t x y z 2 1 4

Başlangıç değerleri atama(Initialization) Alg.: INITIALIZE-SINGLE-SOURCE(V, s) for each v  V do d[v] ←  [v] ← NIL d[s] ← 0 Tüm en kıs ayol algoritmaları INITIALIZE- SINGLE-SOURCE fonksiyonu ile başlar

Hafifletme (Relaxation) adımı (u, v) kirişinde hafifletme = v ye u dan gelmek daha avantajlı mıdır? If d[v] > d[u] + w(u, v) bu durumda v ye gelen yolu kısaltabiliriz ( u dan geçerek)  d[v]=d[u]+w(u,v)  [v] ← u Hafifletme sonrası: d[v]  d[u] + w(u, v) s s 5 9 2 u v 5 6 2 u v RELAX(u, v, w) RELAX(u, v, w) 5 7 2 u v 5 6 2 u v Değişiklik yok

Bellman-Ford Algoritması Tek kaynaklı en kısa yol problemini çözüyor δ(s, v) ve [v] yi her v  V için buluyor Negatif ağırlıklara izin veriyor ve negatif ağırlıklı döngü varsa varlığını buluyor. Eğer negatif ağırlıklı döngü yoksa TRUE döndürüyor ( s den ulaşılabilir döngü) Aksi durumda FALSE döndürüyor

Bellman-Ford Algoritması Ana fikir: |V–1| defa tüm kirişlere tek tek bakılıyor ve hafifletme işlemi yapılıyor. Aşağıdaki örnekte verilen kiriş sırası ile Bellman-Ford algoritması uygulayalım (t, x), (t, y), (t, z), (x, t), (y, x), (y, z), (z, x), (z, s), (s, t), (s, y) t x 5   6 -2 -3 8 7 s -4 7 2   9 y z

BELLMAN-FORD(V, E, w, s)  s t x y z Pass 1  s t x y z 6 7  6 5 7 9 s t x y z 8 -3 2 -4 -2 Pass 1  6 5 7 9 s t x y z 8 -3 2 -4 -2 6 7 E: (t, x), (t, y), (t, z), (x, t), (y, x), (y, z), (z, x), (z, s), (s, t), (s, y)

Örnek (t, x), (t, y), (t, z), (x, t), (y, x), (y, z), (z, x), (z, s), (s, t), (s, y) 6  7 5 9 s t x y z 8 -3 2 -4 -2 6  7 5 9 s t x y z 8 -3 2 -4 -2 1. geçiş 2. geçiş 11 4 2 3. geçiş 6  7 5 9 s t x y z 8 -3 2 -4 -2 11 4 6  7 5 9 s t x y z 8 -3 2 -4 -2 11 4 4. geçiş 2 -2

do if d[v] > d[u] + w(u, v) then return FALSE return TRUE NEGATİF DÖNGÜYÜ BULMA (TÜM KİRİŞLER ÜZERİNDEN EK OLARAK BİR DEFA DAHA GEÇİLİYOR) for each edge (u, v)  E do if d[v] > d[u] + w(u, v) then return FALSE return TRUE  c s b 2 3 -8 1 geçiş 2 geçiş  c s b 2 3 -8 -3 2 5 c s b 3 -8 (s, b) ye bakalım: d[b] = -1 d[s] + w(s, b) = -4  d[b] > d[s] + w(s, b) -3 2 -6 -1 5 2 (s,b) (b,c) (c,s)

BELLMAN-FORD(V, E, w, s) INITIALIZE-SINGLE-SOURCE(V, s) for i ← 1 to |V| - 1 do for each edge (u, v)  E do RELAX(u, v, w) for each edge (u, v)  E do if d[v] > d[u] + w(u, v) then return FALSE return TRUE Running time: O(V+VE+E)=O(VE) (V) O(V) O(VE) O(E) O(E)

Dijkstra’ Algoritması Tek kaynaklı en kısa yol problemi: Negatif ağırlıklı kiriş yok: w(u, v) > 0,  (u, v)  E Bu algoritmada her kiriş bir defa hafifletilir! Her adımda 2 çeşit köşeler kümesi olur: d[v]=δ (s, v) d[v]>δ (s, v)

Dijkstra Algoritması V – S kümesinde min-öncelikli kuyruk vardır Q de kısa yolların değerleri d[u] ile değerlendirilir Her adımda d[u] değeri en küçük olan u  V – S, köşesi seçilir ve u dan çıkan tüm kirişlere Relax uygulanır

Dijkstra (G, w, s) Q=<y,t,x,z> S=<> Q=<s,t,x,z,y> S=<s> Q=<y,t,x,z>  10 1 5 2 s t x y z 3 9 7 4 6  10 1 5 2 s t x y z 3 9 7 4 6 10 5

Örnek S=<s,y> Q=<z,t,x> S=<s,y,z> Q=<t,x> 10  10  5 1 2 s t x y z 3 9 7 4 6 8 14 5 7 10 1 2 s t x y z 3 9 4 6 8 14 13 7 S=<s,y> Q=<z,t,x> S=<s,y,z> Q=<t,x>

Örnek S=<s,y,z,t,x> Q=<> S=<s,y,z,t> Q=<x> 8 9 8 9 5 7 10 1 2 s t x y z 3 4 6 8 13 5 7 10 1 2 s t x y z 3 9 4 6 9

Dijkstra (G, w, s) INITIALIZE-SINGLE-SOURCE(V, s) (V) S ←  Q ← V[G] while Q   do u ← EXTRACT-MIN(Q) S ← S  {u} for each vertex v  Adj[u] do RELAX(u, v, w) Update Q (DECREASE_KEY) Running time: O(VlgV + ElgV) = O(ElgV) (V) O(V) build min-heap Executed O(V) times O(VlgV) O(lgV) O(E) times (total) O(ElgV) O(lgV)

Dijskstra Algoritmasının doğruluğu İddia: Her u  V köşesi için bu köşe S e eklendiğinde d[u] = δ(s, u) olur. İspat: u bu koşulu sağlamayan ilk köşe olsun, yani u köşesi S e eklendiğinde d[u]  δ(s, u) olsun. p yolu s den u ya en kısa yol olsun:

Dijskstra Algoritmasının doğruluğu d[u] için aşağıdaki doğrudur? d[u]≤d[v]+w(v,u)= δ(s,v)+w(v,u) d[u’] için aşağıdaki doğrudur? d[u’]≤d[v’]+w(v’,u’)= δ(s,v’)+w(v’,u’) u’ köşesi u ya giden en kısa yol üzerinde: d[u’]<δ(s,u) d[u’]<d[u] diğer taraftan: d[u]>δ(s,u) Çelişki! Öncelikli kuyruk Q: <u, …, u’, ….> (yani, d[u]<…<d[u’]<… )

Problem 1 Negatif ağırlıklı çizgeler için Dijkstra algoritmasının doğru çalışmadığını gösteren bir örnek yazınız. s u 1 1 w -1 1 1. iterasyon v d[s]=0 d[u]=1 d[v]=1 S={s} Q={u,v,w} 2. iterasyon 3. iterasyon 4. iterasyon d[w]=2 S={s,u} Q={v,w} d[u]=0 S={s,u,v} Q={w} S={s,u,v,w} Q={} d[w] doğru değil! u köşesi S e girdikten sonra d[u]=δ[s,u] olmalıdır!

Problem 2 G=(V,E) yönlü bir çizgesi ve bu çizgenin her (u,v) kirişine karşılık gelen r(u,v) sayısı veriliyor., Burada 0≤r(u,v) ≤1 dir ve r(u,v) sayısı u dan v ye olan iletişim kanalının güvenilirliğini göstermektedir. r(u,v) sayısını u dan v ye olan kanalın doğru çalışma olasılığı olarak da düşünebiliriz ve tüm kanalların olasılıklarının bağımsız olduğunu düşünüyoruz. 2 köşe arasındaki en güvenilir yolu bulunuz.

Problem 2 Çözüm1: Dijkstra algoritmasını modifiye ederiz Relax işlemini değiştiririz: if d[v] < d[u] w(u,v) then d[v] = d[u] w(u,v) “EXTRACT_MIN” yerine “EXTRACT_MAX” kullanırız

Problem 2 Çözüm 2: Dijkstra algoritmasını değişiklik yapmadan uygularız! r(u,v)=(u,v) kanalının çalışma olasılığı olsun Olasılıklar bağımsız olsun, p=<v1,v2,…,vk> yolunun çalışma olasılığı: r(v1,v2)r(v2,v3) … r(vk-1,vk) Biz olasılığı en yüksek olan yolu arıyoruz,

Problem 2 Dijkstra algoritması ise min hesaplar Logaritma alalım

Problem 2 Minimum arama problemine dönüştürelim: Şimdi Dijkstra algoritmasını alarak uygulayalım.