Bilgisayar BilimleriMatematik

Algoritmanın Tarihi

Yazan: Christopher McFadden

Çeviren: Ayça Soyubelli

Düzenleyen: Ümit Sözbilir

Özet: Bu yazıda algoritmaların uzun ve büyüleyici tarihini kısaca keşfedeceğiz. Algoritmaların çıkış noktasına, algoritma kelimesinin etimolojisine göz atıp en önemli algoritmalardan bazılarını inceleyeceğiz. Bunların yanında çağdaş dünyada algoritmaların bazı kullanımlarından da bahsedeceğiz.

Giriş

Algoritmalardan bahsedildiğinde çoğu insan sıkılıp bunalır ama aslında sıkılmamalıdır. Algoritma kavramını incelediklerinde hem oldukça ilgi çekici olduğu hem de çağımızın dijital dünyasının işleyişi için hayati önem taşıdığı göreceklerdir. Algoritma belirli bir amaca ulaşmak için çözüm yolunun basit, net ve belirli bir sırada olacak şekilde adım adım tasarlanmasıdır. [1]

Algoritmalar matematik ve bilgisayar bilimleri alanlarında yaygın olarak kullanılır. Bu alanlarda matematiksel hesaplama gibi işlemleri gerçekleştirmenin yolunu adım adım açıklamak gibi örnekleri görülebilir. Farkına varılmasa da A noktasından B noktasına gitmek için kullanılan rota, bu rotayı internette araştırma eylemi gibi günlük işlerde bile basit bir seviyede de olsa algoritmalar kullanılır. Hatta algoritmaları kek pişirmek gibi eylemleri gerçekleştirmek için de kullanabileceğinizi öğrenmek sizi şaşırtabilir.

Kek pişirmek için oluşturulmuş bir algoritma örneği. (Kaynak: Wiley)

Çağdaş anlamda algoritmalar matematiksel tespitler veri işleme ve otomatik akıl yürütme (automated reasoning)1 gibi birçok alanda kullanılır. Algoritmalar olmadan günümüz teknolojilerinin çoğunun işleyişi sekteye uğrayacaktır.

1. Bir Algoritmanın Temel Özellikleri

Bir algoritmanın geçerli kabul edilmesi için üç önemli özelliğe sahip olması gerekmektedir:

  1. Algoritmanın bir sonu olmalıdır. Hiçbir zaman sona ermeyen bir algoritma sorun çözmek için kullanışsızdır.
  2. Algoritmanın adımları iyi tanımlanmış olmalıdır. Adım dizisinin her bir adımı belirsizlik olmadan tanımlanmalıdır.
  3. Algoritma etkili olmalıdır. Adım dizisi çözmesi gereken sorunu tutarlılıkla çözmelidir. Aynı zamanda sadece bir kalem kağıtla bile bu algoritmaya ulaşılabilmelidir.
(Kaynak: Markus Spiske/Flickr)

2. Algoritma Kelimesinin Etimolojisi

Algoritma kelimesi, 9. yüzyılda yaşamış olan İranlı matematikçi Harezmi’nin (Al-Khwarizmi) Farsçada “Harezm’in yerlisi”2 anlamına gelen isminin Orta Çağ Latincesine yanlış çevrilerek geçmesiyle oluşan algorismus kelimesinden türetilmiştir. Harezmi Hint-Arap sayı sistemi üzerine bir inceleme olan “Algoritmi de Numero Indorum” adlı eseri yazmıştır. Bu eser günümüzde kullanılan sayı sistemini Avrupa’ya tanıtan ilk eserlerden biridir.

Harezmi’yi tasvir eden bir gravür panel. (Kaynak: Wikimedia)

Sonraki dönemlerde algorismus kelimesi Yunancada sayı anlamına gelen arithmos kelimesi ile yanlış bir şekilde ilişkilendirilerek algoritma kelimesi ortaya çıkmıştır. Bu ilişkilendirmeden dolayı başlangıçta Avrupa’da Hint-Arap sayma sistemini ifade etmek için kullanılmıştır. 19. yüzyılda daha belirli bir anlam kazanarak, bir matematiksel işlemde kullanılan belirli adımlar dizisini ifade etmeye başlamıştır. 20. yüzyılda ise bilgisayar bilimlerinde daha belirli bir anlam kazanarak bir programda amaçlanan bir çıktıyı üretmek için kodlanmış talimat dizilerini ifade etmek için kullanılmaya başlamıştır. [3]

Harezmi aynı zamanda cebirin babası olarak bilinir ve Roma’nın çöküşünden sonra Batı’ya karmaşık matematiği tanıtan kişi olarak kabul edilir. İlginç bir şekilde, Harezmi’nin Brahmagupta3 olarak bilinen daha eski bir Hintli bilgenin çalışmaları üzerine bilgiler eklediği görülmektedir.

3. Algoritmanın Kökeni

Terim olarak eski olsa da algoritmalar hakkındaki çağdaş düşüncelerimiz ancak matematikte değişkenlerin kullanımının artmasıyla oluşmaya başlamıştır. Algoritmalar aslında binlerce yıldır kullanılmaktadır.

Tarihi kayıtlara ve arkeolojik eserlere göre tanınabilir ilk algoritma MÖ 1600 yılı civarında Babiller tarafından yaratılmış olabilir. Kil tabletlere çivi yazısıyla kaydedilen bu algoritmalar çarpanlara ayırma, karekök bulma gibi işler için kullanılırdı ve günümüz şartlarına göre oldukça kolaydır.

Öklid, meşhur algoritmasını4 MÖ 300 yılı civarında üretmiştir. Onu, MÖ 200’de Eratosten Kalburu5 isimli algoritmayı üreten Eratosten izlemiştir. Gauss’un yok etme yöntemi6 MS 263’te Lui Hui tarafından açıklanmış ve Brahmagupta MS 628’de Chakravala’yı geliştirmiştir. Sonraki yüzyıllarda eski Yunan, Hint ve Çin’i temel alan İslam dünyası daha karmaşık kriptanaliz, şifreleme yöntemleri ve şifreler geliştirmeye çalışmıştır.

Çağdaş algoritmanın asıl ilerlemesi sanayi devriminin ortalarından sonlarına doğru gerçekleşmiştir. Bu sıralarda George Boole bilgisayar kodunun temeli olan ve boolean cebiri olarak da bilinen ikili cebri icat etmiştir. Ada Lovelace ise 1840larda ilk bilgisayar programını üretmiştir.

Alan Turing algoritma kavramını ilk olarak 1936’da ünlü Turing makinesi ile resmîleştirmiştir. Alonzo Church’ün lambda hesabının eklenmesi ise çağdaş bilgisayar biliminin yolunu açmıştır.

Alan Turing yakın zamanda Bank of England’ın yeni 50 sterlinlik banknotunda yer alarak onurlandırılmıştır. (Kaynak: İngiltere Bankası)

4. Algoritmaların Günlük Kullanımına Örnekler

Algoritmalar uzun bir geçmişe sahip olmakla beraber çağdaş yaşamın birçok yerinde karşınıza çıkar. Bilgisayarların yükselişi olmasa bile algoritmaların günlük rutininizde büyük bir rol oynaması olasıdır. Aşağıda belirli bir sırada olmaksızın günlük hayatta kullanılan bazı algoritma örnekleri incelenmiştir.

4.1. Tarifler

(Kaynak: The Lighthouse)

Basit bir fincan çaydan çok daha karmaşık bir dana eti yemeğini hazırlamaya kadar kullanılan tarifler, yiyecek ve içecekler gibi hayatınızdaki en önemli şeylerden bazılarını oluşturmaya yönelik bir dizi talimattır. Çoğu durumda kurallar zevkinize göre esnetilebilse de tarife uymamak, çoğu zaman başarısız veya kusurlu bir sonuç elde edilmesine yol açacaktır.

4.2. Çevrim içi Aramalar

(Kaynak: PhotoMIX Company/Pixaboy)

Eğer bir tarifi ezbere bilmiyorsanız onu her zaman “Google’layabilirsiniz”! İnternetin yükselişi, bilgileri kolaylıkla hatırlayabilmek için karmaşık veri saklama yöntemlerine ve arama işlevlerine duyulan büyük bir ihtiyaç oluşmasına yol açmıştır. Kolaylıkla bilgilere ulaşmak ise tahmin edebileceğiniz gibi algoritmalar sayesinde başarılmıştır. Arama motorları, kullanıcıların isteklerini ayrıştırıp öneri listesi üretmek için dizinleme, sayfa sıralama gibi özelliklerinin tamamında karmaşık algoritmalar kullanılır. Bugün bu gibi servislerin değerini bilinmese de arka planda kullanılan algoritmalar oldukça karmaşıktır.

