Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Union-Find ve Minimum Spanning Tree: Kruskal ile Ağ Kurmak
Union-Find, path compression ve union by rank ile "bu iki eleman aynı grupta mı?" sorusunu pratikte sabit sürede cevaplar; naive versiyon uzun zincirde 4.300 kat yavaş. C# ile DisjointSet yazıyor, ortak e-posta ve telefon üzerinden duplicate müşteri hesaplarını birleştiriyor, Kruskal ile ofisler arası en ucuz fiber ağını kuruyor ve Prim ile aynı sonucu doğruluyoruz.
Shortest Path: Dijkstra, PriorityQueue ve A*'a Kısa Bakış
Negatif olmayan ağırlıklı graph'ta en ucuz yolu Dijkstra bulur: PriorityQueue'da decrease-key olmadığı için lazy deletion ile O((V + E) log V). Şehirler arası kargo ağında Dijkstra'yı adım adım izliyor, path reconstruction yapıyor, negatif ağırlıkta yanlış sonucu ve Bellman-Ford'u gösteriyor, A*'ın 200 × 200 depo grid'inde 33.600 yerine 1.845 hücreyle aynı yolu bulduğunu ölçüyoruz.
Topological Sort ve Cycle Detection: Bağımlılık Sırası ve Kahn Algoritması
Topological sort, bir DAG'in vertex'lerini her bağımlılık bağımlısından önce gelecek şekilde O(V + E)'de sıralar; Kahn algoritması in-degree ve queue ile, DFS ise üç renkle çalışır. C# ile ikisini yazıyor, seed data ve build sırası üretiyor, cycle yolunu raporluyor, EF Core'un SaveChanges'ta aynı algoritmayı kullandığını ve DI container'ın circular dependency hatasını gerçek çıktıyla gösteriyoruz.
Graph Temelleri: Adjacency List, BFS ve DFS ile Gezinmek
Seyrek graph'lar adjacency list ile tutulur ve BFS en az adımı O(V + E)'de bulur; 5.000 vertex'lik graph'ta adjacency matrix ile BFS 46 kat yavaş. C# ile generic Graph, BFS mesafe ve yol, recursive ve iterative DFS, connected component ve grid flood fill yazıyor; visited'ı queue'dan çıkarırken işaretlemenin 2.000 yerine 2 milyon ekleme yaptığını gerçek çıktıyla gösteriyoruz.