Çizge gösterimleri G = (V, E) çizgesinin komşuluk listesi gösterimi

Slides:



Advertisements
Benzer bir sunumlar
Alakalı müşterileri hedefleyin. Google ile Yeniden Pazarlama Remarketing with Google. Target customers who are already showing interest in your business.
Advertisements

Graf.
İç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.
Atama ve eşleme (eşleştirme) problemleri (Matching and Assignment problems)
ÇİZGELERİN GÖSTERİMİ Yılmaz KILIÇASLAN.
GRAPHS ÖZET.
İŞ SIRALAMA VE ÇİZELGELEME DERS 5
Hareket halindeki insanlara ulaşın.Mobil Arama Ağı Reklamları Reach customers with Mobile Search Network.
NOUN CLAUSES (İSİM CÜMLECİKLERİ).
Çizge Algoritmaları Ders 2.
DEVRE TEOREMLERİ.
COSTUMES KILIKLAR (KOSTÜMLER)
Veri Yapıları ve Algoritmalar
BM-305 Mikrodenetleyiciler Güz 2015 (6. Sunu) (Yrd. Doç. Dr. Deniz Dal)
AVL Trees / Slide 1 Silme * Anahtar hedefi silmek için, x yaprağında buluruz ve sonra sileriz. * Dikkat edilmesi gereken iki durum vardır. (1) Hedef bazi.
21/02/2016 A Place In My Heart Nana Mouskouri « Istanbul « (A Different Adaptation)
RELIGIOUS TRADITIONS BAGS TO DO IN YOUR CITY T.C. Ünye Kaymakamlığı ANAFARTA ORTAOKULU.
MUSIC FOR COMENIUS BROTHER HOOD NEVER ENDS BROTHERHOOD NEVER ENDS…. *We are not going to give up yet *It's time for us to make our move *We fed up with.
Practice your writing skills
HAPPY EASTER! MUTLU PASKALYALAR ! Hepinizin Paskalya Bayramını kutluyoruz. Paskalya bizim kültürümüzde kutlanan bir bayram değil ama aynı dönemde bizim.
This is beak. There are feet. There are wings. There are eyes. This is tongue.
Grade 8 Unit 7 Bilginbakterim.com.
İleri Algoritmalar 1. ders.
Ağırlıksız ikili eşleştirme
Algoritmalar II Ders 13 Çizgelerde tüm ikililer arasında en kısa yollar.
Tüm ikililer arasında en kısa yollar
Insertion Sort Fikir: Oyun kartlarını sıralamaya benzer.
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ış.
BİLİMSEL ÇALIŞMA BASAMAKLARI SCIENTIFIC WORKING STEPS MHD BASHAR ALREFAEI Y
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))
Pop Art Pop Art was inspired by popular culture of the 1950s and 60s Arts were inspired by magazines, pop music, television, films, and advertisements.
Ağırlıksız ikili eşleştirme
9. Ders Tüm ikililer arasında en kısa yollar
RA-Relational Algebra
FINLAND EDUCATION SYSTEM I am talking about the Finnish education system today.
Future: I will/shall & I am going to. Structure: Subject+will/shall+verb(base form)+object.
tomorrow soon next week / year in five minutes/ in two hours later today I'll go to the market tomorrow. Don’t worry. He will be here soon. There.
taşınabilir Akilli Tahta Kullanım kılavuzu
Döngüler ve Shift Register
Algoritmalar II Ders 11 Çizgeler. Çizgelerin bilgisayarda gösterimi. BFS algoritması.
NİŞANTAŞI ÜNİVERSİTESİ
Algoritmalar II Ders 12 DFS algoritması. Kirişlerin sınıflandırılması. Topolojik Sıralama.Kuvvetli bağlantılı bileşenler.
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 5. ders.
NİŞANTAŞI ÜNİVERSİTESİ
Çizge Algoritmalari 4. ders.
NİŞANTAŞI ÜNİVERSİTESİ
İleri Algoritmalar Ders 3.
Algoritmalar II Ders 16 Prim algoritması.
Chapter 5 – Balancing of accounts
Çizge Algoritmaları 3. ders.
Algoritmalar II Ders 15 En Küçük Örten Ağaçlar.
Algoritmalar II Ders 16 Prim algoritması.
Çizge Algoritmalari 10. Ders.
Bölüm 5 Azalt ve yönet (Decrease-and-Conquer)
10. Ders Floyd-Warshal algoritması
Çizge Algoritmalari 6. ders.
Kelime (Text) İşleme Algoritmaları
Sunum transkripti:

