Belirli bir problemi çözmek için izlenen, sıralı ve sonlu adımlar dizisi.

Algoritma, belirli bir problemi çözmek veya bir görevi gerçekleştirmek için izlenen, sıralı ve sonlu adımlar dizisidir. Programlamadan matematiğe, gündelik hayattaki tariflerden arama motorlarına kadar her sistemin temelinde algoritmalar yatar. Bir algoritmanın dört temel özelliği vardır: sonlu sayıda adımdan oluşması, her adımın açık ve net biçimde tanımlanmış olması, belirli bir giriş alarak belirli bir çıkış üretmesi ve her giriş için bir süre sonra tamamlanması. Algoritmalar beş temel kategoride incelenir: sıralama (Bubble Sort, Merge Sort, Quick Sort), arama (Binary Search, Breadth-First Search, Depth-First Search), grafik gezimi (Dijkstra, Bellman-Ford), dinamik programlama (Fibonacci, Knapsack problemi) ve açgöz (greedy) yaklaşımlar. Her kategori farklı problem türlerine özgü çözüm stratejileri sunar. Divide & conquer stratejisi büyük problemleri küçük alt problemlere böler ve ardından çözümleri birleştirir. Algoritma karmaşıklığı Büyük O Notasyonu ile ölçülür. O(1) sabit zaman; O(log n) logaritmik; O(n) doğrusal; O(n log n) doğrusal-logaritmik; O(n²) karesel karmaşıklığı ifade eder. Girdi boyutu milyonları aştığında bu farklar kritik hale gelir: O(n²) bir algoritma yerine O(n log n) kullanmak saatler yerine saniyelere inebilir. En iyi, ortalama ve en kötü durum analizi farklı senaryolar için ayrı değerlendirilir. Yapay zeka ve makine öğrenmesinde algoritmalar eğitim sürecinin çekirdeğini oluşturur. Stokastik Gradyan İnişi (SGD) ve Adam Optimizer, kayıp fonksiyonunu minimize etmek için model parametrelerini iteratif olarak günceller. Karar ağacı bölme kriterleri (Gini, Entropi), her düğümde en bilgi verici ayırımı belirleyen algoritmalardır. Geri yayılım algoritması derin öğrenme modellerinin öğrenmesinin temel motorudur; zincir kuralı ile her katmanın katkısını hesaplar. Günlük hayatta algoritmalar YouTube öneri sistemi, Google Arama sıralaması ve navigasyon uygulamalarındaki en kısa yol hesaplamasında çalışır. Bir yemek tarifi de algoritma sayılabilir: belirli malzemeler giriş, adım adım talimatlar işlem, hazır yemek çıkıştır. Türkiye'de e-ticaret platformları, bankacılık dolandırıcılık tespiti ve trafik optimizasyon sistemleri algoritma yoğun alanlardır.

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.