Mühendislik ve Teknoloji

Algoritmaların Kökeni Ve Günlük Hayattan Algoritma Örnekleri

Algoritma sözcüğünü günümüzde her zamankinden daha fazla duymaya başladık. Ancak algoritma dendiği zaman halen bir çoğumuzun aklına yapay zeka, bilgisayarlar ve bunun gibi şeyler geliyor. Oysa ki kek pişirmek istediğiniz zamanlarda da aslında algoritmaları kullanırsınız. Bu yazıda kısaca algoritmaların büyüleyici tarihini keşfedelim. Sonra da günlük hayatta karşımıza çıkan algoritmalar hakkında biraz bilgi öğrenelim. Hazırsanız başlayalım…

Algoritmaların Kökeni Nedir?

Algoritma kelimesi 9. yüzyılda yaşamış matematikçi el Harezmi’nin adından gelmektedir. El Harezmi, Abbasi Döneminin tanınmış matematik, coğrafya ve astronomi uzmanıdır. Onun sayesinde Avrupalı bilginler kullanılmakta oldukları Romen rakamları ile aritmetik yapmanın zorluğunu fark etmiştir. Harezmi onlara aritmetik hesaplamalar yapmanın daha kolay bir yolu olduğunu göstermiştir.

harezmi
Algoritma sözcüğü bile Batı’da Harezmi adının yanlış çevrilmesi sonucunda ortaya çıktı.

M.S. 825 yıllarında Harezmi “Kitab el cebr ve’l mukabele” başlıklı bir kitap yazmıştı. Bu kitap Latince’ye “Algoritmi de Numero Indorum” adıyla çevrildi. El-Harezmi adı, Avrupa’da “Algorizm” olarak bilindiği için “algoritma” terimi onun adından ortaya çıktı. Kelime ilk olarak 1230 yılında kullanıldı. Ancak “algoritma” bugünkü anlamını ancak 19. yüzyılın sonlarında aldı. 

Aslında algoritmalar el Harezmi’nin kitabından çok önce de bilinmekteydiler. Tarihsel kayıtlara ve arkeolojik bulgulara göre, ilk algoritmalar Babiller tarafından MÖ 1600 civarında oluşturuldu. Kil tabletlere çivi yazısı biçiminde kaydedilen bu algoritmalar çarpanlara ayırma ve karekök bulma gibi amaçlarla kullanılmıştı.

Eratostenes’in kalburu: Önce 2’nin katlarını, ardından 3’ü, ardından 5’i, ardından 7’yi (2,3,5,7 hariç) silin. Bunu 2’den 100’e kadar tüm sayılara uygularsanız geriye yalnızca asal sayılar kalacaktır. İlk seçtiğimiz asal sayıların sekiz tane olması durumunda 400’e kadar olan asal sayılar bulunabilir. İlk 168 asal sayının katlarını silersek de 1 milyona kadar olan asal sayıları bulabiliriz. Bu basit çizelgenin gücü buradan gelir.

Sonrasında Öklid, MÖ 300 civarında “Öklid algoritması” nı ortaya çıkardı. MÖ 200 yılında “Eratosthenes Eleği” ile Eratosthenes onu izledi. Doğrusal denklem sistemlerini çözmek için kullanılan Gauss eliminasyonu, MS 263’te Lui Hui tarafından tanımlandı. Brahmagupta, MS 628’de Chakravala metodunu geliştirdi.

Eratostenes’in kalburu kodlamada bu biçimde gözükür.

Modern Zamanda Algoritmalar

Sonraki yüzyıllar boyunca, İslam dünyası bilgileri eski Yunan, Hint ve Çin eserleri üzerine inşa edildi. Modern algoritmanın ortaya çıkışı ise sanayi devrimi sırasında gerçekleşti. Öncelikle George Boole, modern bilgisayar kodunun temeli olan ikili sistemi ortaya attı.

Ada Lovelace tarafından yayınlanan ilk bilgisayar algoritması.

