Düğümler ve Kenarlarla Modelleme - Detaylı Anlatım
Temel kavramlar
Graf türleri
Kenar ağırlıkları
Gerçek dünya
Graf (Graph), düğümler (vertices/nodes) ve bunları birbirine bağlayan kenarlardan (edges) oluşan bir veri yapısıdır. Matematiksel olarak G = (V, E) şeklinde gösterilir.
Düğümlere tıklayarak seçin, sürükleyerek konumlarını değiştirin
Kenarların yönü yoktur. A—B demek hem A'dan B'ye hem B'den A'ya gidilebilir demektir.
Kenarların yönü vardır. A→B demek sadece A'dan B'ye gidilebilir demektir, tersi ayrı kenar gerektirir.
Her kenarın bir ağırlık/maliyet değeri vardır. Mesafe, süre, maliyet gibi bilgileri taşır.
Kenarlarda ağırlık yoktur (veya hepsi 1 kabul edilir). Sadece bağlantı var/yok bilgisi.
Döngüsüz, bağlantılı graf. N düğüm için tam olarak N-1 kenar vardır.
Önceki bölümlerde BST olarak gördük!
Yönlü ve döngüsüz graf. Görev planlaması, derleyici optimizasyonu, Git commit geçmişi.
Topological Sort için gerekli!
Düğümler iki kümeye ayrılabilir ve kenarlar sadece farklı kümeler arasında.
Eşleştirme problemleri için kullanılır.
Her düğüm çifti arasında kenar var. N düğümlü tam grafta N(N-1)/2 kenar vardır.
En yoğun graf türü.
Graf algoritmaları seçerken grafın yoğunluğu çok önemlidir:
| Özellik | Seyrek Graf (Sparse) | Yoğun Graf (Dense) |
|---|---|---|
| Kenar Sayısı | |E| ≈ O(|V|) | |E| ≈ O(|V|²) |
| Temsil Yöntemi | Adjacency List ✅ | Adjacency Matrix ✅ |
| Gerçek Dünya | Sosyal ağlar, yol ağları | Küçük ağlar, tam bağlı sistemler |
Facebook'ta 2 milyar kullanıcı var ama herkes herkesle arkadaş değil. Ortalama arkadaş sayısı ~200. Bu da toplam kenar sayısının 2×10⁹ × 200 / 2 ≈ 2×10¹¹ olduğu anlamına gelir. Tam grafta ise 2×10¹⁸ kenar olurdu - 10 milyon kat daha fazla!
Google Maps, Waze gibi uygulamalar grafları kullanarak en kısa yolu bulur. Dijkstra ve A* algoritmaları kullanılır.
Facebook arkadaş önerileri, influence detection, topluluk tespiti. BFS ile "6 derece ayrımı" hesaplanır.
PageRank algoritması web sayfalarını bir graf olarak modeller. Önemli sayfalar daha çok link alır.
NPC yol bulma (pathfinding), oyun haritaları, karar ağaçları. A* algoritması çok yaygın.
Protein etkileşim ağları, gen düzenleme ağları, salgın yayılım modelleri.
İnternet yönlendirme, ağ topolojisi optimizasyonu, spanning tree protokolleri.
| Problem | Algoritma | Zaman Karmaşıklığı |
|---|---|---|
| En kısa yol (ağırlıksız) | BFS | O(V + E) |
| En kısa yol (ağırlıklı, pozitif) | Dijkstra | O((V + E) log V) |
| Döngü tespiti | DFS | O(V + E) |
| Bağlantılı bileşenler | BFS/DFS | O(V + E) |
| Topological Sort | DFS (Kahn's) | O(V + E) |