Çizge Algoritmalari 5. ders.

Slides:



Advertisements
Benzer bir sunumlar
Yığınlama Sıralaması (Heap Sort)
Advertisements

Hazırlayan: Güray KERA
KONU :GÖRÜNTÜNÜN GEOMETRİK MODELLERİNİN KURULMASI
Yapay Zeka DR.KORHAN KAYIŞLI.
YAPAY ZEKA Yrd. Doç. Dr. Rembiye Kandemir
YAPAY ZEKA ÖDEV - 1 Kenan KILIÇASLAN Trakya Üniversitesi Fen Bilimleri Enstitüsü Makina Mühendisliği Doktora Programı.
JEODEZİ I Doç.Dr. Ersoy ARSLAN.
Graf.
Algoritmalar En kısa yollar I En kısa yolların özellikleri
Mustafa Seçkin DURMUŞ Serdar İPLİKÇİ
İçerik Ön Tanımlar En Kısa Yol Problemi Yol, Cevrim(çember)
Bellek Tabanlı Sınıflandırma
MIT503 Veri Yapıları ve algoritmalar En önemli graf problemleri
AÇILAR.
Algoritmalar Ders 14 En Kısa Yollar II Bellman-Ford algoritması
Çizge Algoritmaları.
Yapısal Program Geliştirme – if, if-else
İçerik: Graflar Tanım Gösterim Dolaşma Algoritmaları
ÇİZGELERİN GÖSTERİMİ Yılmaz KILIÇASLAN. Sunu Planı Bu derste, çizgelerin bilgisayarda gösterimine ilişkin iki standart yaklaşımı inceleyeceğiz.
Ders Notu – 3.2 Bilgisiz (Kör) Arama Yöntemleri
GRAF TEORİSİ Ders 1 TEMEL KAVRAMLAR.
ÇİZGELERİN GÖSTERİMİ Yılmaz KILIÇASLAN.
GRAPHS ÖZET.
BİL551 – YAPAY ZEKA BİLGİSİZ ARAMA YÖNTEMLERİ
Arama ile sorun çözme Ders 3.
YMT219: Veri Yapıları Ders Saatleri: Pazartesi 9:15-12, 17:30-20:15
KARENİN ÖZELLİKLERİ Ü Şeklin arkasına gizlenmiş özellikler
BAZI VERİ YAPILARI Yılmaz KILIÇASLAN.
BAZI VERİ YAPILARI Yılmaz KILIÇASLAN. Sunu Planı Bu derste, çizgeler gibi bazı teorik nesnelerin bellekte nasıl tutulduğunu ve algoritmalarca nasıl işlendiğini.
GEOMETRİ VE AÇILAR GİZEM ÇAĞLI 6/B 372 ZEYNEP SUDE YALÇIN 6/B 47
Çizge Algoritmaları Ders 2.
Algoritmalar ve Programlama I Ders 2: Akış Diyagramları
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,
İleri Algoritmalar 1. ders.
Ağırlıksız ikili eşleştirme
Algoritmalar II Ders 8 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 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ış.
Çizge gösterimleri G = (V, E) çizgesinin komşuluk listesi gösterimi
MAKSİMUM AKİŞ PROBLEMİ
Algoritmalar II Ders 17 İteratif İyileştirme Yöntemi.
En Kısa Yol Problemleri (Shortest Path Problems)
Derinlik öncelikli arama (Depth-first Search(DFS))
Ağırlıksız ikili eşleştirme
9. Ders Tüm ikililer arasında en kısa yollar
İleri Algoritma Analizi
Algoritmalar II Ders 11 Çizgeler. Çizgelerin bilgisayarda gösterimi. BFS algoritması.
Algoritmalar II Ders 12 DFS algoritması. Kirişlerin sınıflandırılması. Topolojik Sıralama.Kuvvetli bağlantılı bileşenler.
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 15 En Küçük Örten Ağaçlar.
Algoritmalar II Ders 13 Çizgelerde tüm ikililer arasında en kısa yollar.
Çizge Algoritmalari 4. ders.
İleri Algoritmalar Ders 3.
Algoritmalar II Ders 16 Prim algoritması.
Çizge Teorisi ve Algoritmalari
İleri Algoritma Analizi
Çizge Algoritmaları 3. ders.
İleri Algoritma Analizi
Algoritmalar II Ders 15 En Küçük Örten Ağaçlar.
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ı
Çizge Algoritmalari 6. ders.
Sunum transkripti:

Çizge Algoritmalari 5. ders

ÇİZGE GÖSTERİMLERİ G = (V, E) çizgesinin komşuluk listesi yöntemi ile gösterimi V den olan her köşe için V sayıda listenin olduğu bir dizidir. Her Adj[u] listesi u köşesinin bir kirişle bağlı olduğu tüm v köşelerini içerir. (rastgele olarak) Bu yöntem hem yönlü, hem de yönsüz çizgelerde kullanılabilir. 1 2 5 / 1 2 5 4 3 2 1 5 3 4 / 3 2 4 4 2 5 3 / 5 4 1 2 Yönsüz çizge

KOMŞULUK LİSTESİ GÖSTERİMİNİN ÖZELLİKLERİ Tüm komşuluk listelerinin uzunlukları toplamı, Yönlü çizgede: = Her (u, v) kirişi u köşesinin listesinde sadece bir defa vardır. Yönsüz çizgede:= Her (u, v) kirişi hem u köşesinin hem de v köşesinin listesinde bulunur. 1 2 3 4 E  Yönlü çizge 1 2 5 4 3 2 E  Yönsüz çizge

KOMŞULUK LİSTESİ GÖSTERİMİNİN ÖZELLİKLERİ Hafıza gereksinimi (V + E) Tercih edildiği zaman: Seyrek çizgelerde, yani eğer E  << V 2 Dezavantajı Verilen u ve v köşeleri arasında kiriş olup olmadığını kontrol etmenin hızlı yolu yoktur u köşesinin tüm komşularını listeleme zamanı: (degree(u)) (u, v)  E koşulunun kontrolü için gereken süre: O(degree(u)) 1 2 5 4 3 Yönsüz çizge 1 2 3 4 Yönlü çizge

Çizge Gösterimleri G = (V, E) çizgesinin komşuluk matrisi ile gösterimi Tüm köşeler 1, 2, … V olarak numaralandırılmış olsun .Gösterim aşağıdaki gibi tanımlanan bir A V x V : aij = 1, eğer (i, j)  E 0, aksi halde 1 2 3 4 5 A matrisi simetriktir: aij = aji A = AT 1 1 2 1 1 2 5 4 3 3 1 4 1 5 1 Yönsüz çizge

KOMŞULUK MATRİSİ GÖSTERİMİNİN ÖZELLİKLERİ Hafıza gösterimi (V2), G de bulunan kiriş sayısından bağımsız olarak Tercih edildiği zaman Çizge yoğun çizge ise, yani E  yaklaşık eşit V 2 2 köşe arasında kiriş olup olmadığını hızlı kontrol etmek gerekirse u köşesinin tüm komşularının listesini bulmak için gereken süre: (V) (u, v)  E kontrolü için gereken süre: (1)

AğİrlIklI Çizgeler Yönlü Çizgeler = her kirişi için w(u, v) ağırlığı tanımlanan çizgeler, yani w: E  R, ağırlık fonksiyonu veriliyor Ağırlıkları da hafızada tutmak gerekir Komşuluk listesi gösteriminde: w(u,v) sayısı u’nun komşuluk listesinde v nin yanında tutuluyor Komşuluk matrisi gösteriminde: w(u, v) sayısı komşuluk matrisinin (u, v) hücresinde tutuluyor

Çizgelerde Arama Çizgelerde arama = kirişlerden sistemli bir biçimde geçerek çizgenin köşelerinde bulunmak İki temel arama algoritması vardır: Genişlik öncelikli arama (Breadth-first search(BFS)) Derinlik öncelikli arama (Depth-first search(DFS)) Bu iki algoritma arasındaki fark: köşelerin her algoritma için farklı sıra ile ziyaret edilmesi

GENİŞLİK ÖNCELİKLİ ARAMA(BFS) Giriş: G = (V, E) çizgesi (yönlü veya yönsüz) Başlangıç (kaynak) köşesi s  V Amaç: G çizgesinin s den ulaşılabilir olan tüm köşelerini «keşfetmek» için kirişleri üzerinde gezinmek (öncelikle s köşesine daha yakın olan köşeleri «keşfetmek» koşuluyla) Çıkış: d[v] = s den v ye olan uzaklık (en az kiriş sayısı), her v  V için s köşesinden ulaşılabilir tüm köşelerin oluşturduğu derinlik öncelikli ağaç (BFT)