Çizge gösterimleri G = (V, E) çizgesinin komşuluk listesi gösterimi V sayıda listenin bir dizisi(array), V deki her köşe için bir tane liste Her Adj[u] listesi u köşesinin bağlı olduğu tüm v köşelerini içerir (rastgele sıralı olarak) Yönlü veya yönsüz çizgeler için 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 listesi gösteriminin özellikleri Tüm komşuluk listelerinin toplamı Yönlü çizgelerde: Her (u, v) kirişi listede sadece bir defa olacağından sayısına Yönsüz çizgelerde: Her uv kirişi listede 2 defa olacağından sayısna eşittir 1 2 3 4 Directed graph E  1 2 5 4 3 2 E  Undirected graph

Komşuluk listesi gösteriminin özellikleri Hafiza gereksinimi (V + E) Tercih edildiği çizgeler Seyrek çizgelerde: E  << V 2 Eksik yönü u ile v arasında kiriş olup olmadığını hızlı kontrol etmenin bir yolu yoktur u ya komşu tüm köşelerin listesini bulmak için gerekli süre: (degree(u)) (u, v)  E için kontrol süresi: O(degree(u)) 1 2 5 4 3 Undirected graph 1 2 3 4 Directed graph

Çizge gösterimi G = (V, E) çizgesinin komşuluk matrisi gösterimi Köşelerin numaraları 1, 2, … V olsun. Komşuluk matrisi A V x V  nın terimleri aij = 1 eğer (i, j)  E 0 aksi durumda 1 2 3 4 5 A matrisi simetriktir: aij = aji A = AT 1 1 1 2 5 4 3 2 1 3 1 4 1 Yönsüz çizge 5 1

Komşuluk matrisi gösteriminin özellikleri Hafiza gereksinimi (V2), G nin kiriş sayısına bağlı değil Ne zaman tercih edilir Çizge yoğunsa, yani E sayısı V 2 sayısına çok yakınsa 2 köşe arasında kiriş olup olmadığını hızlı bulma gereksinimi varsa u ya komşu tüm köşelerin bulunması süresi: (V) (u, v)  E kontrol süresi: (1)

Ağırlıklı çizgeler Ağırlıklı çizgeler = Her kiriş için atanmış w(u, v) ağırlığı vardır w: E  R, ağırlık fonksiyonu Ağırlıkların hafızada tutulması Komşuluk listesinde: w(u,v) sayısı u nun komşuluk listesinde v köşesi ile birlikte tutulur Komşuluk matrisinde: w(u, v) saysı matrisin (u, v) ye karşılık gelen yerinde tutulur

Çizgelerde arama Çizgelerde arama = Çizgenin kirişlerini sistemli bir biçimde takip ederek mümkün olan tüm köşelerinde bulunmak İki temel arama algoritması vardır: Genişlik öncelikli arama (Breadth-first search) Derinlik öncelikli arama (Depth-first search) Bu iki algoritma arasındaki en önemi fark çizgenin üzerinden geçilmemiş kirişlerini hangi sıra ile takip edilmesindedir

Breadth-First Search (BFS) Giriş: Bir G = (V, E) çizgesi(yönlü veya yönsüz) Bir s  V kaynak köşesi Amaç: s köşesinden ulaşılabilir tüm köşelerde öncelikle s e daha yakın olan köşelere kirişlerle gitme koşuluyla bulunmak Çıkış: d[v] = s den v ye olan uzaklık (en kısa yoldaki kiriş sayısı), tüm v  V ler için Kökü s de olan BFS ağacı

Breadth-First Search (devam.) Köşeleri s den olan uzaklığın artan sırası ile keşfet-genişlemesine ara, derinlemesine değil Önce s den 1 kiriş uzakta olan köşeler, sonra 2 kiriş uzakta olan köşeler,… bulunur 1 2 5 4 3 11 12 6 7 9

Breadth-First Search (devam.) Her köşe beyaz, gri veya siyah renkte olur Başlangıçta, tüm köşeler beyaz olur Keşfedilen köşenin rengi hemen griye dönüşür Tüm komşuları keşfedilen köşenin rengi sıayaha dönüşür FIFO ile çalışan Q kuyruğu gri köşeleri içerir kaynak 1 2 5 4 3 1 2 5 4 3 1 2 5 4 3

BFS ağacı BFS algoritması BFS ağacı üretir Başlangıçta sadece kökü vardır(kaynak köşe s) v köşesi u köşesinin komşusu olarak keşfedildiyse (u, v) kirişi ağaca eklenir u köşesi v nin velisi olur Her köşe sadece 1 defa keşfedilebilir  yani her köşenin sadece 1 velisi vardır Kaynak 1 2 5 4 3

BFS için Veri yapıları G = (V, E) çizgesi komşuluk listesi ile ifade edilir color[u] – u  V nin rengi [u] – u nun velisi Eğer u = s (kök) veya u köşesi henüz keşfedilmemişse  [u] = NIL d[u] – s den u ya olan uzaklık FIFO mantıklı Q kuyruğu (gri köşeleri içerir) 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:  COSC3101A

BFS analizi 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 analizi Total running time for BFS = O(V + E) 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 Scan Adj[u] for all vertices in the graph Each vertex is scanned only once, when the vertex is dequeued Sum of lengths of all adjacency lists = (E) Scanning operations: O(E) (1) (1) Total running time for BFS = O(V + E)

En kısa yol özelliği BFS algoritması s  V köşesinden ulaşılabilir tüm köşeler en kısa yolları buluyor En kısa yol uzunluğu (s, u) s den u ya minimum kiriş sayısıdır kaynak r s t u 1 2 3 v w x y

Derinlik öncelikli arama (DFS) Giriş: G = (V, E) (Kaynak köşe verilmez!) Amaç: G nin herhangi bir köşesinden başlayarak ve kirişleri üzerinde hareket ederek tüm köşelerini keşfetmek Çıkış: 2 zaman değişkeni: d[v] = v nin keşfedildiği zaman f[v] = v nin tüm komşularının ziyareti bittiği zaman DFS ormanı 1 2 5 4 3

DFS Veri yapıları Global değişken: time-step( zaman-adım) Köşeler keşfedildikçe ve keşfi bittiğinde birer artırılır color[u] – BFS dekinin aynısı [u] – u nun velisi d[u], f[u] – keşfedildiği zaman ve keşfin bittiği zaman Gri Beyaz Siyah 2V d[u] f[u] 1 ≤ d[u] < f [u] ≤ 2 |V|

DFS(G) for each u  V[G] do color[u] ← WHITE [u] ← NIL time ← 0 do if color[u] = WHITE then DFS-VISIT(u) Every time DFS-VISIT(u) is called, u becomes the root of a new tree in the depth-first forest u v w x y z

DFS-VISIT(u) color[u] ← GRAY time ← time+1 d[u] ← time for each v  Adj[u] do if color[v] = WHITE then [v] ← u DFS-VISIT(v) color[u] ← BLACK time ← time + 1 f[u] ← time u v w x y z time = 1 1/ u v w x y z 1/ 2/ u v w x y z

Örnek u v w x y z u v w x y z u v w x y z u v w x y z u v w x y z u v 1/ u v w x y z 1/ 2/ u v w x y z 1/ 2/ 3/ u v w x y z 1/ 2/ 4/ 3/ u v w x y z 1/ 2/ 4/ 3/ u v w x y z B 1/ 2/ 4/5 3/ u v w x y z B 1/ 2/ 4/5 3/6 u v w x y z B 1/ 2/7 4/5 3/6 u v w x y z B 1/ 2/7 4/5 3/6 u v w x y z B F

Örnek (devam) The results of DFS may depend on: 1/8 2/7 4/5 3/6 u v w x y z B F 1/8 2/7 9/ 4/5 3/6 u v w x y z B F 1/8 2/7 9/ 4/5 3/6 u v w x y z B F C 1/8 2/7 9/ 4/5 3/6 10/ u v w x y z B F C 1/8 2/7 9/ 4/5 3/6 10/ u v w x y z B F C 1/8 2/7 9/ 4/5 3/6 10/11 u v w x y z B F C 1/8 2/7 9/12 4/5 3/6 10/11 u v w x y z B F C The results of DFS may depend on: The order in which nodes are explored in procedure DFS The order in which the neighbors of a vertex are visited in DFS-VISIT

Kiriş sınıflandırma Ağaç kirişleri (beyaz köşeye giden kirişler): (u, v) ağaç kirişidir eğer v köşesi ilk defa first (u, v) kirişi ile gelinerek ziyaret edilmişse Geri kiriş (Back edge) (Gri köşeye giden kirişler): (u, v) geri kiriştir eğer u köşesi v nin soyundan geliyorsa Döngü kirişler de geri kirişlerdir 1/ u v w x y z 1/ 2/ 4/ 3/ u v w x y z B

