Örneklerle Veri Yapısındaki Grafik Türleri

⚡ Akıllı Özet

Veri yapılarındaki grafikler, yapılarına göre yönlü, yönsüz, ağırlıklı, döngülü, döngüsüz, tam, bağlantılı, iki parçalı, Euler ve Hamilton grafikleri gibi ailelere sınıflandırılan, doğrusal olmayan köşe ve kenar koleksiyonlarıdır.

  • 📐 Tanım: G = (V, E) grafı, V'nin köşe kümesi ve E'nin köşe çiftlerini birbirine bağlayan kenar kümesi olduğu doğrusal olmayan bir yapıdır.
  • ➡️ Yön: Yönlü grafikler, sabit bir kaynak ve hedef ile oklarla gösterilen kenarları kullanırken, yönsüz grafikler her kenar boyunca çift yönlü seyahate izin verir.
  • 🇧🇷 Ağırlık: Ağırlıklı grafiklerde her kenara sayısal bir maliyet atanırken, ağırlıksız grafiklerde tüm kenarlar eşit maliyetli bağlantılar olarak ele alınır.
  • 🔁 Döngüler: Döngülü grafikler bir veya daha fazla döngü içerir; Yönlendirilmiş Döngüsüz Grafik (DAG) döngüleri yasaklar ve zamanlama ile topolojik sıralamayı mümkün kılar.
  • 🔗 Bütünlük: Tam grafikler her köşe çiftini birbirine bağlar, bağlantılı grafikler herhangi iki köşe arasında bir yol sağlar ve boş grafiklerin hiç kenarı yoktur.
  • 🧩 Özel Tipler: İki parçalı, Euler, Hamilton, çoklu, döngülü ve önemsiz grafiklerin her biri, köşelerin ve kenarların nasıl düzenleneceğine dair belirli bir kural getirir.

Veri Yapısındaki Grafik Türleri

Grafik, köşelerden ve kenarlardan oluşan doğrusal olmayan bir veri yapısıdır. Köşeler bilgi veya veriyi içerirken, kenarlar bir çift köşe arasında bağlantı görevi görür.

Düğümlerin ve kenarların konumuna bağlı olarak grafiklerin birden fazla türü olabilir. İşte bazı önemli grafik türleri:

Yönlendirilmiş grafik

Yönlendirilmiş Grafiğin kenarları, yönü belirten oklar içerir. Ok, kenarın nereye doğru yöneldiğini veya nerede bittiğini belirler. İşte yönlendirilmiş grafiğe bir örnek.

Yönlendirilmiş grafik

Yönlendirilmiş grafik

  • A noktasından D noktasına gidebiliriz.
  • Ancak, kenar A'dan D'ye doğru yöneldiği için D düğümünden A düğümüne gidemeyiz.
  • Grafiğin ağırlıkları olmadığından, A noktasından D noktasına seyahat etmek, D'den F'ye seyahat etmekle aynı maliyete sahip olacaktır.

Yönsüz Grafik

Yönlendirilmemiş bir grafik, işaretçi içermeyen kenarlar içerir. Bu, iki köşe arasında ters yönde seyahat edebileceğimiz anlamına gelir. İşte yönlendirilmemiş bir grafiğin basit bir örneği.

Yönsüz Grafik

Yönsüz Grafik

Yukarıdaki Grafikte,

  • A noktasından B noktasına gidebiliriz.
  • B noktasından A noktasına da geçebiliriz.
  • Kenarlar yön içermez.

Bu, sonlu sayıda köşeye ve ağırlığı olmayan kenarlara sahip yönsüz bir grafın örneğidir.

Ağırlıklı Grafik

Kenarlarında ağırlık veya maliyet bulunan bir grafiğe ağırlıklı grafik denir. Sayısal değer genellikle bir köşeden diğerine hareket maliyetini temsil eder. Hem yönlü hem de yönsüz grafiklerin kenarlarında ağırlıklar olabilir. İşte ağırlıklı bir grafiğe (yönlü) örnek.

Ağırlıklı Yönlendirilmiş Grafik

Ağırlıklı Yönlendirilmiş Grafik

  • A'dan B'ye bir kenar var ve ağırlığı 5, yani A'dan B'ye gitmek bize 5'e mal olacak.
  • A noktası B noktasını işaret ediyor, ancak bu grafikte B noktasının A noktası üzerinde doğrudan bir kenarı yok. Bu nedenle, B noktasından A noktasına gidemeyiz.
  • Ancak, A'dan F'ye gitmek istiyorsak, birden fazla yol var. Bu yollar ADF ve ABF'dir. ADF'nin maliyeti (10+11) veya 21 olacaktır.
  • Burada, ABF yolu (5+15) veya 20'ye mal olacak. Burada yoldaki her kenarın ağırlığını ekliyoruz.

İşte ağırlıkları olan yönsüz bir graf örneği:

Ağırlıklı Yönsüz Grafik

Ağırlıklı Yönlendirilmemiş Grafik

Burada kenarın ağırlığı vardır ancak yönü yoktur. Yani, A noktasından D noktasına seyahat etmenin 10 dolara mal olacağı ve bunun tersinin de geçerli olacağı anlamına gelir.

Çift Yönlü Grafik

Çift yönlü ve yönsüz grafiklerin ortak bir özelliği vardır. Bu özellik şöyledir:

  • Genel olarak, yönsüz bir grafikte iki köşe arasında yalnızca bir kenar bulunabilir.

Örneğin:

Çift Yönlü Grafik

  • Burada A'dan D'ye veya D'den A'ya gitmek 10 dolara mal olacak.
  • Çift Yönlü Grafikte iki köşe arasında iki kenara sahip olabiliriz.

İşte bir örnek:

Çift Yönlü Grafik

Çift Yönlü Grafik

A'dan D'ye seyahatin maliyeti 17, D'den A'ya seyahatin maliyeti ise 12'dir. Dolayısıyla, yönsüz bir grafikte iki farklı ağırlık atayamayız.

Sonsuz Grafik

Bir grafik sonsuz sayıda kenar ve düğüm içerecektir. Eğer bir grafik sonsuz ve aynı zamanda bağlantılı bir grafik ise, sonsuz sayıda kenar da içerecektir. Burada, genişletilmiş kenarlar, bu düğümlere daha fazla kenarın bağlanabileceği anlamına gelir. İşte sonsuz bir grafın örneği:

Sonsuz Grafik

Sonsuz Grafik

Boş Grafik

Boş bir grafik, yalnızca düğümler veya köşeler içerir, kenarları yoktur. Eğer V köşeleri ve E kenarları temsil ediyorsa, G = (V, E) grafiği boş grafik olur; eğer kenar sayısı E sıfır ise. İşte boş bir grafiğe örnek:

Boş Grafik

Boş Grafik

Önemsiz Grafik

Bir grafik veri yapısı, yalnızca bir köşe veya düğüm içeriyorsa ve kenarları yoksa, önemsiz (trivial) olarak kabul edilir. İşte önemsiz bir grafiğe örnek:

Önemsiz Grafik

Çoklu Grafik

Bir graf, iki köşe arasında birden fazla kenar bulunduğunda veya bir köşenin bir döngüye sahip olması durumunda çoklu graf olarak adlandırılır. Grafik Veri Yapılarında "Döngü" terimi, aynı düğüme veya köşeye işaret eden bir kenarı ifade eder. Çoklu graf yönlü veya yönsüz olabilir. İşte bir Çoklu Graf örneği:

Çoklu Grafik

B'den A'ya iki kenar vardır. Ayrıca, E düğümü kendi kendine döngüye sahiptir. Yukarıdaki grafik, kenarlarında ağırlık bulunmayan yönlü bir grafiktir.

Grafiği Tamamla

Bir graf, her köşesinin diğer tüm köşelerle yönlü veya yönsüz kenarları varsa tam graf olarak adlandırılır. Toplam V sayıda köşe olduğunu ve her köşenin tam olarak V-1 kenarı olduğunu varsayalım. Bu graf, tam graf olarak adlandırılır. Bu tür graflarda, her köşe kenarlar aracılığıyla diğer tüm köşelere bağlıdır. İşte beş köşeli bir tam graf örneği:

Grafiği Tamamla

Resimde de görebileceğiniz gibi, toplam düğüm sayısı beştir ve tüm düğümlerin tam olarak dört kenarı vardır.

Bağlı Grafik

Bir graf, bir düğümden veya köşeden başlayıp o düğümden tüm düğümlere gidebiliyorsak, bağlantılı graf olarak adlandırılır. Bunun için, her düğüm veya köşe çifti arasında en az bir kenar bulunmalıdır. İşte bağlantılı bir graf örneği:

Bağlı Grafik

Yukarıdaki bağlantılı grafiğe dair bazı açıklamalar aşağıdadır:

  • C ve F arasında kenar olmadığını varsayarsak, A'dan G'ye gidemeyiz. Ancak, C'den F'ye olan kenar, belirli bir düğümden herhangi bir düğüme gitmemizi sağlar.
  • Tam bir Grafik, Bağlantılı bir Grafiktir çünkü verilen Grafikteki bir düğümden başka herhangi bir düğüme geçebiliriz.

Döngüsel Grafik

Bir grafikte bir veya daha fazla döngü bulunuyorsa, bu grafiğe döngüsel grafik denir. İşte döngüsel bir grafiğe örnek:

Döngüsel Grafik

Burada A, B ve C köşeleri bir döngü oluşturuyor. Bir grafikte birden fazla döngü bulunabilir.

Yönlendirilmiş Asiklik Grafik (DAG)

Bir grafın içinde döngü yoksa, bu graf Yönlendirilmiş Döngüsüz Grafik (DAG) olarak adlandırılır. DAG, hesaplamalar yapılırken önemlidir. Topolojik Sıralama veya yürütme sırasını bulmak için. Yönlendirilmiş Döngüsüz Grafik (DAG), zamanlama sistemleri oluşturmak veya kaynakların bağımlılığını taramak vb. için de önemlidir. Ancak yukarıdaki Grafik içinde herhangi bir döngü bulunmamaktadır. İşte basit bir Yönlendirilmiş Döngüsüz Grafik (DAG) örneği:

Yönlendirilmiş Asiklik Grafik (DAG)

Döngü Grafiği

Döngü grafiği, döngüsel grafikle aynı şey değildir. Döngü grafiğinde, her düğümün tam olarak iki kenarı bağlıdır, yani her düğümün tam olarak iki derecesi vardır. İşte bir döngü grafiği örneği:

Döngü Grafiği

İki Parçalı Grafik

Bu tür Grafikler İki parçalı grafikler, köşelerin iki kümeye atandığı özel grafik türleridir. İki parçalı bir grafik şu kurala uymalıdır:

  • Köşe noktalarının iki kümesi birbirinden farklı olmalıdır; yani tüm köşe noktaları iki gruba veya kümeye ayrılmalıdır.
  • Aynı kümedeki köşeler hiçbir kenar oluşturmamalıdır.

İki Parçalı Grafik

Euler Grafiği

Bir grafik veri yapısı, tüm köşelerin çift sayıda dereceye sahip olması durumunda Euler grafiği olarak kabul edilir. Köşe derecesi terimi, belirli bir köşeye giden veya o köşeden çıkan kenarların sayısını ifade eder. İşte bir Euler grafiği örneği:

Euler Grafiği

Tüm köşelerin dereceleri çifttir. A, D, E ve H köşelerinin dereceleri ikidir. Burada C düğümünün derecesi dörttür, bu da çifttir.

Hamilton Grafiği

Hamilton grafı, belirli bir düğümden başlayarak aynı düğümü tekrar ziyaret etmeden veya aynı kenarı kullanmadan tüm düğümleri ziyaret edebileceğiniz bağlantılı bir grafiktir. Bu tür bağlantılı grafiklere "Hamilton grafı" denir. Verilen grafın Hamilton grafı olup olmadığını doğrulamak için ziyaret ettiğiniz yola Hamilton yolu denir. İşte basit bir Hamilton grafı örneği:

Hamilton Grafiği

Bu görüntüde, yukarıdaki Grafikteki herhangi bir düğümün tüm köşelerini ziyaret edebiliriz. Yollardan biri olabilir ADCHBEAyrıca bir Hamilton döngüsü bulmak da mümkündür. Bir Hamilton döngüsü aynı tepe noktasında başlar ve biter. Dolayısıyla, Hamilton döngüsü şu şekilde olacaktır: ADCHBA.

SSS

Grafik, köşelerden (düğümlerden) ve kenarlardan (bağlantılardan) oluşan doğrusal olmayan bir veri yapısıdır. Köşeler veri depolar ve kenarlar köşe çiftlerini birbirine bağlayarak yolları, sosyal bağları, bağımlılıkları ve daha fazlasını modellemek için kullanılan ağlar oluşturur.

Yönlü grafikler, kaynaktan hedefe doğru oklarla gösterilen kenarlar kullanır ve seyahati o yönle sınırlandırır. Yönsüz grafikler ise ok içermeyen kenarlar kullanır ve bağlı düğümler arasında her iki yönde de seyahate izin verir.

Yönlendirilmiş Döngüsüz Grafik (DAG), döngü içermeyen yönlendirilmiş bir grafiktir. DAG'ler, görev planlaması, derleme sistemleri, paket bağımlılık çözümü ve geçerli bir topolojik düzen gerektiren her türlü iş akışı için yaygın olarak kullanılır.

Ağırlıklı bir grafik, her kenara mesafe, zaman veya maliyeti temsil eden sayısal bir ağırlık atar. Dijkstra gibi en kısa yol algoritmaları ve ağ yönlendirme protokolleri, en verimli yolu bulmak için ağırlıklı grafikleri kullanır.

Tam bir grafikte her köşe çifti arasında bir kenar bulunur. Bağlantılı bir grafikte ise her köşe çifti arasında yalnızca bir yol olması yeterlidir. Her tam grafik bağlantılıdır, ancak her bağlantılı grafik tam değildir.

İki parçalı grafikler, köşeleri yalnızca iki küme arasında kenarlar bulunan iki ayrık kümeye ayırır. İşçileri işlere, öğrencileri derslere veya araç çağırma sürücülerini yolculara atamak gibi eşleştirme problemlerini modellerler.

Grafik sinir ağları, dolandırıcılık tespiti, ilaç keşfi ve öneri gibi görevler için makine öğrenimini grafik yapılı verilere uygular. Bilgi grafikleri yapay zeka soru-cevaplama sistemlerine güç verirken, hesaplama grafikleri derin öğrenmedeki her ileri ve geri adımı tanımlar.

Evet. GitHub Copilot ve ChatGPT gibi yapay zeka destekli kopyalama araçları, çoğu dilde BFS, DFS, Dijkstra ve topolojik sıralama için şablon kodlar üretir. Geliştiricilerin yine de üretim kodu için uç durumları, döngü yönetimini ve karmaşıklığı doğrulamaları gerekir.

Bu yazıyı şu şekilde özetleyin: