Algoritmalar II Ders 11 Çizgeler. Çizgelerin bilgisayarda gösterimi. BFS algoritması.

Slides:



Advertisements
Benzer bir sunumlar
Ders İçeriği Ağaç Veri Modeli Tanım ve Gerçekleştirim İkili Ağaç
Advertisements

Yinelemeli Algoritma Analizi & Asimptotik Notasyon
Ayrık Yapılar Algoritma Analizi.
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)
MIT503 Veri Yapıları ve algoritmalar En önemli graf problemleri
BAĞINTI T ANIM: Boş olmayan A ve B kümeleri için, A×B nin her alt kümesine, Adan B ye bir bağıntı denir.A×B nin her alt kümesine de A dan A ya bir bağıntı.
Çizge Algoritmaları.
İç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.
MIT503 Veri Yapıları ve algoritmalar Veri ağaçları
GRAF TEORİSİ Ders 1 TEMEL KAVRAMLAR.
İŞLEM TANIM: A boş olmayan bir küme olmak üzere,A×A nın bir R alt kümesinden A ya tanımlanan her fonksiyona, işlem denir.İşlemi tanımlarken,’’
ÇİZGELERİN GÖSTERİMİ Yılmaz KILIÇASLAN.
GRAPHS ÖZET.
Arama ile sorun çözme Ders 3.
YMT219: Veri Yapıları Ders Saatleri: Pazartesi 9:15-12, 17:30-20:15
ÇİZGE KURAMI Yılmaz KILIÇASLAN.
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.
Çizge Algoritmaları Ders 2.
BOŞ KÜME DENK KÜME EVRENSEL KÜME EŞİT KÜME İÇİNDEKİLER.
BAĞINTI & FONKSİYONLAR.
Algoritmalar ve Programlama I Ders 2: Akış Diyagramları
KUYRUK (QUEUE).
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,
V2’nin q1 doğrultusunda ki bileşenine
İleri Algoritmalar 1. ders.
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ış.
Ç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))
İleri Algoritma Analizi
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 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)
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 5. ders.
Çizge Algoritmalari 4. ders.
İleri Algoritmalar Ders 3.
NİŞANTAŞI ÜNİVERSİTESİ
Algoritmalar II Ders 16 Prim algoritması.
Çizge Teorisi ve Algoritmalari
NİŞANTAŞI ÜNİVERSİTESİ
İ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:

Algoritmalar II Ders 11 Çizgeler. Çizgelerin bilgisayarda gösterimi. BFS algoritması

Ç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 köşeler(vertex) kümesi denir. E kümesine ise G çizgesinin kirişler kümesi (edge set) denir. Çizgelerin 2 çeşidi vardır: yönlü ve yönsüz

Yönlü çizge örneği Öz-döngüler(Self-loops)-yani bir köşenin kendisinden kendisine kirişler olabilir. a d e b c f

Yönsüz çizgelere örnek f c a d b

Tanımlar Yönlü ve yönsüz çizgeler için bir çok tanım aynıdır. Sadece bazı kavramlar az da olsa farklılık göstermektedir. Eğer (u,v) yönlü G=(V,E) çizgesinin bir kirişi ise, (u,v) kirişi u köşesinden çıkıyor ve v köşesine giriyor denir. Eğer (u,v) yönsüz G=(V,E) çizgesinin bir kirişi ise, (u,v) kirişi u ve v köşelerini bağlıyor denir. Eğer (u,v) G=(V,E) çizgesinin bir kirişi ise v köşesi u köşesinin komşusudur (adjacent) denir.

Tanımlar Yönsüz bir çizgede bir köşesinin derecesi bu köşeye bağlı kirişlerin sayısına eşittir. 0 dereceli köşeye tecrit olunmuş(isolated) köşe denir. Yönlü çizgelerde, bir köşenin dış-derecesi bu köşeden çıkan kirişlerin sayısına eşittir. Yönlü çizgelerde, bir köşenin iç-derecesi bu köşeye giren kirişlerin sayısına eşittir. Yönlü çizgelerde, bir köşenin derecesi bu köşenin dış-derecesi ile iç-derecesinin toplamına eşittir.

Tanımlar Bir G=(V,E) çizgesinde u köşesinden w köşesine olan k uzunluklu yol, köşelerin (v0,v1,…,vk) dizisine denir, burada u=v0,w=vk ve {(v0,v1),(v1,v2),…(vk-1),vk)} kümesi E nin bir altkümesidir. Bir yolun uzunluğu bu yoldaki kiriş sayısına eşittir. Eğer u köşesinden w köşesine bir p yolu varsa w köşesi u köşesinden p yolu ile ulaşılabilirdir(reachable) denir. Bir yoldaki tüm köşeler birbirinden farklı ise bu yola basit (simple) yol denir.

Tanımlar Eğer yönlü bir çizgenin (v0,v1,…vk) yolunda v0=vk ve yolda en az bir kiriş varsa bu yola devir(cycle) denir. Eğer bir devirde başlangıç ve son köşe dışında diğer tüm köşeler farklı ise bu devire basit devir. Yönlü çizgede basit devirde öz-döngü olamaz. Yönsüz bir çizgede (v0,v1,…vk) yolunda k>=3, v0=vk ve başlangıç ve son köşeler dışında tüm köşeler farklı ise bu yola devir denir. Bir çizgede devir yoksa bu çizgeye devirsiz çizge denir.

Tanımlar Yönsüz bir çizgede her hangi 2 köşenin birinden diğerine yol varsa bu çizgeye bağlantılı (connected ) çizge denir. Bir çizgenin köşelerinin “ulaşılabilir” bağıntısının oluşturduğu denklik sınıflarına bağlantılı bileşenleri (connected components) denir. Yönlü bir çizgede eğer her hangi 2 köşe birbirinden ulaşılabilirse bu çizgeye kuvvetli bağlantılı (strongly connected) çizge denir. Yönlü bir çizgenin köşelerinin “karşılıklı ulaşılabilir” bağıntısının oluşturduğu denklik sınıflarına kuvvetli bağlantılı bileşenleri (strongly connected components) denir.

Tanımlar G1=(V1,E1) ve G=(V,E) çizgeleri için eğer V1 kümesi V nin ve E1 kümesi E nin altkümesi ise G1=(V1,E1) çizgesine G=(V,E) çizgesinin altçizgesi (subgraph) denir. Her hangi 2 köşesi bir birine komşe olan yönsüz bir çizgeye tam çizge(complete graph) denir. Yönsüz bir G=(V,E) çizgesinde V kümesi V1 ve V2 gibi 2 kümeye ayrılabiliyorsa ve bir (u,v) ikilisinin E nin elemanı olmasından ya u nun V1 de ve v nin V2 de olması ya da tam tersı u nun V2 de ve v nin V1 de oması çıkarsa bu çizgeye iki kümeli (biparite graph) çizge denir.

Çİ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

BFT Aşağıdaki algoritma s den v ye olan en kısa yolu yazıyor. (Bu algoritma BFS algoritması bittikten sonra çalıştırılmalıdır)

Print-Path(G,s,v) 1 if v=s 2 then print s 3 else if π[v]=NIL 4 then print “no path from” s “to” v “exists” 5 else Print-Path(G,s,π[v]) 6 print v