Graflar (Graphs)
Transkript
Graflar (Graphs)
Graflar (Graphs) z z z z z z Graf gösterimi Uygulama alanları Graf terminolojisi Depth first dolaşma Breadth first dolaşma Topolojik sıralama Yrd.Doç.Dr. M. Ali Akcayol G. Ü. Bilgisayar Mühendisliği Bölümü Graflar z Graflar bilgi parçaları arasındaki ilişkileri gösterirler. z Bir G graf V ile gösterilen node’lardan (verteks) ve E ile gösterilen kenarlardan (Edge) oluşur. Her kenar iki node’u birleştirir. z Her node bir bilgi parçasını gösterir. z Her kenar iki bilgi arasındaki ilişkiyi gösterir ve (u, v) şeklinde şeklinde ifade edilir. (u, v) iki node’u gösterir. node edge G. Ü. Bilgisayar Mühendisliği Bölümü 1 Graflar Uygulama alanları Elektronik devreler Baskı devre kartları (PCB) Entegre devreler Ulaşım ağları Otoyol ağı Havayolu ağı Bilgisayar ağları Lokal alan ağları İnternet Veritabanları Entity-relationship diyagram G. Ü. Bilgisayar Mühendisliği Bölümü Graflar Örnek gösterim: z Aşağıdaki şekilde herbir node üç karakter kodlanmış olarak bir havaalanını göstermektedir. z Herbir kenar iki node arasındaki uçuş rotasını ifade etmekte ve iki node arasındaki uzaklığı ifade etmektedir. 2555 337 HNL 43 17 LAX 1233 849 ORD 802 SFO 1843 DFW 7 138 2 14 PVD LGA 1120 10 99 MIA G. Ü. Bilgisayar Mühendisliği Bölümü 2 Graflar Kenar türleri: Directed edge (Yönlendirilmiş kenar) z z z z Sıralı node çiftleriyle ifade edilir. (u, v) ile (v, u) aynı değildir. İlk node orijin ve ikinci node ise hedef olarak adlandırılır. Örnek: iki nokta arasındaki uçuş. Undirected edge (Yönlendirilmemiş kenar) z z z Sırasız node çiftleriyle ifade edilir. (u, v) ile (v, u) aynı şeyi ifade ederler. Örnek: uçuş rotası Yönlendirilmiş graf z z Bütün kenarları yönlendirilmiş graftır. Yönlendirilmemiş graf z z Hiçbir kenarı yönlendirilmemiş graftır. G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Terminoloji) Komşu (Adjacent) z Eğer (u, v) ∈ E ise u ve v node’ları komşudur. v (u, v) u u ve v komşudur v ve w komşu değildir k w G. Ü. Bilgisayar Mühendisliği Bölümü 3 Graflar (Terminoloji - devam) Yol ve basit yol z Bir yol v1 den vk ya kadar sıralı node’ları (v1, v2), (v2, v3), …, (vk-1, vk) kenarlarıyla birbirine bağlar. z Bir basit yolda her bir node sadece bir kez bulunur. v2 v1 - v2, v3, v4, v2, v1 bir yoldur. v3 v5 v4 - v2, v3, v4, v5 bir basit yoldur. G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Terminoloji - devam) Cycle ve basit cycle z Bir cycle bir yoldur ve başlama ve bitiş node’ları aynıdır. z Bir basit cycle’da başlangıç ve bitiş node’ları hariç tüm node’lar sadece bir kez bulunur. v2 v1 - v2, v3, v4, v5 , v3, v2 bir cycle’dır v4 v3 v5 - v2, v3, v4, v2 bir basit cycle’dır G. Ü. Bilgisayar Mühendisliği Bölümü 4 Graflar (Terminoloji - devam) Bağlı ve bağlı olmayan graf z z Eğer bir graftaki tüm node’lar arasında en azından bir yol varsa bağlı graftır. Eğer bir grafta herhangi iki node arasında yol bulunmuyorsa bağlı olmayan graftır. v2 v1 v3 v5 v4 bağlı graf G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Terminoloji - devam) Bağlı ve bağlı olmayan graf (devam) v7 v3 v1 v8 v2 v4 v5 v6 v9 bağlı olmayan graf G. Ü. Bilgisayar Mühendisliği Bölümü 5 Graflar (Terminoloji - devam) Bağlı eleman (connected component) z Eğer bir graf bağlı değilse, bağlı alt gruplara göre parçalanabilir. Bu parçaların herbirine bağlı eleman denir. v2 v1 v4 v7 v3 v5 v6 v8 v9 G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Terminoloji - devam) Komple graf z Eğer bir graftaki her iki node arasında bir kenar varsa komple graftır. 3 node ile komple graf 4 node ile komple graf G. Ü. Bilgisayar Mühendisliği Bölümü 6 Graflar (Terminoloji - devam) Alt graf z G (V, E) şeklinde gösterilen bir grafın alt grafı H(U, F) ise U ⊆ V ve F ⊆ E olur. v2 v1 v2 v3 v5 v4 v3 v5 v4 H G G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Terminoloji - devam) Ağırlıklandırılmış graf z Eğer G (V, E) şeklinde gösterilen bir grafta her E kenarına bir ağırlık değeri atanmış ise ağırlıklandırılmış graf olarak adlandırılır. İstanbul Ankara 2000 1000 3500 İzmir G G. Ü. Bilgisayar Mühendisliği Bölümü 7 Graflar (Terminoloji - devam) Multigraf z Multigraf iki node arasında birden fazla kenara sahip olan veya bir node’un kendi kendisini gösteren kenara sahip olan graftır. Multiple edge Self edge G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Terminoloji - devam) z z z z a,b ve d kenarları V node’unun kenar bağlantılarıdır. X node’unun derecesi 5’ tir. h ve i çoklu (multiple) kenarlardır. j kendi kendisine döngüdür (self loop). a U V b d h Z X c e W j i g f Y G. Ü. Bilgisayar Mühendisliği Bölümü 8 Graflar (Terminoloji - devam) Yönlendirilmiş graf (Directed graph - Digraph) z Eğer G (V, E) şeklinde gösterilen bir grafta her E kenarı bir yöne (directed edge) sahipse G yönlendirilmiş graftır. İstanbul Ankara 1000 Directed edge 2000 3500 İzmir G G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Oluşturulması) z Komşu matrisi (Adjacency matrix) Graf iki boyutlu matrisle gösterilir. z Komşu listesi (Adjacency list) Graph n elemanlı m tane bağlı listeyle gösterilir. n ilgili node’a komşu olan node sayısını, m ise toplam node sayısını ifade eder. G. Ü. Bilgisayar Mühendisliği Bölümü 9 Graflar (Oluşturulması-Komşu Matrisi) z Yönlendirilmiş graf için komşu matrisi Matris[i][j] = 1 0 if (vi, vj)∈E if (vi, vj)∉E 2 3 4 5 v1 v2 v3 v4 v5 v2 v1 1 v3 v5 v4 G 1 v1 0 1 0 0 0 2 v2 0 0 0 1 0 3 v3 0 1 0 1 0 4 v4 0 0 0 0 0 5 v5 0 0 1 1 0 G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Oluşturulması-Komşu Matrisi) z Ağırlıklandırılmış ancak yönlendirilmemiş graf için komşu matrisi Matris[i][j] = w(vi, vj) ∞ v1 v2 5 4 G v3 2 3 8 v4 if (vi, vj)∈E or (vj, vi)∈E otherwise 7 v5 1 2 3 4 5 v1 v2 v3 v4 v5 1 v1 ∞ 5 ∞ ∞ ∞ 2 v2 5 ∞ 2 4 ∞ 3 v3 ∞ 2 ∞ 3 7 4 v4 ∞ 4 3 ∞ 8 5 v5 ∞ ∞ 7 8 ∞ G. Ü. Bilgisayar Mühendisliği Bölümü 10 Graflar (Oluşturulması-Komşu Matrisi) Örnek 1 1 2 3 1 2 3 1 0 0 1 2 0 1 1 2 3 1 0 0 1 2 3 4 3 4 1 0 1 1 0 2 1 0 0 0 3 1 0 0 0 4 0 0 0 0 G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Oluşturulması-Komşu Listesi) z Yönlendirilmiş graf için komşu listesi 1 v1 → v2 v2 v1 v3 v5 v4 2 v2 → v4 3 v3 → v2 → v4 4 v4 5 v5 → v3 → v4 G G. Ü. Bilgisayar Mühendisliği Bölümü 11 Graflar (Oluşturulması-Komşu Listesi) z Yönlendirilmiş ve ağırlıklandırılmış graf için komşu listesi v2 v1 5 4 v4 v3 2 3 8 7 v5 1 2 3 4 5 G v1 v2 v3 v4 v5 → → → → → v2(5) v1(5) v2(2) v2(4) v3(7) → → → → v3(2) → v4(4) v4(3) → v5(7) v3(3) → v5(8) v4(8) G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Oluşturulması-Komşu Listesi) Örnek 1 1 2 3 1 Æ 3 2 Æ 2 3 Æ 1Æ2 2 1 2 3 4 Æ Æ Æ Æ 4 3 2 Æ3 1 1 G. Ü. Bilgisayar Mühendisliği Bölümü 12 Graflar (Komşu Matrisi-Komşu Listesi) z Avantajları dezavantajları Komşu matrisi z Çok fazla alana ihtiyaç duyar. z Daha az hafızaya ihtiyaç duyulması için sparse matris tekniklerinin kullanılması gerekir. z Herhangi iki node’un komşu olup olmadığına çok kısa sürede karar verilebilir. Komşu listesi z Bir node’un tüm komşularına hızlı bir şekilde ulaşılır. z Daha az alana ihtiyaç duyar. z Oluşturulması matrise göre daha zor olabilir. G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Dolaşma - Traversal) z Depth first dolaşma z Bir v node’una gidildikten sonra v node’unun bir komşusu seçilir ve ziyaret edilir. Ardından onun bir komşusu seçilir ve ard arda komşu seçimi yapılarak devam edilir. Komşu kalmadığında geri dönülür. z Breadth first dolaşma z Bir v node’una gidildikten sonra v node’unun sırasıyla tüm komşu node’larına gidilir ardından tüm komşu node’ların komşu node’larına gidilir. G. Ü. Bilgisayar Mühendisliği Bölümü 13 Graflar (Dolaşma - Traversal) z Depth first arama işlem adımları Önce bir başlangıç node’u seçilir ve ziyaret edilir. Seçilen node’un bir komşusu seçilir ve ziyaret edilir. 3. 2.adım ziyaret edecek komşu kalmayıncaya kadar tekrar edilir. 4. Komşu kalmadığında tekrar geri dönülür ve önceki ziyaret edilmiş node’lar için adım 2 ve 3 tekrar edilir. 1. 2. G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Dolaşma - Traversal) z Depth first arama 0 1. 1 2. 4 2 3 5 7 4. 5. 6 8 3. s node’unu seç visit s // örn. ekrana yaz for each edge <s, U> // U komşu node if U is not visit DFS(G, U) 9 G. Ü. Bilgisayar Mühendisliği Bölümü 14 Graflar (Dolaşma - Traversal) z Depth first arama 0 3 1 4 2 3 0 5 7 6 9 8 G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Dolaşma - Traversal) z Depth first arama 0 0 3 1 7 4 2 3 5 7 6 8 9 G. Ü. Bilgisayar Mühendisliği Bölümü 15 Graflar (Dolaşma - Traversal) z Depth first arama 0 0 3 1 7 4 2 3 8 5 7 6 9 8 G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Dolaşma - Traversal) z Depth first arama 0 0 3 1 7 4 2 3 8 9 5 7 6 8 9 G. Ü. Bilgisayar Mühendisliği Bölümü 16 Graflar (Dolaşma - Traversal) z Depth first arama 0 0 3 1 7 4 2 3 9 5 7 8 6 6 9 8 G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Dolaşma - Traversal) z Depth first arama 0 0 3 1 7 4 2 3 8 9 5 6 2 7 6 8 9 G. Ü. Bilgisayar Mühendisliği Bölümü 17 Graflar (Dolaşma - Traversal) z Depth first arama 0 0 3 1 7 4 2 3 8 9 5 6 2 7 6 5 9 8 G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Dolaşma - Traversal) z Depth first arama 0 0 3 1 7 4 2 3 8 9 5 6 2 7 6 8 5 9 G. Ü. Bilgisayar Mühendisliği Bölümü 18 Graflar (Dolaşma - Traversal) z Depth first arama 0 0 3 1 7 4 2 3 8 9 5 7 6 2 6 5 4 9 8 G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Dolaşma - Traversal) z Depth first arama 0 0 3 1 7 4 2 3 8 9 5 6 2 7 6 8 5 9 4 1 G. Ü. Bilgisayar Mühendisliği Bölümü 19 Graflar (Dolaşma - Traversal) z Depth first arama 0 0 3 1 7 4 2 3 8 9 5 6 2 7 6 5 4 1 9 8 G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Dolaşma - Traversal) z Depth first arama 0 0 3 1 7 4 2 3 8 9 5 6 2 7 6 8 5 9 4 1 G. Ü. Bilgisayar Mühendisliği Bölümü 20 Graflar (Dolaşma - Traversal) z Depth first arama 0 0 3 1 7 4 2 3 8 9 5 6 2 7 6 5 4 1 9 8 G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Dolaşma - Traversal) z Depth first arama 0 0 3 1 7 4 2 3 8 9 5 6 2 7 6 8 5 9 4 1 G. Ü. Bilgisayar Mühendisliği Bölümü 21 Graflar (Dolaşma - Traversal) z Depth first arama 0 0 3 1 7 4 2 3 8 9 5 6 2 7 6 8 5 9 4 1 G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Dolaşma - Traversal) z Breadth first arama işlem adımları 1. Breadth first arama ağaçlardaki level order aramaya benzer. 2. Seçilen node’un tüm komşuları sırayla seçilir ve ziyaret edilir. 3. Her komşu queue içerisine atılır. 4. Komşu kalmadığında Queue içerisindeki ilk node alınır ve 2.adıma gidilir. G. Ü. Bilgisayar Mühendisliği Bölümü 22 Graflar (Dolaşma - Traversal) z Breadth first arama 0 0 1 4 2 3 5 7 6 9 8 0 G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Dolaşma - Traversal) z Breadth first arama 0 0 1 3 1 4 2 3 2 5 7 6 9 8 123 G. Ü. Bilgisayar Mühendisliği Bölümü 23 Graflar (Dolaşma - Traversal) z Breadth first arama 0 0 1 3 4 2 3 7 8 2 1 6 5 7 6 9 8 68712 G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Dolaşma - Traversal) z Breadth first arama 0 0 1 3 4 2 3 7 8 2 6 4 1 5 5 7 6 9 8 456871 G. Ü. Bilgisayar Mühendisliği Bölümü 24 Graflar (Dolaşma - Traversal) z Breadth first arama 0 0 1 3 4 2 3 7 8 2 6 4 1 5 5 7 6 9 8 45687 G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Dolaşma - Traversal) z Breadth first arama 0 0 1 3 4 2 3 7 8 2 6 4 1 5 5 7 6 9 8 4568 G. Ü. Bilgisayar Mühendisliği Bölümü 25 Graflar (Dolaşma - Traversal) z Breadth first arama 0 0 1 3 4 2 3 7 6 4 1 5 9 5 7 8 2 6 9 8 9456 G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Dolaşma - Traversal) z Breadth first arama 0 0 1 3 4 2 3 5 7 7 8 2 6 4 1 5 9 6 9 8 9456 G. Ü. Bilgisayar Mühendisliği Bölümü 26 Graflar (Dolaşma - Traversal) z Breadth first arama 0 0 1 3 4 2 3 7 6 4 1 5 9 5 7 8 2 6 9 8 945 G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Dolaşma - Traversal) z Breadth first arama 0 0 1 3 4 2 3 5 7 7 8 2 6 4 1 5 9 6 9 8 94 G. Ü. Bilgisayar Mühendisliği Bölümü 27 Graflar (Dolaşma - Traversal) z Breadth first arama 0 0 1 3 4 2 3 7 6 4 1 5 9 5 7 8 2 6 9 8 9 G. Ü. Bilgisayar Mühendisliği Bölümü Graflar (Dolaşma - Traversal) z Breadth first arama 0 0 1 3 4 2 3 5 7 7 8 2 6 4 1 5 9 6 8 9 G. Ü. Bilgisayar Mühendisliği Bölümü 28 Graflar (Toplojik sıralama) z Topolojik sıralama z Toplojik sıralama bir graftaki tüm node’ların doğrusal sıralamasıdır. z Node’lar arasında öncelik sırası gözönüne alınır. b a c d e Örnekteki grafta topolojik sıralama aşağıdaki gibi yapılabilir. z 1- a, c, b, e, d 2- c, a, b, e, d a b c e d G. Ü. Bilgisayar Mühendisliği Bölümü Graflar Haftalık Ödev: z 10 tane şehir için bir graf yapısı oluşturunuz. Her şehirden komşu şehirlere olan uzaklık kenar ağırlıkları 200 olarak kullanılacaktır. 10 z Herhangi bir şehirden başlayarak tüm şehirleri dolaşmak için gerekli olan algoritmayı depth first dolaşmayla yapınız. 1 90 200 5 110 230 6 125 50 8 4 75 160 220 7 80 2 3 95 100 9 G. Ü. Bilgisayar Mühendisliği Bölümü 29
Benzer belgeler
Graf Üzerinde Dolaşma
a,b ve d kenarları V node’unun kenar bağlantılarıdır.
X node’unun derecesi 5’ tir.
h ve i çoklu (multiple) kenarlardır.
j kendi kendisine döngüdür (self loop).