1 / 71

MIT503 Veri Yapıları ve algoritmalar G raf algoritma sorunları

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ı.

Download Presentation

MIT503 Veri Yapıları ve algoritmalar G raf algoritma sorunları

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MIT503 Veri Yapıları ve algoritmalarGraf algoritma sorunları Y. Doç. Yuriy Mishchenko

  2. İleri veri yapıları - graflar Ders planı • Graflar ile ilgili temel kavramları • En önemli graflar ile ilgili algoritma sorunları • Graf arama sorunu

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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ı

  12. 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ı)

  13. Graflar Temel Kavramları Graf: Döngü var döngü

  14. Graflar Temel Kavramları Ağaç: Döngü yok

  15. Graflar Temel Kavramları Graflar ve ağaçlar farklı şekilde gösterilebilir, yanı yapısı değişmemişse =

  16. 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

  17. 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ç

  18. 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 ij hem ji bağlantı konulur

  19. Graflar Temel Kavramları Yönlü graf bitişiklik matrisi 1 2 3 4 5 6 7 8

  20. Graflar Temel Kavramları Yönsüz graf bitişiklik matrisi 1 2 3 4 5 6 7 8

  21. 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={“12”,”2  3”,”1  3”,…} • Bu şekilde, graf bir nesne listesi ve bir bağlantı listesi ile yazılır, yanı (V,E)-çifti

  22. 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

  23. 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

  24. 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

  25. 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

  26. 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ı ?

  27. 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

  28. 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;

  29. 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

  30. 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

  31. 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

  32. 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

  33. 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

  34. 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)

  35. 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

  36. 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

  37. 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

  38. 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

  39. 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

  40. 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

  41. 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

  42. 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

  43. 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

  44. 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

  45. 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

  46. Graf Arama Sorunu Derinlikte arama yayılan ağacı: a b c d e g f h

  47. 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

  48. Graf Arama Sorunu Bir Graf:

  49. Graf Arama Sorunu Grafın bağlı parçaları: Bağlı parça II Bağlı parça I

  50. 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

More Related