Ada Lovelace, 1840’larda ilk “bilgisayar programını” üretti. Filozof ve mantıkçı Friedrich Ludwig Gottlob Frege nicel ifadelerin bir analizi için biçimsel bir sistem inşa etti. Alan Turing, algoritma konseptini ilk kez 1936’da meşhur Turing makinesiyle resmileştirdi. Bundan sonra da dünya bir daha asla eskisi gibi olmadı. ( Detaylar için: Turing Makinesi Nedir? Bu Makinenin Durma Sorunu Neden Çözülemez?)

alan turing
Alan Mathison Turing, (1912-1954) İngiliz matematikçi, bilgisayar bilimcisi ve kriptolog

Bir Algoritmanın Temel Özellikleri Nelerdir?

Günümüzde insanlar algoritma dediklerinde, neredeyse her zaman bir bilgisayarın çalıştıracağı bir şeyi kastederler. Aslında durumun böyle olması gerekmez. Bir algoritma, esasen, belirli bir görevi çözmek için kullanılan bir dizi adımdır.

Dışarı çıkmadan önce pencereden dışarı bakarsınız. Yağmur yağıyorsa şemsiyenizi alırsınız. Yağmıyorsa da almazsınız. Bu süreç de aslında bir algoritmadır. Bu nedenle algoritmaları bir sorunu çözmek için adım adım kılavuz olarak düşünmek gerekir.

Bir algoritmanın gerçekten geçerli sayılması için bazı özelliklere sahip olması gerekir. Bir algoritmanın tüm adımları açık ve net bir şekilde tanımlanmalıdır. Sorunu çözebilecek nitelikte olmalıdır ve belirli bir noktada sonlanmalıdır. Aşağıda bir algoritma örneği görebilirsiniz.

Günlük Hayattan Algoritma Örnekleri
Algoritmalar genellikle karar ağaçları olarak çalışır, bu nedenle bir algoritma oluşturmak için üç temel koşullu öğeye ihtiyacınız vardır: if, and, or.

Algoritmalar Günlük Hayatta Nasıl Karşımıza Çıkar?

Gördüğünüz gibi, algoritmalar modern günlük yaşamın vazgeçilmez parçalarıdır. Ancak algoritma denilince aklınıza sadece bilgisayarlar gelmesin. Örneğin, okumakta olduğunuz bu satırlardaki verileri belirli bir sırayla birbiri ardına ekliyor olmamız da bir algoritma örneği.

“Sabah kalk, banyoya git, yüzünü yıka, saçını düzelt, kahveni iç ve evden çık” gibi günlük sabah rutinimiz de aslında bir algoritmadır. Bir sorunu çözmeye yöneliktir ( işe ya da okula gitmek), sorunu çözmek mümkündür ( uyku sersemliği, güne hazırlanmak) ve sonludur. (Kapıyı kapamak). Bu örnek yeterli gelmedi ise günlük hayatta kullanılan bazı algoritma örneklerini daha verelim.

Her Türlü Tarif Aslında Bir Algoritmadır

Aslında farkında olmasınız da yemek tarifleri, yol tarifleri kısacası adım adım bir şeyin nasıl yapıldığını detaylı anlattığımız her şey özünde birer algoritmadır. Eğer tarifler doğru yapılmışsa ve söylenen adımlar doğru biçimde uygulanırsa başarısızlık olasılığı düşüktür.

Diyelim ki kek pişirmek istiyorsunuz. Elinizdeki tarif, hangi malzemelere ihtiyaç duyacağınızı, bu malzemeleri hangi sırayla ve nasıl kullanacağınızı, fırını kaç derece sıcaklıkta sabitlemeniz gerektiğini, kaç dakika pişireceğinizi size söyler. Kek pişince de sona erer.

Arama Motorları

Günlük Hayattan Algoritma Örnekleri
Günümüzde Facebook hesabınızın zaman tünelinde öncelikli olarak hangi paylaşımların gösterileceğinden tutun da Google’da hangi web sitelerinin ilk sayfada görüntüleneceğine kadar, günlük yaşamda karşımıza çıkan birçok veriyi algoritmalar yönetiyor. Modern yaşama şekil vererek geleceğimizi programlıyorlar.