GENİŞLİK ÖNCELİKLİ ARAMA(BFS) Köşeler s kaynak köşesinden uzaklıklarının artan sırası ile keşfediliyorlar, yani derinlemesine değil, genişlemesine arama yapılıyor 1 2 5 4 3 11 12 6 7 9

GENİŞLİK ÖNCELİKLİ ARAMA(BFS) Arama sırasında iz bırakma: Her köşeyi beyaz, gri veya siyah renge boyama Başlangıçta her köşe beyaz olur Keşfedilmeye başlanan köşe gri olur Bir köşenin tüm komşuları keşfedildiğinde bu köşe siyah olur Gri köşelerin FIFO (Önce giren önce çıkar) mantıklı Q kuyruğu oluşturulur. kaynak 1 2 5 4 3 1 2 5 4 3 1 2 5 4 3

GENİŞLİK ÖNCELİKLİ AĞAÇ (BFT) BFS algoritması BFT oluşturur: Başlangıçta sadece kökü var (kaynak köşe s) v köşesi u köşesinin komşuluk listesi taranırken bulunduysa  v köşesi ve (u, v) kirişi ağaca eklenir u köşesi BFT ağacında v köşesinin selefi(velisi) olur Her köşe sadece 1 defa keşfedilir  her köşenin en fazla bir velisi vardır kaynak 1 2 5 4 3

BFS için ek veri yapıları G = (V, E) komşuluk listesi ile verilmiş olsun color[u] – her u  V için renk [u] – u köşesinin velisi Eğer u = s (kök) veya u halen keşfedilmemişse  [u] = NIL d[u] – s den u ya uzaklık Gri köşelerin FIFO mantıklı kuyruğu Q kaynak d=1 =1 1 2 5 4 3 d=2 =2 d=1 =1 d=2 =5

BFS(G, s) for each u  V[G] - {s} do color[u]  WHITE d[u] ←  x y for each u  V[G] - {s} do color[u]  WHITE d[u] ←  [u] = NIL color[s]  GRAY d[s] ← 0 [s] = NIL Q   Q ← ENQUEUE(Q, s)  r s t u v w x y  r s t u v w x y Q: s

BFS(V, E, s) while Q   do u ← DEQUEUE(Q) for each v  Adj[u]  r s t u v w x y while Q   do u ← DEQUEUE(Q) for each v  Adj[u] do if color[v] = WHITE then color[v] ← GRAY d[v] ← d[u] + 1 [v] = u ENQUEUE(Q, v) color[u]  BLACK Q: s  1 r s t u v w x y Q: w 1  r s t u v w x y Q: w, r

Örnek  r s t u v w x y 1  r s t u v w x y v w x y 1 2  r s t u Q: s r s t u v w x y 1  r s t u v w x y v w x y 1 2  r s t u Q: s Q: w, r Q: r, t, x 1 2  r s t u v w x y 1 2 3  r s t u v w x y 1 2 3 r s t u v w x y Q: t, x, v Q: x, v, u Q: v, u, y 1 2 3 r s t u v w x y 1 2 3 r s t u v w x y r s t u 1 2 3 v w x y Q: u, y Q: y Q: 

BFS Analİzİ for each u  V - {s} do color[u]  WHITE d[u] ←  [u] = NIL color[s]  GRAY d[s] ← 0 [s] = NIL Q   Q ← ENQUEUE(Q, s) O(V) (1)

BFS Analİzİ while Q   do u ← DEQUEUE(Q) for each v  Adj[u] (1) do if color[v] = WHITE then color[v] = GRAY d[v] ← d[u] + 1 [v] = u ENQUEUE(Q, v) color[u]  BLACK Adj[u] taranıyor her köşe için Her köşe bir defa tüm komşuluk listeleri toplamı= (E) tarama zamanı: O(E) (1) (1) Toplam süre BFS = O(V + E)

EN KISA YOL ÖZELLİĞİ BFS algoritması s  V den çizgenin her köşesine olan en kısa yolu buluyor En kısa yol uzunluğu = (s, u) Yani s den u ya olan yoldaki minimum kiriş sayısı kaynak r s t u 1 2 3 v w x y