Algoritma nedir?
Algoritma bir problemin çözümü için uygulanması ya da takip edilmesi gereken yönergelerin bütünüdür. Teknik açıdan bakıldığında ilgili problemin çözümü için kullanılacak komut dizisi de algoritma olarak tanımlanabilir.
Algoritmalar bir probleme karşı sunulan çözüm yolunun adım adım işlenmesini ve karşılaşılan farklı durumlar karşısında kararsız kalmadan istenen sonuca en kısa yoldan ve en düşük maliyetle ulaşmayı amaçlar.
Algoritmanın başarılı olması ve istenilen işlemi başarılı bir şekilde gerçekleştirebilmesi için problemin iyi tespit edilmesi gerekir. Problem, iyi analiz edilmeli, net ve yalın şekilde ifade edilmelidir.
Algoritma konusu başlangıçta bir çok kişiye karmaşık gelse de aslında gündelik hayatta binlerce kez farkında olmadan çeşitli algoritmalar kuruyoruz.
Yukarıda gördüğünüz diyagramda varmak istediğiniz noktaya gitmek için genel hatları ile basit bir algoritma diyagramı görüyorsunuz.
Algoritmanın Özellikleri
Her algoritmanın bir başlangıç ve bitiş noktası olmalıdır.
Algoritmaların herhangi bir teknik kavram içermemesi gerekmektedir. Kullanılan ifadeler sade ve anlaşılır olmalıdır.
Bir algoritma hiçbir çözüm aşamasında, hiçbir noktasında kararsız kalmamalıdır. Bu yüzden her istisnai durum göz önünde bulundurulmalıdır.
Algoritmalar sistematik adımlar içerir. Belli işlemleri yapmak için aynı komut/kod blogunu tekrar tekrar yazmak yerine fonksiyonlara bölerek ihtiyaç olan yerde bu fonksiyonların kullanılması gerekir.
Algoritmalar problemin yapısına bağlı olarak çözüme giden en kısa ve en az maliyetli yolu tercih edebilmelidir.
Eldeki şart ve imkanlar (donanım kaynakları, alan ve zaman) göz önünde bulundurularak geliştirilmelidir. Örneğin; şarjlı bir cihazı düşünelim, her an bir güç kaynağına erişemeyeceği için enerji tüketimi göz önünde bulundurularak bir algoritma geliştirmek gerekir.
Algoritmaların verimli çalışabilmesi için başlangıç koşulları ve ilk giriş değerleri belirtilebilir.
Bazı algoritmalarda verdiğiniz bir başlangıç değeri ile algoritmanın üreteceği sonucu bilirsiniz. Örneğin; bir sayının karekökünü hesaplayan bir algoritmaya başlangıç değeri olarak 4 verirseniz sonucun 16 olacağınız bilirsiniz. Burada algoritma gerekli hesaplamaları gerçekleştirir ve sonuca ulaşır. Bunlara deterministik problem denir.
Gerçek hayatta karşılaşılan sorunlar çoğunlukla matematiksel olarak formüle edilmiş değildir ve sonuçları da net olmayacaktır. Bu durumlarda algoritma ardışık olarak kendisini yeniden çağırabilir ve parametrelerini güncelleyerek çözüme daha yakın bir sonuç üretebilir.
Rastgele algoritmalar olarak bilinen bazı algoritmalar rastgele girdiler alabilir ya da içerebilir. Örnek olarak parmak izinden kimlik tespiti yapan algoritma verilebilir. Başlangıç değeri rastgeledir, sonuç istenilene oldukça yakındır.