Harezmi'den Bilgisayara: Algoritma Nedir?
"Algoritma" sözcüğü, bugün en çok bilgisayarlar ve internetle ilişkilendirilir. Sosyal medyada hangi gönderileri göreceğimizi, arama motorlarında hangi sonuçların karşımıza çıkacağını ve hatta hangi şarkıları dinleyeceğimizi belirleyen gizemli güçlerden söz edilirken sıkça bu sözcük kullanılır. Oysa algoritma kavramı, bilgisayarlardan çok daha eskidir ve kökeni, dokuzuncu yüzyılda Bağdat'ta yaşamış bir bilgine dayanır.
Muhammed bin Musa el-Harezmi, Abbasi halifeliği döneminde Bağdat'taki ünlü bilim merkezi Beytülhikme'de çalışan bir matematikçi ve gökbilimciydi. Harezmi, Hint rakamlarını ve onlu sayı sistemini tanıtan bir eser yazdı. Bu eser, sonradan Latinceye çevrildi ve Avrupa'da bu yeni sayı sisteminin yayılmasında önemli bir rol oynadı. Latince çeviride Harezmi'nin adı "Algoritmi" biçiminde yazılıyordu. Zamanla bu ad, Hint-Arap rakamlarıyla hesap yapma yöntemlerini, daha sonra da genel olarak adım adım işlem yöntemlerini ifade eden bir sözcüğe dönüştü. Harezmi'nin denklemler üzerine yazdığı bir başka eserin adından ise "cebir" sözcüğü türemiştir.
Algoritma, en basit tanımıyla, belirli bir sorunu çözmek ya da belirli bir görevi yerine getirmek için izlenen, açıkça tanımlanmış ve sonlu sayıda adımdan oluşan bir yöntemdir. Bu tanıma göre gündelik hayatımızda pek çok algoritma kullanırız. Bir yemek tarifi, bir algoritmadır: Malzemeleri hazırla, suyu kaynat, makarnayı ekle, belirli bir süre bekle, süz. Okulda öğrendiğimiz uzun bölme yöntemi de bir algoritmadır. Bir yerden başka bir yere nasıl gidileceğini anlatan yol tarifi de öyle.
İyi bir algoritmanın bazı temel özellikleri vardır. Her adım açık ve belirsizlikten uzak olmalıdır. "Biraz tuz ekle" gibi bir talimat, bir insan için anlaşılır olabilir; ama bir bilgisayar için ne kadar tuzun "biraz" olduğu belirsizdir. Algoritma, sonlu sayıda adımdan sonra sona ermeli ve bir sonuç üretmelidir. Ayrıca aynı girdiler verildiğinde, her seferinde aynı biçimde işlemelidir.
Algoritmaların bilinen en eski örneklerinden biri, iki sayının en büyük ortak bölenini bulmak için kullanılan ve Antik Yunan matematikçisi Öklid'in adıyla anılan yöntemdir. İki bin yılı aşkın bir süre önce tanımlanan bu yöntem, bugün de bilgisayar programlarında kullanılmaktadır.
Bilgisayar biliminde aynı sorunu çözen farklı algoritmalar, verimlilik bakımından büyük farklılıklar gösterebilir. Örneğin bir telefon rehberinde bir ismi bulmak için rehberi ilk sayfadan başlayarak tek tek taramak mümkündür. Ancak çok daha akıllıca bir yöntem, rehberi ortasından açmak, aranan ismin bu sayfadan önce mi sonra mı olduğuna bakmak ve aramayı sürekli olarak yarıya indirmektir. Bir milyon isim içeren bir rehberde ilk yöntem bir milyon adım gerektirebilirken, ikinci yöntemle yalnızca yaklaşık yirmi adımda sonuca ulaşılabilir. Bu fark, algoritma tasarımının neden bu kadar önemli olduğunu gösterir.
Günümüzde algoritmalar, hayatımızın pek çok alanında kararlar alıyor ya da kararlarımızı etkiliyor. Bu durum, algoritmaların nasıl tasarlandığı, hangi değerleri gözettiği ve kimin çıkarına hizmet ettiği gibi önemli soruları da beraberinde getiriyor. Algoritmaların ne olduğunu anlamak, dijital dünyada daha bilinçli bir birey olmanın ilk adımlarından biridir.