Tarihte bilinen ilk algoritma, el-Harizmi tarafından 9. yüzyılda oluşturuldu. Bu sayede modern çağda kullanılan tüm sistemlerin algoritmaları, o tarihten itibaren geliştirilmeye ve kullanılmaya başlandı.
Tabii ki bu algoritmaların bazıları maalesef kullanılmıyor. Peki uzun yıllardır kullanılan popüler algoritmalar neler ve hangi alanda işimize yarıyor? Haydi dünyada kullanılan en popüler algoritmaları inceleyelim.
Bilgisayardaki "arama algoritmaları" sayesinde, seçtiğimiz özellikleri veren bilgileri bulabiliriz.
Öncüsü "ikili arama algoritması" olan bu algoritma sayesinde sıralı bir veri kümesindeki istediğimiz bir veriyi arayabilir ve bulabiliriz. Algoritmanın çalışma mantığı ise oldukça basit. Düşünelim ki [1,3,5,9,11,13,19] verilerinden oluşan bir dizimiz var ve 5 değerini arama algoritması ile bulmak istiyoruz.
Bunun için algoritma ilk olarak dizide bulunan ortadaki elemanı inceler. Eğer dizinin ortadaki elemanı 5 değerinden büyükse sağdaki sayılardan kontrol etme işlemi gerçekleştirir. Ancak, 53 olduğu için de 3'ün sağındaki verilerden devam eder ve 5 değeri bulunur.
Otonom sistemlerin temelinde de algoritma var. "Haar-cascade algoritması" sayesinde istediğimiz nesneleri tespit edebiliriz.
Otonom kelimesini duyduğumuz zaman heyecanlanırız. Özellikle Tesla araçlarının kendi kendine gitmesi ve karar alabilmesi gelecekte sürücüsüz arabaların çoğalacağının bir belirtisi. Peki nesne tespiti uygulamalarının öncüsü Haar-cascade algoritması nasıl çalışıyor?
Algoritmanın çalışabilmesi için pozitif ve negatif görüntülere ihtiyacımız var. Pozitif görüntüler, tespit etmek istediğimiz nesnelerdir. Negatif görüntüler ise tespit edilecek görüntü haricindeki tüm görüntülerdir. Algoritmaya göre pozitif ve negatif görüntüler kıyaslanır ve nesne tespitinin gerçekleştirilebilmesi için veri dosyası oluşturulur. Bu dosya, pozitif ve negatif görüntülere göre nesne tespiti işlemini gerçekleştirir.
Parça-bütün ilişkilerinin sağlanması için "özyinelemeli algoritma" kullanılıyor.
Faktöriyel konusunu hepimiz biliriz. 1'den başlar ve belirtilen değere kadar olan tüm sayılar çarpılır ve sonuç elde edilir. Örneğin 4! şeklinde faktöriyel hesaplaması yapmak istediğimizde sonuç 4x3x2x1=24 olur. Bizler de parça-bütün algoritması sayesinde matematiksel hesaplamaları çözebiliyoruz.
Bir problem olduğunu düşünelim. Bu problem parçalara ayrılır. Örneğin 4! örneğinde en küçük değerimiz 1'dir. Devamında ise 2, 3 ve en büyük değer 4'tür. Algoritmaya göre en büyük değerden başlamak yerine en küçük olan 1 değerinden başlanır ve 4 olana kadar çarpım işlemi gerçekleştirilip sonuca ulaşılır. Tabii ki basit bir örnekle açıkladık. Bugün özyinelemeli algoritma özellikle ileri seviye bilgisayar bilimlerinde sııklıkla kullanılır.
"Baloncuk algoritması", karmaşık olarak verilmiş sayıları küçükten büyüğe doğru sıralamamızda görev alıyor.
Günümüzde ilk bilinen algoritma olarak karşımıza çıkan baloncuk algoritması, bugün algoritma derslerinde algoritma mantığını kavratmak amacıyla anlatılıyor. Bir yazılım eğitmeni olarak ben de öğrencilerime anlatıyorum. Çalışma mantığı çok basit.
Örneğin 5,3,2,9 değerlerini küçükten büyüğe doğru sıralamak istiyoruz. Bu durumda baloncuk algoritması devreye giriyor. Mantığı, soldan sağa doğru ilk iki sayıyı al ve kıyasla. Küçük olanı sola kaydır, büyük olanı ise sağa. Örneğimize göre algoritma 3,5,2,9 olarak değerleri güncelleyecek. Tam anlamıyla sıralama bitmediği için de bu işlemleri devam ettirecek. Devamında ise 3,2,5,9 ve son olarak 2,3,5,9 sonucuyla algoritmamız tamamlanacak.
Matematikte öğrendiğimiz Öklid aslında bir algoritma ve oldukça popüler.
Hepimiz ortaokul ve lise çağımızda EBOB (en büyük ortak bölen) kavramını duymuşuzdur. EBOB kavramı, aslında bir Öklid algoritmasıdır. Algoritmaya göre iki farklı tam sayının, ortak bölenlerinin en büyüğü EBOB değeri olarak bulunur. Tabii ki kalan değeri de 0 olmalıdır.
Örneğin 12 ve 24 değerlerini düşünelim. 12 ve 24 değerlerinin en büyük tam ortak bölenleri 12'dir. 12/12=1 (kalan 0) ve 24/12=2 (kalan 0) şeklinde bir sonuçla karşılaşacağız. Böylelikle Öklid algoritmasını gerçekleştirip, örneğe göre 12 sonucuna ulaşırız.