Eğer bir tarifi ezbere bilmiyorsanız, o zaman “Google” sizin için buna cevap verir. Ama bu nasıl yapar? Elbette tahmin ettiğiniz gibi algoritmalar aracılığıyla. Arama motoru indeksleme, sayfa sıralaması vb. gibi algoritmalar isteğinizi ayrıştırmak ve bir öneri listesi oluşturmak için çalışır. Bugün bu tür bir hizmeti normal kabul etmemize rağmen, perde arkasında gerçekleşen işlemler aslında oldukça karmaşıktır.

Paylaşma Zamanı

Diyelim ki ne pişirmek istediğinize karar verdiniz, tarifi buldunuz, uyguladınız. Şimdi sırada elbette yemeğinizi yemek var. Ancak kimileri yemek yerken kimileri de bir fotoğraf çekip bunu dünyayla paylaşmak ister.

Fotoğraf çekme, internete yükleme ve paylaşma eylemi, akıllı algoritmalar sayesinde mümkün olur. Görünüşte basit olan bu görevin her aşaması, her adımı her seferinde mükemmel bir şekilde tamamlamak için binlerce kod satırının olmasını gerektirir.

Günlük Hayatta Algoritmalar Biz Fark Etmeden Görev Başındadır

Aritmetik gibi temel matematik bile bir algoritma biçimidir. İki sayıyı bir araya getirdiğinizde, örneğin çarptığınızda sonuca ulaşmak için bazı temel prosedürleri de izlersiniz. Aynı şey, bir dükkanda nakit para ile bir şey satın alırken, bir pizza keserken, arkadaşlarınız arasında bir paket şeker paylaşırken veya restoranda faturanın kendi payınızı hesaplarken de geçerlidir. Tüm bu eylemler, onları mümkün kılmak için çok temel algoritmalar kullanır.

Bütün Bilgisayar Programları Belli Bir Algoritma Kullanır

Günlük Hayattan Algoritma Örnekleri
Müşteri desteği karar ağacı

Bir e-posta gönderdiğinizde, bir belge yazdığınızda, bir elektronik tabloya veri girdiğinizde arka planda algoritmalar çalışır. Algoritmalar bu programların temel işlem kodunu oluştururken, bazılarını kendiniz yazarsınız.

Örneğin elektronik tabloları ele alalım. SUM () işlevini düşünün. Verilerinizi toplamak için bunu her yaptığınızda, kelimenin tam anlamıyla bir algoritma kullanırsınız. Modern dünyada algoritmaların başka birçok kullanımı vardır ve bunların hepsinin üzerinden geçmek bir yazıda mümkün değildir. Ancak, muhtemelen her gün kullandığınız bazı kritik öneme sahip algoritmaları siz de düşünerek bulabilirsiniz.


Kaynaklar ve ileri okumalar:

Matematiksel

Sibel Çağlar

Merhabalar. Matematik öğretmeni olarak başladığım hayatıma 2016 yılında kurduğum matematiksel.org web sitesinde içerikler üreterek devam ediyorum. Matematiğin aydınlık yüzünü paylaşıyorum. Amacım matematiğin hayattan kopuk olmadığını kanıtlamaktı. Devamında ekip arkadaşlarımın da dahil olması ile kocaman bir aile olduk. Amacımıza da kısmen ulaştık. Yolumuz daha uzun ama kesinlikle çok keyifli.

2 Yorum

  1. Emeğinize sağlık yazınız güzel. Fakat önyargıda bulunmadan bir noktaya değinmek istedim sadece. Çok sonraları bir algoritma modeli geliştirmiş olan Anatoly Karatsuba’nın dahi adı geçiyor fakat bugünkü algoritmanın kurucusu ve kelimeye adını veren değerli matematikçi Harezmi’nin adı yazınızda geçmiyor. Yazık… Bunun adı önyargı mıdır, eğitim sistemimizdeki manipülatif ve sansürcü motifler midir yoksa başka bir şey midir bilmiyorum. Fakat ben bunu sadece yazmayı unuttuğunuzu düşünerek hüsn-ü zanda bulunmayı tercih ediyorum. Tekrar elinize sağlık…

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu