Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
22 yazı bulundu #algoritmalar
Dynamic Programming 2: Edit Distance, LCS ve Knapsack ile Gerçek Problemler
Bilgisayar Bilimi Temelleri SERİ 22

Dynamic Programming 2: Edit Distance, LCS ve Knapsack ile Gerçek Problemler

İki boyutlu DP tabloları iki string'in ya da bir bütçenin prefix'lerini tutar: Levenshtein ile "Bunu mu demek istediniz?", LCS ile git diff'le aynı çıktıyı veren bir diff, 0/1 knapsack ile bütçe sınırlı kampanya seçimi. C# ile üçünü yazıyor, eşikli Levenshtein'ın 20 kat hızlandığını ölçüyor, tek satırlık knapsack'te döngü yönü tuzağını gösteriyor ve seriyi bir pattern karar tablosuyla kapatıyoruz.

8 Kas 2026 14 dk 2
Dynamic Programming 1: Memoization, Tabulation ve Alt Problemleri Tanımak
Bilgisayar Bilimi Temelleri SERİ 21

Dynamic Programming 1: Memoization, Tabulation ve Alt Problemleri Tanımak

Dynamic programming, tekrar eden alt problemleri bir kez çözüp saklayarak exponential bir hesabı polinom zamana indirir: naive Fibonacci F(40) için 331 milyon çağrı yapar, memoization 79. C# ile memoization, tabulation ve O(1) bellek versiyonlarını ölçüyor, beş adımlı tarifle climbing stairs, house robber ve coin change'i çözüyor, yanlış memo key'ini ve stack overflow'u gerçek çıktıyla gösteriyoruz.

8 Kas 2026 12 dk 2
Greedy Algoritmalar: Ne Zaman İşe Yarar, Ne Zaman Yanıltır
Bilgisayar Bilimi Temelleri SERİ 20

Greedy Algoritmalar: Ne Zaman İşe Yarar, Ne Zaman Yanıltır

Greedy algoritma her adımda o an en iyi görünen seçimi yapar ve yalnız greedy choice property varsa doğrudur: en erken biten toplantıyı seçmek optimaldir, {1, 3, 4} paralarıyla 6 için en büyük parayı seçmek değildir. C# ile activity selection, min-heap ile oda sayısı ve Huffman coding yazıyor, exchange argument'i açıklıyor ve greedy'yi bir hakemle karşılaştırıp karşı örnek arıyoruz.

8 Kas 2026 11 dk 2
Backtracking: Permutation, Subset ve Sudoku ile Arama Ağacını Budamak
Bilgisayar Bilimi Temelleri SERİ 19

Backtracking: Permutation, Subset ve Sudoku ile Arama Ağacını Budamak

Backtracking, choose, explore ve unchoose adımlarıyla bütün seçenekleri sistemli dener; asıl gücü çözüme varamayacak dalları erken budamaktır: 8-Queens'te 19 milyon node yerine 2.057. C# ile yield return kullanan permutation, subset ve combination üreticileri, N-Queens, en kısıtlı hücreden başlayan bir Sudoku solver ve kurallı bir ürün konfigüratörü yazıyoruz.

8 Kas 2026 13 dk 2
Union-Find ve Minimum Spanning Tree: Kruskal ile Ağ Kurmak
Bilgisayar Bilimi Temelleri SERİ 18

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.

8 Kas 2026 12 dk 2
Shortest Path: Dijkstra, PriorityQueue ve A*'a Kısa Bakış
Bilgisayar Bilimi Temelleri SERİ 17

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.

8 Kas 2026 11 dk 2
Topological Sort ve Cycle Detection: Bağımlılık Sırası ve Kahn Algoritması
Bilgisayar Bilimi Temelleri SERİ 16

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.

8 Kas 2026 10 dk 2
Graph Temelleri: Adjacency List, BFS ve DFS ile Gezinmek
Bilgisayar Bilimi Temelleri SERİ 15

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.

8 Kas 2026 12 dk 2
Trie: C# ile Autocomplete, Prefix Arama ve Bellek Maliyeti
Bilgisayar Bilimi Temelleri SERİ 14

Trie: C# ile Autocomplete, Prefix Arama ve Bellek Maliyeti

Trie, key'leri karakter karakter saklayıp bir prefix'i O(m) adımda bulur, ama bellek maliyeti yüksektir: 234.456 kelimede sıralı array 11,7 MB, trie 148,9 MB. C# ile trie ve en iyi N öneri yazıyor, Türkçe İ/ı case folding tuzağını çözüyor, minimal API ve Angular arama kutusu kuruyor, sıralı array, PostgreSQL LIKE ve trie'yi ölçümle karşılaştırıyoruz.

8 Kas 2026 14 dk 2
Heap ve Priority Queue: C# ile Binary Heap, Heapify, Heap Sort ve Top-K
Bilgisayar Bilimi Temelleri SERİ 13

Heap ve Priority Queue: C# ile Binary Heap, Heapify, Heap Sort ve Top-K

Heap, en küçük elemanı her zaman tepede tutan ve array'de saklanan bir tree'dir; insert ve en küçüğü çıkarma O(log n), bottom-up build-heap O(n). C# ile BinaryHeap ve heap sort yazıyor, .NET PriorityQueue'nun 4-ary yapısını ve eşit öncelikte FIFO vermediğini gerçek çıktıyla gösteriyor, top-K, k-way merge ve running median örneklerini BenchmarkDotNet ölçümüyle tamamlıyoruz.

8 Kas 2026 14 dk 2
Balanced Tree'ler: AVL, Red-Black ve Veritabanı Index'lerinin B-Tree'si
Bilgisayar Bilimi Temelleri SERİ 12

Balanced Tree'ler: AVL, Red-Black ve Veritabanı Index'lerinin B-Tree'si

Balanced tree, insert sırası ne olursa olsun yüksekliği O(log n) tutar: sıralı 10.000 id'de düz BST'nin yüksekliği 10.000, AVL'ninki 14. C# ile AVL insert ve rotation'ları yazıyor, SortedSet'in red-black tree'sine reflection ile bakıyor, PostgreSQL'de pageinspect ile gerçek bir B+tree index'in seviyelerini ve leaf zincirini inceliyoruz.

8 Kas 2026 15 dk 2
Tree ve Binary Search Tree: C# ile Insert, Delete ve Traversal
Bilgisayar Bilimi Temelleri SERİ 11

Tree ve Binary Search Tree: C# ile Insert, Delete ve Traversal

Binary search tree'de arama ve ekleme tree'nin yüksekliği kadar sürer; aynı 10.000 ID sıralı insert edilince tree bir zincire dönüşüyor ve 1.000 arama rastgele sıralı tree'den 221 kat yavaş. Yazıda insert, find, delete'in üç durumunu, recursive ve iterative traversal'ları, doğru BST doğrulamasını ve düz bir kategori tablosundan Dictionary ile O(n)'de tree kurup ASP.NET Core minimal API'den JSON olarak vermeyi testlerle yazıyoruz.

8 Kas 2026 15 dk 3
Blog Haritası