4.3. İnternette Paylaşmak

(Kaynak: Colorlib)

Ne pişirmek istediğinize karar verdiniz, tarifini buldunuz ve uyguladınız ve sonunda o yemeği pişirdiniz. Bu durumda çoğu kişi oturup yemeye başlamak isteyebilecekken bazıları önce hazırladığı yemeğin fotoğrafını çekip dünya ile paylaşmak isteyebilir. Yemeğinizin fotoğrafını çekmek, internete yüklemek ve arkadaşlarınızla paylaşmak adımlarının her birinde akıllıca algoritmalar kullanılmaktadır.

Akıllı telefonunuzdaki yazılım kamerayı çalıştırmak ve fotoğrafı depolamak için algoritma komutlarını kullanır. Fotoğrafı çektikten sonra paylaşmak için en sevdiğiniz telefon uygulamasını kullanırken fotoğrafı sıkıştırmak, yüklemek, işlemek ve uygulamada sergilemek için yine algoritmalar devreye girer. Basit görünen bu işlem her adımı mükemmel şekilde uygulamak için yazılmış binlerce satır kod içerir.

4.4. Basit Aritmetik İşlemler

(Kaynak: Michael Coghlan/Flickr)

Basit aritmetik işlemler de bir çeşit algoritmadır. İki sayıyı her çarptığınızda sonuca ulaşmak için bazı temel yöntemleri uygularsınız. Benzer şekilde bir mağazadan nakit parayla alışveriş yaptığınızda, bir pizzayı parçalara böldüğünüzde, arkadaşlarınızla aranızda bir paket şekerlemeyi bölüştüğünüzde veya restoranda hesabın bir kısmını ödediğinizde basit aritmetiği kullanırsınız. Tüm bu işlemler çok temel algoritmalar sayesinde gerçekleşir.

4.5. Bilgisayar Programları

(Kaynak: simpson33/iStock)

Her e-posta gönderdiğinizde, bir Word belgesine yazı yazdığınızda, bir elektronik tabloya veya veri tabanına veri girdiğinizde bu işlemleri gerçekleştirebilmek için algoritmalar kullanılır. Bu programların basit operasyonel kodlarını algoritmalar oluştursa da bazen kendiniz de algoritma yazdığınızı fark edebilirsiniz. Elektronik tabloları ele alalım. “TOPLA()” fonksiyonunu veya herhangi bir veri işleme formülünü her kullandığınızda tam olarak bir sonuca ulaşmak için bir algoritma kullanırsınız. Çağdaş dünyada algoritmaların birçok çeşit kullanımı vardır ve bunların her birine yalnızca bir yazıda değinmek mümkün değildir. Yine de bu yazı sayesinde muhtemelen her gün kullandığınız bazı algoritmaları fark edeceğinizden eminiz.


1 Otomatik akıl yürütme, bir sistemin veya programın ne yapacağı veya asla yapamayacağı konusunda güvence sağlamaya çalışan bilgisayar bilimi alanıdır. [2]

2 Harezm Orta Asya’da günümüz Türkmenistan ve Özbekistan sınırında bulunan bir kasabadır.

3 Sıfır sayısının mucidi olarak kabul edilen Hintli bir matematikçi. [4]

4 Öklid algoritması iki doğal sayının en büyük ortak bölenini bulmak için kullanılır.

5 Eratosten Kalburu belirli bir tam sayıya kadar yer alan asal sayıların bulunması için kullanılır.

6 Lineer denklem sistemlerini çözmek için kullanılan bir algoritma.

Yoluyla
McFadden, C. (2020, September 5). The origin of algorithms we use every single day.
Kaynak
[1] Torun, C. (2021, June 21). Algoritma nedir, nerelerde kullanılır?. Tübitak.[2] Amazon Web Services. (n.d.). Otomatik akıl yürütme nedir?. Amazon.[3] Nathanology. (2021, April 16). The Ethymology of “Algorithm”. [Video] [4] Duran, O. (2019, December 8). Sıfırın gerçek mucidi brahmagupta ile tanışın!. Matematiksel.
Başa dön tuşu