Algoritma Nedir? Tanım ve Temel Özellikler
Algoritma, bir problemi çözmek için izlenen sıralı ve sonlu adımlar dizisidir. Dört temel özelliği vardır: (1) Sonluluk — belirli sayıda adımdan oluşur. (2) Belirlilik — her adım açık ve yoruma kapalıdır. (3) Giriş/Çıkış — tanımlı veriler alır ve tanımlı sonuçlar üretir. (4) Etkinlik — her adım gerçekleştirilebilir bir işlemdir. Bu özellikler algoritmanın tarif, arama motoru veya yapay zeka modeli arasında özsel bir fark olmadığını ortaya koyar.
Temel Algoritma Kategorileri
- check_circle Sıralama Algoritmaları: Bubble Sort O(n²) — eğitim amaçlı; Merge Sort O(n log n) — stabil, büyük veriler için; Quick Sort ort. O(n log n) — yerinde sıralama; Tim Sort (Python/Java) — Merge + Insertion hibrit.
- check_circle Arama Algoritmaları: Linear Search O(n) — sırasız listeler; Binary Search O(log n) — sıralı listeler için 2× azaltma; BFS/DFS — grafik ve ağaç veri yapılarında düğüm keşfi.
- check_circle Grafik Algoritmaları: Dijkstra: ağırlıklı grafiklerde en kısa yol, navigasyon sistemleri; Bellman-Ford: negatif kenar ağırlıklarını işler; Floyd-Warshall: tüm çiftler arası en kısa yol.
- check_circle Dinamik Programlama: Alt problemleri tekrar hesaplamak yerine önbellekler (memoization). Fibonacci, Knapsack ve edit distance klasik örnekleridir; LLM içindeki dikkat hesapları da bu ilkeden yararlanır.
- check_circle Açgöz (Greedy) Algoritmalar: Her adımda yerel en iyiyi seçer. Huffman kodlama (dosya sıkıştırma), Kruskal'ın minimum yayılma ağacı ve aktivite seçimi problemi temel örneklerdir.
Büyük O Notasyonu ile Karmaşıklık Analizi
Büyük O, girdi boyutu n sonsuza giderken çalışma süresinin nasıl büyüdüğünü gösterir. O(1) — dizi indeks erişimi gibi sabit zaman. O(log n) — Binary Search gibi her adımda problemi yarıya indiren algoritmalar. O(n) — listeyi bir kez tarayan doğrusal algoritmalar. O(n log n) — Merge Sort gibi verimli sıralama. O(n²) — iç içe döngüler, Bubble Sort. Milyon elemanlı bir veri setinde O(n²) algoritmaya 1 trilyon işlem gerekirken O(n log n) yalnızca 20 milyon işlem yeterlidir.
Yapay Zeka ve Makine Öğrenmesinde Algoritmalar
⚡ Gradyan İnişi
Kayıp fonksiyonunu minimize etmek için parametreleri gradyanın tersi yönünde günceller. SGD, Mini-batch ve Adam varyantları öğrenme hızını ve kararlılığı dengeler.
🌳 Karar Ağacı Bölme
Gini safsızlığı veya bilgi kazancı (entropi) kriterine göre her düğümde en iyi özelliği seçer. Random Forest ve XGBoost bu algoritmayı toplu öğrenmede kullanır.
🔄 Geri Yayılım
Zincir kuralı ile çıktıdaki hatayı katmanlar boyunca geri yayarak ağırlık güncellemelerini hesaplar. Derin öğrenmenin temel öğrenme motorudur.
Gerçek Hayat Örnekleri ve Türkiye'de Kullanım
Google Arama'nın PageRank algoritması, milyarlarca web sayfasını bağlantı yapısına göre sıralar. Netflix ve YouTube öneri algoritmaları collaborative filtering ile kişiselleştirilmiş içerik sunar. Türkiye'de Trendyol ve Hepsiburada'nın öneri motorları, İş Bankası ve Garanti'nin dolandırıcılık tespit sistemleri ile İBB'nin trafik optimizasyon altyapısı algoritma yoğun sistemlerdir. Bir programcı olarak algoritma bilgisi; mülakatlarda (LeetCode, HackerRank) zorunlu olup sistem tasarım becerisiyle birleşince yazılım mühendisliğinde kritik rekabet avantajı oluşturur.
Sık Sorulan Sorular
- check_circle Algoritma ile program arasındaki fark nedir?: Algoritma, dil bağımsız bir çözüm reçetesidir; program, bu reçetenin belirli bir programlama dilinde somutlaştırılmış halidir. Aynı algoritma Python, Java veya C++ ile uygulanabilir.
- check_circle Büyük O'da en iyi ve en kötü durum nasıl farklılaşır?: Büyük O en kötü durumu, Omega (Ω) en iyi durumu, Theta (Θ) ise ortalama durumu ifade eder. Quick Sort'un en kötü durumu O(n²) iken ortalama durumu O(n log n)'dir.
- check_circle Hangi sıralama algoritması genel amaç için en iyisidir?: Python ve Java'nın kullandığı Tim Sort (Merge + Insertion hibrit), çoğu gerçek dünya verisi için O(n log n) ile optimaldır. Bellekte yerinde sıralama gerektiğinde Quick Sort tercih edilir.
- check_circle Dinamik programlama greedy yaklaşımdan nasıl ayrılır?: Greedy her adımda yerel en iyiyi seçer ve geri dönmez; dinamik programlama tüm alt problemleri çözerek global optimumu garantiler. Knapsack problemi DP gerektirir; Dijkstra greedy çalışır.
- check_circle AI için algoritma öğrenmek gerekli mi?: Evet. LLM eğitimindeki dikkat mekanizması O(n²) karmaşıklıktan kaçmak için flash attention gibi optimize algoritmalar kullanır. Model tasarımı ve çıkarım optimizasyonu algoritma bilgisi gerektirir.