Python - Algoritma Sınıfları
Algoritmalar, sıfır veya daha fazla girdiyi işleyerek bize iyi tanımlanmış bir çıktı vermesi gereken kesin adımlardır. Bu, algoritmaların tasarlanması ve yazılmasında birçok yaklaşıma yol açar. Algoritmaların çoğunun aşağıdaki kategorilerde sınıflandırılabileceği görülmüştür.
Açgözlü Algoritmalar
Açgözlü algoritmalar, yerelleştirilmiş bir optimum çözüm bulmaya çalışır ve bu da sonuçta küresel olarak optimize edilmiş çözümlere yol açabilir. Ancak, genellikle açgözlü algoritmalar, küresel olarak optimize edilmiş çözümler sağlamaz.
Bu yüzden açgözlü algoritmalar, gelecekteki adımları nasıl etkileyeceğini düşünmeden zamanın o noktasında kolay bir çözüm arar. İnsanların, sağlanan girdilerin tüm ayrıntılarına girmeden sorunları nasıl çözdüğüne benzer.
Çoğu ağ algoritması açgözlü yaklaşımı kullanır. İşte bunlardan birkaçının listesi -
- Seyahat Eden Satıcı Sorunu
- Prim'in Minimal Kapsayan Ağaç Algoritması
- Kruskal'ın Minimal Kapsayan Ağaç Algoritması
- Dijkstra'nın Minimal Kapsayan Ağaç Algoritması
Böl ve fethet
Bu algoritma sınıfı, verilen problemi daha küçük alt problemlere bölmeyi ve ardından her bir alt problemi bağımsız olarak çözmeyi içerir. Problem daha fazla bölünemediğinde, daha büyük problemin çözümüne ulaşmak için çözümü her bir alt problemle birleştirmeye başlarız.
Böl ve yönet algoritmalarının önemli örnekleri şunlardır:
- Sıralamayı Birleştir
- Hızlı sıralama
- Kruskal'ın Minimal Kapsayan Ağaç Algoritması
- Ikili arama
Dinamik program
Dinamik programlama, daha büyük problemi daha küçük problemlere bölmeyi içerir, ancak böl ve yönet'in aksine, her bir alt problemi bağımsız olarak çözmeyi içermez. Daha ziyade daha küçük alt problemlerin sonuçları hatırlanır ve benzer veya çakışan alt problemler için kullanılır. Çoğunlukla bu algoritmalar optimizasyon için kullanılır. Eldeki alt problemi çözmeden önce, dinamik algoritma daha önce çözülmüş alt problemlerin sonuçlarını incelemeye çalışacaktır.
dinamik algoritmalar, yerel optimizasyon için değil, sorunun genel bir optimizasyonu için motive edilir.
Dinamik programlama algoritmalarının önemli örnekleri şunlardır:
- Fibonacci sayı serisi
- Sırt çantası sorunu
- Hanoi kulesi