730 likes | 1.25k Views
MIT503 Veri Yapıları ve algoritmalar G raf algoritma sorunları. Y. Doç. Yuriy Mishchenko. İleri veri yapıları - graflar. Ders planı Graflar ile ilgili temel kavramları En öneml i graflar ile ilgili algoritma sorunları Graf arama sorunu. Graflar Temel Kavramları.
E N D
MIT503 Veri Yapıları ve algoritmalarGraf algoritma sorunları Y. Doç. Yuriy Mishchenko
İleri veri yapıları - graflar Ders planı • Graflar ile ilgili temel kavramları • En önemli graflar ile ilgili algoritma sorunları • Graf arama sorunu
Graflar Temel Kavramları Graflar genel ilişkiler temsil etmek için kullanılır • Düğümler (nesneler) ve arasındaki bağlantılar (ilişkiler) ile gösterilir • Genel bir ilişkide, nesnelerin arasında bağlantıları temsil eder • Bağlantılar için, sayısal değerleri verilebilir, • Bağlantılar yönlü yada yönsüz olabilir 0.5 0.25 0.77 0.33 1.0 0.5 0.17 1.0 0.33 0.15
Graflar Temel Kavramları İlişkileri temsil edilmesi: • Genel ilişkilerde, nesneler ve onların ilişkileri var • Benzer şekilde, graflarda düğümler ve bağlantılar(bazen kenarlar denir) var • Dügümler=nesneler, bağlantılar/kenarlar=ilişkiler • Graflar, çoğunlukla nokta ve çizgiler yada oklar kullanarak görsel şekilde temsil edilirler
Graflar Temel Kavramları Bir graf: Düğüm yada Nesne • Öğrencilerin arkadaşlığı temsili: • Düğüm = Öğrenci • Bağlantı = Arkadaşlık Bağlantı yada İlişki
Graflar Temel Kavramları • İlişkiler için sayısal değerler atanabilir • Böyle graflaraağırlıklı grafdiyoruz • İlişkilerin sayısal değerlerine bağlantı ağırlığı denir
Graflar Temel Kavramları Bir graf: Düğüm yada Nesne 0.5 • Öğrencilerin ağırlıklı arkadaşlık grafı: • Dügme = öğrenci • Bağlantı = arkadaşlık • Ağırlık = Arkadaşlık gücü 0.25 0.77 0.33 1.0 0.5 0.17 1.0 0.33 0.15 Bağlantı yada İlişki
Graflar Temel Kavramları • Çok sık yönlü ilişkiler ile çalışmalıyız • Yönlü ilişki içeren graflara, yönlü graf diyoruz • Yönlü ilişkileri, graflarda yönlü oklarla temsil edilir
Graflar Temel Kavramları Bir graf: Düğüm yada Nesne 0.5 • Öğrencilerin aşk ilişki grafı: • Düğüm = öğrenci • Bağlantı = aşk • Ağırlık = aşkın güçü 0.25 0.77 0.33 1.0 0.5 0.17 1.0 0.33 0.15 Bağlantı yada İlişki
Graflar Temel Kavramları Graflar çok genel bir kavram ve alettir; • Çok genel durumda, nesne-nesne ilişkileri bir graf şekilinde temsil edilebilir • Graflar, • Nesneleri düğümler ile temsil eder • İlişkileri bağlantılar ile temsil eder • İlişkiler için, sayısal değerleri atayabilir • İlişkiler için, yön atayabilir
Temel graflar kavramları Patikalar ve Döngüler: Okları takip eden bir zincire, “patika” denir (path) Patika Aynı düğümde başlayan ve duran patikalara, “döngü” denir (cycle) Döngü düğüm bağlantı
Graflar Temel Kavramları • Ağaçlar, grafların özel durumudur (önce) • Döngü içermeyen graflar, ağaçlardır • Ağaçların algoritma biliminde uygulamalarını önce gördük (veri yada arama ağaçları)
Graflar Temel Kavramları Graf: Döngü var döngü
Graflar Temel Kavramları Ağaç: Döngü yok
Graflar Temel Kavramları Graflar ve ağaçlar farklı şekilde gösterilebilir, yanı yapısı değişmemişse =
Graflar Temel Kavramları Ağaçların temel kavramları (hatırlatma) Ağaç kökü Ana/çocuk düğümler Ağaç yaprakları Ağaç seviyesi Ağaç yüksekliği
Graflar Temel Kavramları • Ağaçta sadece en çok iki çocuklu düğümler varsa, böyle agaçlara ikili ağaçdiyoruz Üç çocuk ikili ağaç değil ikili ağaç
Graflar Temel Kavramları • Grafların bilgisayar temsili: • Bitişiklik matrisiyle: • Nesnelerin hepsine 1’dan N’ye kadar bir numarı atıyoruz • i. nesne j. nesneye bağlantı için, bir matrisin ij. pozisyonuna “1” (yada bağlantı ağırlığını) yazıyoruz • Bu şekilde, NxN matris oluşturuyoruz • Bu bitişiklik matrisidir • Yönsüz graflar için, bitişiklik matrisi simetrik olmalıdır: hem ij hem ji bağlantı konulur
Graflar Temel Kavramları Yönlü graf bitişiklik matrisi 1 2 3 4 5 6 7 8
Graflar Temel Kavramları Yönsüz graf bitişiklik matrisi 1 2 3 4 5 6 7 8
Graflar Temel Kavramları • Çoğunlukla grafların bitişiklik matrisi seyrektir: bağlantı az ve çoğunlukla sıfırlar var • Bu durumda graf bitişiklik matris yerine nesne ve bağlantı listesiyle daha verimli belirtilir: • Nesneler, V={“1”,”2”,...} • Bağlantılar, E={“12”,”2 3”,”1 3”,…} • Bu şekilde, graf bir nesne listesi ve bir bağlantı listesi ile yazılır, yanı (V,E)-çifti
Graflar Temel Kavramları • Bu şekilde, bilgisayar biliminde graflar bağlantılı listelerle uygulanır • Düğümlerde, bir nesne ve bağlanmış nesnelere işaretçiler (bağlantı liste) var • Düğüm == • Düğümün adı • Herhangi diğer veriler • Çocuklarına işaretçiler, bağlantılar listesi a b c d e g f h
Graflar Temel Kavramları Yönlü graf: V={a,b,c,d,e,g,f,h} - nesneler a E={ab,bc,cd,de,ea,cg,gf,fc,hc,eh}- bağlantılar b c d e g f h
Graflar Temel Kavramları V={a,b,c,d,e,g,f,h} E={ab,bc,cd,de,ea,cg,gf,fc,hc,eh} a b c Böyle temsil daha verimli ve ekonomik... d e g f h
Graflar Temel Kavramları V={a,b,c,d,e,g,f,h} E={ab,bc,cd,de,ea,cg,gf,fc,hc,eh} a b c Ama kolay sorular için bile açık bir cevap bulunamaz... d e g f h
Graflar Temel Kavramları V={a,b,c,d,e,g,f,h} E={ab,bc,cd,de,ea,cg,gf,fc,hc,eh} Mesela, aşağıdaki bağlantı listesine bakarak, b nesnesinden e nesnesine bir patika var mı ?
Graflar Temel Kavramları V={a,b,c,d,e,g,f,h} E={ab,bc,cd,de,ea,cg,gf,fc,hc,eh} a b c Mesela, aşağıdaki bağlantı listesine bakarak, b nesnesinden e nesnesine bir patika var mı ? d e g Basit sorular için bile akılı algoritma oluşturmak gerekiyor f h
Graflar Algoritma Sorunları • Ama grafların çok genel olduğu nedeniyle böyle algoritmalar birçok hayat durumlarında uygulanabilir ve önemli çözümleri sağlayabilir;
Graflar Algoritma Sorunları • Bir üretme süreci durumlar (düğümler) ve adımlar (bağlantılar) ile temsil edilebilir • Üretme süreci tasarımı ve optimizasyon bu şekilde graf problemi olarak temsil edilebilir
Graflar Algoritma Sorunları • Karmaşık elektrik devreler elemanlar (düğümler) ve elektrik bağlantılar (bağlantılar) ile temsil edilebilir • Karmaşık elektrik devrelerin tasarımı ve optimizasyon graf problemi olarak temsil edilebilir
Graflar Algoritma Sorunları • Ticaret ağı şubeler (düğümler) ve tedarik zincir (bağlantılar) ile temsil edilebilir • Ticaret ağı optimizasyon ve çalıştırması graf problemi olarak temsil edilebilir
Graflar Algoritma Sorunları • Ülkenin elektrik tedarik ağı elektrik santralı ve tüketici (düğümler) ve elektrik bağlantılar (bağlantılar) ile temsil edilebilir • Elektrik ağı optimizasyon ve çalıştırması graf problemi olarak temsil edilebilir
Graflar Algoritma Sorunları • Graf araması: • (Graf bağlantı listesi kullanarak) bağlantılar takip eden belirli nesne bulmak lazım • (Graf bağlantı listesi kullanarak) Kökünden nesnelerin uzaklığı hesaplamak lazım • Grafların strüktürü incelemek lazım • Derinlikte graf araması ana fikri: • Bir nesneyle başlayarak grafın bir dalını takip edip nesneleri incelemek lazım; • Sonuna geldikten sonra, aynı dalıyla geri dönüp herhangi ilk uygun nesnesinden yukarıdakiye devam etmek lazım • Enine aramanın ana fikri: • Bir nesnesiyle başlayarak herhangi inceleyen nesnelerin bütün çocuklarını öncelikle şekilde incelemek lazım
Graflar Algoritma Sorunları • En kısa patika • Bağlantı ağırlıklarına göre, iki nesnelerin arasında en kısa patikayı bulmak lazım (örneğin, süreç optimizasyon) • Minimum yayılan ağaç • Bağlantı ağırlıklarına göre, graf nesnelerinin hepsini içeren minimum ağırlık ağacını (döngüsüz graf) bulmak lazım (örneğin, elektrik tedarik ağı) • Maximum akım problemi • Bağlantı ağırlıklarına göre, grafdaki maximum akış sistemini bulmak lazım (örneğin, şehirin yol ağı analizi) • Maximal kesim problemi • Bağlantı ağırlıklarına göre, optimum bir graf bölünmesini bulmak lazım (sosial ağı toplulukları bulma)
Graf Arama Sorunu • Graf arama, amacı: • Bağlantıları takip eden, belirli bir nesne bulmak lazım • Bağlantılara göre, özel bir nesneden bütün diğer nesnelerinin uzaklığını bulmak lazım • Grafın yapısını incelemek lazım • Derinlikte arama ve enine arama algoritmalar kullanılır
Graf Arama Sorunu • Derinlikte arama - ana fikir: • Belirli bir nesne ile (kök ile) başlanır • Bu nesneden, mümkün olduğunca bir dalı takip edilir • Dalının son nesnesine ulaştıktan sonra, aynı dalda geri dönüp her hangi bir önceki nesneden 2. basamağıtekrarlanır • vb
Graf Arama Sorunu Derinlikte arama: A ile başlıoruz Bir dalı takip ediyoruz a b Geçiş düğümleri:a→b→c→d→e→a c d e g f h
Graf Arama Sorunu Derinlikte arama: A ile başlıoruz Son yeni düğümü ulaştıktan sonra, geri dönüyoruz, önceki ilk uygun nesneden tekrarlıyoruz a b c d e g Geçiş düğümleri:a→b→c→d→e→a a←e e→h→c f h
Graf Arama Sorunu Derinlikte arama: A ile başlıoruz Son yeni düğümü ulaştıktan sonra, geri dönüyoruz, önceki ilk uygun nesneden tekrarlıyoruz a b c d e g Geçiş düğümleri:a→b→c→d→e→a a←e e→h→c f h
Graf Arama Sorunu Derinlikte arama: Aile başlıoruz A’yı ulaştıktan sonra, geri dönüyoruz a b c c’yi ulaştıktan sonra geri dönüyoruz; burada, geri giderken c’ye kadar gitmeliyiz ! d e g Geçiş düğümleri:a→b→c→d→e→a a←e e→h→c c←h←e←d←c c→g→f→c f h
Graf Arama Sorunu Derinlikte arama: Aile başlıoruz A’yı ulaştıktan sonra, geri dönüyoruz a b c c’yi ulaştıktan sonra geri dönüyoruz; burada, geri giderken c’ye kadar gitmeliyiz ! d e g Geçiş düğümleri:a→b→c→d→e→a a←e e→h→c c←h←e←d←c c→g→f→c f h
Graf Arama Sorunu Derinlikte arama: Aile başlıoruz A’yı ulaştıktan sonra, geri dönüyoruz a b c c’yi ulaştıktan sonra geri dönüyoruz; burada, geri giderken c’ye kadar gitmeliyiz ! d e g Geçiş düğümleri:a→b→c→d→e→a a←e e→h→c c←h←e←d←c c→g→f→c -- Bittirdik! f h
Graf Arama Sorunu Derinlikte arama: Evde: a Bu sürecine tekrar bakın Bu algoritma için sözde kod ve akış şemasını yazmayı deneyin b c d e g f h
Graf Arama Sorunu • Derinlikte aramaya göre bağlantı sınıflandırması: • Bu algoritmada bütün geçen bağlantılara derinlikte arama ağacı bağlantıları denir • Bu bir ağaç çünkü gecen bağlantılar arasında hiç döngü olamaz • Ağaç bağlantılarından diğer bağlantılara çapraz bağlantıları denir • Ağaçtaki ilerlerken geçen bağlantılara ileri bağlantıları denir • Ağaçtaki geri giderken geçen bağlantılara geri bağlantıları denir
Graf Arama Sorunu • Derinlikte arama bir yayılan ağaç oluşturur • Nesnelerin hepsini sağlayan bir ağacı yanı döngüsüz graf • Örneğin, ülkede elektrik ağı oluşturmak için böyle bütün tüketicilere ulaşan yayılan ağacı bulmak lazım • Böyle ağı derinlikte ağacı şekilde oluşturulabilir
Graf Arama Sorunu Derinlikte arama yayılan ağacı: a b c d e g f h
Graf Arama Sorunu • Derinlikte arama diğer kullanım: grafın bağlı parçaları bulma • Grafın bağlı parçaları nedir? • Bir nesneye her hangi sürekli bir patika ile bağlanan bütün nesneler, grafın bağlı parçasını oluşturur • Farklı bağlı parçaların nesneler arasında hiç sürekli patika olamaz
Graf Arama Sorunu Bir Graf:
Graf Arama Sorunu Grafın bağlı parçaları: Bağlı parça II Bağlı parça I
Graf Arama Sorunu Ne için kullanılır: • Grafın bağlı parçalarına, toplulukları belirler (facebookta arkadaşlık yada bilgi toplulukları, vb) • Grafın bağlı parçalarına, bağımsız sistem bileşenleri belirler (üretme surecinin bağımsız altsüreçleri, makine tasarımın bağımsız modülleri, doğal sistemlerin bölümleri, vb) • Bağlı parçalarını ayrı ayrı depolanabilir, ve ayrı ayrı incelenebilir yada çalıştırılabilir