Kiriş sınıflandırma İleri kirişler (Forward edges) (Siyah köşelere giden d[u] < d[v] olan kirişler): (u, v) kirişi ağaç kirişi değilse ve v köşesi u nun soyundan geliyorsa bu kiriş ileri kiriştir Çapraz kiriş (Cross edge) (Siyah köşelere giden d[u] > d[v] olan kirişler): Ağaç, ileri, geri olmayan tüm kirişler 1/ 2/7 4/5 3/6 u v w x y z B F 1/8 2/7 9/ 4/5 3/6 u v w x y z B F C

DFS(G) analizi for each u  V[G] do color[u] ← WHITE [u] ← NIL time ← 0 do if color[u] = WHITE then DFS-VISIT(u) (V) (V) – exclusive of time for DFS-VISIT

DFS-VISIT(u) analizi color[u] ← GRAY time ← time+1 d[u] ← time for each v  Adj[u] do if color[v] = WHITE then [v] ← u DFS-VISIT(v) color[u] ← BLACK time ← time + 1 f[u] ← time DFS-VISIT is called exactly once for each vertex Each loop takes |Adj[v]| Total: ΣvV |Adj[v]| + (V) = (V + E) (E)

Topological Sort Topological sort of a directed acyclic graph G = (V, E): a linear order of vertices such that if there exists an edge (u, v), then u appears before v in the ordering. Directed acyclic graphs (DAGs) Used to represent precedence of events or processes that have a partial order a before b b before c b before c a before c What about a and b? a before c Topological sort helps us establish a total order

Topological Sort TOPOLOGICAL-SORT(V, E) Running time: (V + E) Call DFS(V, E) to compute finishing times f[v] for each vertex v When each vertex is finished, insert it onto the front of a linked list Return the linked list of vertices undershorts 11/ 16 17/ 18 socks 12/ 15 pants shoes 13/ 14 shirt 1/ 8 6/ 7 belt watch 9/ 10 tie 2/ 5 jacket 3/ 4 socks undershorts pants shoes watch shirt belt tie jacket Running time: (V + E)

Topological Sort undershorts 11/ 16 17/ 18 socks Topological sort: an ordering of vertices along a horizontal line so that all directed edges go from left to right. 12/ 15 pants shoes 13/ 14 shirt 1/ 8 6/ 7 belt watch 9/ 10 tie 2/ 5 jacket 3/ 4 socks undershorts pants shoes watch shirt belt tie jacket

Strongly Connected Components Given directed graph G = (V, E): A strongly connected component (SCC) of G is a maximal set of vertices C  V such that for every pair of vertices u, v  C, we have both u  v and v  u.

The Transpose of a Graph GT = transpose of G GT is G with all edges reversed GT = (V, ET), ET = {(u, v) : (v, u)  E} If using adjacency lists: we can create GT in (V + E) time 1 2 5 4 3 1 2 5 4 3

Finding the SCC Observation: G and GT have the same SCC’s u and v are reachable from each other in G  they are reachable from each other in GT Idea for computing the SCC of a DAG G = (V, E): Make two depth first searches: one on G and one on GT 1 2 5 4 3 1 2 5 4 3

Example a b c d e f g h DFS on the initial graph G 13/ 14 11/ 16 1/ 10 8/ 9 b 16 e 15 a 14 c 10 d 9 g 7 h 6 f 4 12/ 15 3/ 4 2/ 7 5/ 6 a b c d e f g h DFS on GT: start at b: visit a, e start at c: visit d start at g: visit f start at h Strongly connected components: C1 = {a, b, e}, C2 = {c, d}, C3 = {f, g}, C4 = {h}

Component Graph The component graph is a DAG b c d e f g h a b e c d f g h The component graph GSCC = (VSCC, ESCC): VSCC = {v1, v2, …, vk}, where vi corresponds to each strongly connected component Ci There is an edge (vi, vj)  ESCC if G contains a directed edge (x, y) for some x  Ci and y  Cj The component graph is a DAG

Notations Extend notation for d (starting time) and f (finishing time) to sets of vertices U  V: d(U) = minuU { d[u] } (earliest discovery time) f(U) = maxuU { f[u] } (latest finishing time) C1 C2 a b c d d(C2) f(C2) =1 =10 d(C1) f(C1) =11 =16 13/ 14 11/ 16 1/ 10 8/ 9 12/ 15 3/ 4 2/ 7 5/ 6 e f g h C3 C4 d(C3) f(C3) =2 =7 d(C4) f(C4) =5 =6