İçerik: Graflar Tanım Gösterim Dolaşma Algoritmaları

Slides:



Advertisements
Benzer bir sunumlar
8. SINIF 3. ÜNİTE BİLGİ YARIŞMASI
Advertisements

Ders İçeriği Ağaç Veri Modeli Tanım ve Gerçekleştirim İkili Ağaç
Prof.Dr.Şaban EREN Yasar Üniversitesi Fen-Edebiyat Fakültesi
HARİTA OKUMA BİLGİSİ SORU 1: Haritaların alt kenar çizgisi hangi anayönü gösterir?    A. Doğu   B.  Batı  C.  Güney   D.  Kuzey   SORU 2: Haritanın sol.
ALİ YALKIN İLKÖĞRETİM OKULU 2/A SINIFI ÇALIŞMA SAYFASI
Değişkenler ve bellek Değişkenler
NOKTA, DOĞRU, DOĞRU PARÇASI, IŞIN, DÜZLEMDEKİ DOĞRULAR
YAPAY ZEKA Yrd. Doç. Dr. Rembiye Kandemir
Saydığımızda 15 tane sayı olduğunu görürüz.
T.C. İNÖNÜ ÜNİVERSİTESİ Arapgir Meslek YÜKSEKOKULU
Eğitim Programı Kurulum Aşamaları E. Savaş Başcı ASO 1. ORGANİZE SANAYİ BÖLGESİ AVRUPA BİLGİSAYAR YERKİNLİĞİ SERTİFİKASI EĞİTİM PROJESİ (OBİYEP)
Ders İçeriği Bağlantılı Liste İki Yönlü Bağlantılı Liste
YAPAY ZEKA ÖDEV - 1 Kenan KILIÇASLAN Trakya Üniversitesi Fen Bilimleri Enstitüsü Makina Mühendisliği Doktora Programı.
AVL-Ağaçları (Trees).
Silme Anahtar hedefi silmek için, x yaprağında buluruz ve sonra sileriz. Dikkat edilmesi gereken iki durum vardır. (1) Hedef bazı iç düğümlerde bir anahtar.
Graf.
İkili Ağaçlar İkili Arama Ağaçları
Algoritmalar DERS 7 Dengeli Arama Ağaçları Kırmızı-siyah ağaçlar
Algoritmalar En kısa yollar I En kısa yolların özellikleri
İçerik Ön Tanımlar En Kısa Yol Problemi Yol, Cevrim(çember)
MIT503 Veri Yapıları ve algoritmalar En önemli graf problemleri
Verimli Ders Çalışma Teknikleri.
İkili Arama Ağaçları (Binary Search Trees) BST
Algoritmalar Ders 14 En Kısa Yollar II Bellman-Ford algoritması
Bölüm 3 – Yapısal Programlama
En Küçük Yol Ağacı (Minimum Spanning Tree)
ÖRNEKLEM VE ÖRNEKLEME Dr.A.Tevfik SÜNTER.
Çizge Algoritmaları.
ARALARINDA ASAL SAYILAR
Gün Kitabın Adı ve Yazarı Okuduğu sayfa sayısı
Algoritmalar DERS 4 Çabuk sıralama Böl ve fethet Bölüntüler
Problem Çözme Ve Problem Çözme Stratejileri Ödevi Cihan GÖÇ
Çİ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ı
Operatörler ve Denetim Yapıları
Veri Yapıları ve Algoritmalar
Tam sayılarda bölme ve çarpma işlemi
GRAF TEORİSİ Ders 1 TEMEL KAVRAMLAR.
HABTEKUS' HABTEKUS'08 3.
BTP102 VERİTABANI YÖNETİM SİSTEMLERİ 1
Bölüm 2 – Kontrol Yapıları
Akış Kontrol Mekanizmaları
Chapter 6: Using Arrays.
Ek-2 Örnekler.
ÇİZGELERİN GÖSTERİMİ Yılmaz KILIÇASLAN.
M.Fatih AMASYALI Yapay Zeka Ders Notları
GRAPHS ÖZET.
BİL551 – YAPAY ZEKA BİLGİSİZ ARAMA YÖNTEMLERİ
Arama ile sorun çözme Ders 3.
SÜLEYMAN DEMİREL ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Çocuklar,sayılar arasındaki İlişkiyi fark ettiniz mi?
İSMİN HALLERİ.
Toplama Yapalım Hikmet Sırma 1-A sınıfı.
ÇOK DEĞİŞKENLİ FONKSİYONLARDA
CEBİRSEL İFADELERİ ÇARPANLARINA AYIRMA
BTP102 VERİTABANI YÖNETİM SİSTEMLERİ 1
Çizge Algoritmaları Ders 2.
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,
Ağırlıksız ikili eşleştirme
Ç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.
Çizge gösterimleri G = (V, E) çizgesinin komşuluk listesi gösterimi
Derinlik öncelikli arama (Depth-first Search(DFS))
İ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.
Çizge Algoritmalari 5. ders.
NİŞANTAŞI ÜNİVERSİTESİ
Çizge Algoritmalari 6. ders.
Sunum transkripti:

