Grafikler (Graphs): Yönlü ve Yönsüz Grafikler, Grafik Gösterimleri (VeriYapıları) - TEKNOLOJİ - BİLGİ MERKEZİ | Bilginin Merkezi

Grafikler (Graphs): Yönlü ve Yönsüz Grafikler, Grafik Gösterimleri (VeriYapıları) - TEKNOLOJİ - BİLGİ MERKEZİ | Bilginin Merkezi

Grafikler (Graphs): Yönlü ve Yönsüz Grafikler, Grafik Gösterimleri (VeriYapıları)


07 Ekim 2025

Grafikler, bilgisayar bilimlerinde ve matematikte, nesneler arasındaki ilişkileri modellemek için kullanılan temel bir veri yapısıdır. Sosyal ağlardan rota planlamaya, veri analizinden yapay zekaya kadar birçok alanda karşımıza çıkarlar. Bu makalede, graf kavramının temellerine, yönlü ve yönsüz grafiklerin arasındaki farklara ve grafiklerin bilgisayar ortamında nasıl temsil edildiğine detaylı bir şekilde değineceğiz.

Graf Nedir?

Bir graf, düğümler (vertices) ve bu düğümleri birbirine bağlayan kenarlardan (edges) oluşan bir yapıdır. Düğümler, temsil etmek istediğimiz nesneleri (örneğin, şehirler, kişiler, web sayfaları) temsil ederken, kenarlar bu nesneler arasındaki ilişkileri (örneğin, şehirler arasındaki yollar, kişiler arasındaki arkadaşlıklar, web sayfaları arasındaki bağlantılar) temsil eder.

Resmi olarak bir graf, G = (V, E) şeklinde tanımlanır. Burada V düğümlerin kümesini, E ise kenarların kümesini ifade eder.

Yönlü ve Yönsüz Grafikler

Grafikler, kenarlarının yönlü olup olmamasına göre iki ana kategoriye ayrılır: yönlü grafikler ve yönsüz grafikler.

Yönsüz Grafikler (Undirected Graphs)

Yönsüz bir grafikte, kenarlar düğümler arasında çift yönlü bir ilişkiyi temsil eder. Yani, bir kenar iki düğümü birbirine bağlar ve bu bağlantı her iki yönde de geçerlidir. Örneğin, iki şehir arasındaki bir yol, bu iki şehri bağlayan yönsüz bir kenar olarak modellenebilir. Şehir A'dan Şehir B'ye gidebiliyorsanız, aynı yolu kullanarak Şehir B'den Şehir A'ya da gidebilirsiniz.

Yönsüz bir grafikteki bir kenar (u, v) şeklinde gösterilir ve bu, u ile v düğümleri arasında bir bağlantı olduğunu belirtir. (u, v) ve (v, u) aynı kenarı ifade eder.

Yönlü Grafikler (Directed Graphs)

Yönlü bir grafikte, kenarlar düğümler arasında tek yönlü bir ilişkiyi temsil eder. Yani, bir kenar bir düğümden diğerine doğru bir yön belirtir. Örneğin, bir web sayfasından başka bir web sayfasına olan bir bağlantı, bu iki sayfayı bağlayan yönlü bir kenar olarak modellenebilir. Sayfa A'dan Sayfa B'ye bir bağlantı varsa, bu Sayfa B'den Sayfa A'ya da bir bağlantı olduğu anlamına gelmez.

Yönlü bir grafikteki bir kenar <u, v> şeklinde gösterilir ve bu, u düğümünden v düğümüne doğru bir bağlantı olduğunu belirtir. <u, v> ve <v, u> farklı kenarları ifade eder.

Grafik Gösterimleri (Veri Yapıları)

Grafikleri bilgisayar ortamında temsil etmek için farklı veri yapıları kullanılır. Bunlardan en yaygın olanları şunlardır:

Bitişiklik Matrisi (Adjacency Matrix)

Bitişiklik matrisi, bir grafı iki boyutlu bir dizi (matris) kullanarak temsil eder. Matrisin her bir satırı ve sütunu bir düğümü temsil eder. Matrisin (i, j) hücresindeki değer, i düğümünden j düğümüne bir kenar olup olmadığını gösterir. Eğer graf yönsüz ise, matris simetriktir (yani, A[i][j] = A[j][i]). Eğer graf yönlü ise, matris simetrik olmak zorunda değildir.

Avantajları:

  • İki düğüm arasında bir kenarın olup olmadığını kontrol etmek hızlıdır (sadece matriste ilgili hücreye bakmak yeterlidir).