İçerik: Graflar Tanım Gösterim Dolaşma Algoritmaları Yönlendirilmiş ve yönlendirilmemiş graflar Ağırlıklı graflar Gösterim Komşuluk Matrisi Komşuluk Listesi Dolaşma Algoritmaları BFS (Breath First Search) DFS (Depth-First Search)

Graflar Graf, matematiksel anlamda, düğümlerden ve bu düğümler arasındaki ilişkiyi gösteren kenarlardan oluşan bir kümedir. Bağlantılı listeler ve ağaçlar grafların özel örneklerindendir. Bir G grafı D ile gösterilen düğümlerden (node veya vertex) ve K ile gösterilen kenarlardan (Edge) oluşur. Her kenar iki düğümü birleştirir. Her kenar, iki bilgi (Düğüm) arasındaki ilişkiyi gösterir ve (u,v) şeklinde ifade edilir. (u,v) iki düğümü göstermektedir.

Graflar - Örnek G = (D, K) grafı aşağıda verilmiştir. D = {A, B, C, D, E, F} K = {(A, B), (A, D), (B, C), (C, D), (C, E), (D, E)} B C A F D E

Uygulama Alanları Elektronik devreler Ulaşım Ağları Bilgisayar Ağları 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

Graflar – Kenar Türleri Yönlendirilmiş Kenar (Directed Edge) Sıralı kenar çiftleri ile ifade edilir. (u, v) ile (v, u) aynı değildir. İlk kenar orijin ikinci kenar ise hedef olarak adlandırılır. Yönlendirilmemiş Kenar (Undirected Edge) Sırasız kenar çiftleri ile ifade edilir. (u, v) ile (v, u) aynı şeyi ifade ederler. Yönlendirilmiş Graf (Directed Graphs) Bütün kenarları yönlendirilmiş graftır. Digraph şeklinde de ifade edilirler. Yönlendirilmemiş Graf (Undirected Graphs) Hiçbir kenarı yönlendirilmemiş graftır.

Graflar - Tanımlar Komşu(Adjacent): Eğer (u, v) ∈ K ise u ve v düğümleri komşudur. (A, B) komşudur. (B, D), (C, F) komşu değildir. B C A F D E

Graflar - Tanımlar Graf kenarları üzerinde ağırlıkları olabilir. Eğer kenarlar üzerinde ağırlıklar varsa bu tür graflara ağırlıklı/maliyetli graf (Weighted Graphs) denir. Ağırlık uygulamadan uygulamaya değişir. Şehirler arasındaki uzaklık. Routerler ararı bant genişliği

Graf Gösterimi Zaman ve yer karmaşıklığı aşağıdaki her iki ifade ile de ölçülür. Düğüm sayısı = |D| = n Kenar sayısı = |K| = k Graf gösterimi için iki farklı yol vardır. Komşuluk matrisi Komşuluk listesi

Komşuluk Matrisi Gösterimi 1 (u,v) K’nın içindeyse 0 diğer M(u, v) = A B C D E F 1 A B C D F E Yer? O(n2)

Komşuluk Matrisi Gösterimi Komşuluk Matrisi Gösterimi (Ağırlıklı Graf): ağırlık(u, v) (u, v) K’nın içindeyse ∞ diğer M(u, v) = A B C D E F ∞ 10 5 20 30 50 15 20 A B C D F E 10 30 50 5 15

Komşuluk Listesi Gösterimi B D A E C A A B C D F E B C D E b F a Yer? n*a + 2*b*k = O(n+2k)

Komşuluk Listesi Gösterimi Komşuluk Listesi (Yönlendirilmiş Graflar) A B D B C B C A F C D E D E D E b E F a Yer? n*a + b*k = O(n+k)

Graf Üzerinde Dolaşma Graf üzerinde dolaşma grafın düğümleri ve kenarları üzerinde istenen bir işi yapacak veya bir problemi çözecek biçimde hareket etmektir. Graf üzerinde dolaşma yapan birçok yaklaşım yöntemi vardır. En önemli iki tanesi aşağıda listelenmiştir. BFS (Breadth First Search) Yöntemi DFS (Depth First Search ) Yöntemi

Graf Üzerinde Dolaşma Breath-First Search (BFS): Başlangıç düğümünden başla ve tüm komşuları ziyaret et. Daha sonra komşunun komşularını ziyaret et. Başlangıç düğümünden başlayıp dışa doğru dalga gibi. Depth-First Search (DFS) Bir düğümden başla düğümün bir kenarında o kenar üzerinde gidilebilecek en uzak düğüme kadar sürdür. Geri gel ve düğer kenarı dene Tüm düğümler gezilene kadar devam et.

Breath-First Search (BFS) 3 2 1 s Verilen G = (D, K) grafında, “s” başlangıç düğümünden başla ve s den erişilebilecek düğümleri belirle. Bulunan ama işlenmeyen düğümler sınır düğümleridir (gri düğümler). Sınır düğümlerine sırası ile gidilir ardından bunların komşuları bulunur ve bu komşulara gidilir.

Breath-First Search (BFS) İşlem adımları: Seçilen düğümün tüm komşuları sırasıyla seçilir ve ziyaret edilir. Her komşu kuyruk içerisine atılır. Komşu kalmadığında Kuyruk içerisindeki ilk düğüm alınır ve 2. adıma gidilir.

Breath-First Search (BFS) Sonuçların gösterilmesi Her bir v düğümü için, d[v]’yi (s ve v arasındaki uzaklığı) kaydetmemiz gerekiyor. “v” ve “s” düğümleri arasındaki uzaklık, “s” den “v” ye giden yol üzerindeki minimum düğüm sayısıdır. Dolayısıyla d[s] = 0 Ayrıca aile (parent) düğümünü de tutmamız gerekiyor. v den s ye giderken yoldaki ilk düğüm pred[s] = 0 (pred  predecessor  önceki)

BFS – Gerçekleştirimi 2 1 2 2 s s s 1 2 2 1 2 Başlangıçta tüm düğümler (başlangıç düğümü hariç) beyaza boyanır. Anlamı henüz bulunmadı demektir. Düğüm bulunduğu zaman, griye boyanıyor. Gri düğüm işlendiği zaman siyaha boyanıyor.

BFS – Gerçekleştirimi Arama da kuyruk (FIFO) kullanılıyor. 2 1 2 2 s s s 1 2 2 1 2 Arama da kuyruk (FIFO) kullanılıyor. Ayrıca dizi de kullanılır. color[u], u düğümünün rengini tutar Beyaz, gri veya siyah pred[u], u düğümünün önceki düğümünü tutar u’yu bulan düğüm d[u], s den u’ya uzaklık

BFS Gerçekleştirimi O(n) Çalışma Zamanı? O(n + k) n kez O(1) O(k) BFS(G, s){ for each u in D- {s} { // İlk değerleri atama color[u] = white; d[u] = SONSUZ; pred[u] = NULL; } //end-for color[s] = GRAY; // s’nin ilk değerlerini atama d[s] = 0; pred[s] = NULL; K = {s}; // s’yi kuyruğa koy while (K boş değilken){ u = Cikart(K); // u bir sonraki düğüm for each v in Adj[u] { if (color[v] == white){ // Eğer v bulunmadı ise color[v] = gray; // … Bulundu şeklinde işaretle d[v] = d[u] + 1; // … uzaklığı ayarla pred[v] = u; // … öncekini ayarla Ekle(v); //… kuyruğa ekle } //end-if color[u] = black; // u ile işimiz bitti } //end-while } //end-BFS O(n) Çalışma Zamanı? O(n + k) n kez O(1) O(k)

BFS - Örnek t s x w v u ∞ 1 K: v, x t s x w v u ∞ 1 2 K: x, u, w u v w K: v, x t s x w v u ∞ 1 2 K: x, u, w u v w ∞ 1 ∞ ∞ 2 2 ∞ 1 ∞ t s x K: s t s x w v u ∞ 1 2 K: u, w t s x w v u 3 1 2 K: w, t t s x w v u 3 1 2 K: 3

BFS Ağacı s u v w v 1 x 1 2 1 2 u w 2 2 3 1 t x t 3 BSF nin önceki işaretçisini izleyerek ters ağaç oluşturulabilir. BFS ağacı için bir çok olasılık vardır. Aramanın nerede başladığı ve düğümlerin hangi sıraya göre kuyruğa eklendiği önemlidir.

Depth-First Search (DFS) Bir v düğümüne gidildikten sonra v düğümünün 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.

DFS - Örnek a b c f g d e DFS(a) ağacı b b b a a a f f f c c c g g g d

DFS - Gerçekleştirim 4 tane yardımcı dizi kullanıyoruz. Yönlendirilmiş G = (V, E) grafının verildiğini düşünelim. Aynı algoritma yönlendirilmemiş graflar için de çalışır. 4 tane yardımcı dizi kullanıyoruz. color[u] White – bulunmamış Gray – bulunmuş fakat işlenmemiş Black – işlenmiş pred[u], u’dan önceki eleman u’yu bulan eleman İki tane zaman tutucu d[u]: Düğümün bulunma zamanı BSF deki uzaklık ile karıştırmayın. f[u]: Düğümün işlenme zamanı

DFS - Gerçekleştirim DFS işlem adımları Önce bir başlangıç düğümü seçilir ve ziyaret edilir. Seçilen düğümün bir komşusu seçilir ve ziyaret edilir. 2. adımda ziyaret edilecek komşu kalmayıncaya kadar devam edilir. Komşu kalmadığında tekrar geri dönülür ve önceden ziyaret edilmiş düğümler için adım 2 ve 3 tekrarlanır.

DFS – Gerçekleştirim O(n) Çalışma Zamanı? O(n + k) O(k) DFS(G, s){ for each u in V { // İlk değerleri atama color[u] = white; pred[u] = NULL; } //end-for time = 0; for each u in V if (color[u] == white) // Ziyaret edilmemiş düğüm bulundu DFSVisit(u); // Yeni bir aramaya başla } // end-DFS DFSVisit(u){ // u üzerinde yeni bir arama başlat color[u] = gray; // u’yu ziyaret edildi şeklinde işaretle d[u] = ++time; for each v in Adj[u] { if (color[v] == white){ // Eğer komşu v bulunmadı ise pred[v] = u; // … önceki olarak kaydet DFSVisit(v); // …v’yi ziyaret et } //end-if color[u] = black; // u ile işimiz bitti. f[u] = ++time; } //end-while } //end-DFSVisit O(n) Çalışma Zamanı? O(n + k) O(k)

DFS - Örnek d a e C d f b a f b C e F B c g c g C 11/14 1/10 2/5 6/9 12/13 e F B c g c 3/4 7/8 g C

Parantez Yapısı Zaman tutucu ile güzel bir yapı oluşturulabilir. 11/14 d 1/10 a d f b 2/5 6/9 C 12/13 e F B b f e c 3/4 7/8 g C c g 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Zaman tutucu ile güzel bir yapı oluşturulabilir. d[u] sol parantezi “(“ f[u] sağ parantezi “)“ temsil eder.