Dezavantajları:

  • Bellek kullanımı yüksektir. n düğümlü bir graf için n2 boyutunda bir matris gereklidir. Bu, özellikle seyrek grafikler (yani, az sayıda kenara sahip grafikler) için verimsizdir.
  • Graf üzerinde döngü yapmak (tüm komşuları bulmak) zaman alıcı olabilir.

Bitişiklik Listesi (Adjacency List)

Bitişiklik listesi, bir grafı, her bir düğüm için komşu düğümlerin bir listesini tutarak temsil eder. Genellikle bir dizi veya liste kullanılır. Dizinin her bir elemanı bir düğümü temsil eder ve bu elemanın içerdiği liste, o düğüme komşu olan düğümleri içerir.

Avantajları:

  • Bellek kullanımı, bitişiklik matrisine göre daha düşüktür. Özellikle seyrek grafikler için çok daha verimlidir.
  • Graf üzerinde döngü yapmak (tüm komşuları bulmak) daha hızlıdır. Sadece ilgili düğümün listesini taramak yeterlidir.

Dezavantajları:

  • İki düğüm arasında bir kenarın olup olmadığını kontrol etmek, bitişiklik matrisine göre daha yavaştır. İlgili düğümün listesini taramak gerekebilir.

Grafik Algoritmaları

Grafikler üzerinde birçok farklı algoritma uygulanabilir. Bu algoritmalardan bazıları şunlardır:

  • Genişlik Öncelikli Arama (Breadth-First Search - BFS): Bir başlangıç düğümünden başlayarak, grafı katman katman gezen bir arama algoritmasıdır. Genellikle en kısa yolu bulmak için kullanılır.
  • Derinlik Öncelikli Arama (Depth-First Search - DFS): Bir başlangıç düğümünden başlayarak, bir dal boyunca mümkün olduğunca derine inen, sonra geri dönüp diğer dalları gezen bir arama algoritmasıdır. Genellikle döngüleri tespit etmek ve topolojik sıralama yapmak için kullanılır.
  • Dijkstra Algoritması: Bir başlangıç düğümünden diğer tüm düğümlere en kısa yolları bulan bir algoritmadır.
  • Floyd-Warshall Algoritması: Bir graf içindeki tüm düğüm çiftleri arasındaki en kısa yolları bulan bir algoritmadır.
  • Minimum Yayılma Ağacı (Minimum Spanning Tree - MST) Algoritmaları (Prim ve Kruskal): Bir graf içindeki tüm düğümleri birbirine bağlayan ve toplam kenar ağırlığı en az olan bir ağacı bulan algoritmalardır.

Grafiklerin Uygulama Alanları

Grafikler, birçok farklı alanda yaygın olarak kullanılır:

  • Sosyal Ağlar: Kullanıcılar ve kullanıcılar arasındaki ilişkiler bir graf olarak modellenebilir.
  • Rota Planlama: Şehirler ve şehirler arasındaki yollar bir graf olarak modellenebilir.
  • Web Arama Motorları: Web sayfaları ve sayfalar arasındaki bağlantılar bir graf olarak modellenebilir.
  • Veri Analizi: Veri noktaları ve noktalar arasındaki ilişkiler bir graf olarak modellenebilir.
  • Yapay Zeka: Durumlar ve durumlar arasındaki geçişler bir graf olarak modellenebilir (örneğin, oyun ağaçları).
  • Bilgisayar Ağları: Bilgisayarlar ve bilgisayarlar arasındaki bağlantılar bir graf olarak modellenebilir.
  • Moleküler Biyoloji: Moleküller ve moleküller arasındaki etkileşimler bir graf olarak modellenebilir.

Sonuç

Grafikler, nesneler arasındaki ilişkileri modellemek için güçlü ve çok yönlü bir araçtır. Yönlü ve yönsüz grafikler arasındaki farkı anlamak ve grafikleri bilgisayar ortamında etkili bir şekilde temsil etmek, birçok farklı problemi çözmek için önemlidir. Bitişiklik matrisi ve bitişiklik listesi gibi farklı veri yapıları, grafikleri temsil etmek için farklı avantajlar ve dezavantajlar sunar. Grafik algoritmaları, grafikler üzerinde çeşitli işlemleri gerçekleştirmek için kullanılır ve sosyal ağlardan rota planlamaya kadar birçok farklı alanda uygulamaları vardır.


Facebook X