Algoritma Nedir? Ne İşe Yarar? İsmin Kökeni ve Özellikleri Nelerdir?

0
Advertisement

Algoritma ne demektir? Algoritma neden yazılır, özellikleri nelerdir? Algoritma ne işe yarar, hakkında bilgi.

Algoritma; belirli bir tip problemin çözümünü elde etmek için yapılması gereken işlemler dizisini belirten komut listesidir. 9. yüzyılın başında yaşayan Arap matematikçisi Muhammet bin Musa El Harizmi‘nin Batı dillerindeki adı olan Al Korismi’den türetilmiştir.

İnsanlar olsun, insan eliyle geliştirilmiş makineler olsun, davranışlarını belirli sınırlamalar ve komutlar çevresinde gerçekleştirirler. Örneğin bir çarpma işlemi yapılarken sırasıyla şu komutlar verilir: 1. Çarpan ile çarpılanın sağdan ilk rakamlarını çarp. 2. Çıkanı çarpının ilk rakamı olarak yaz. 3. Çarpanın ilk rakamını çarpılanın ikinci rakamıyla çarp, ilk çarpımdan gelen eldeyi ekle, çarpımın ikinci rakamı olarak yaz vb. Algoritmada istenen, işlemlerin her aşamasında belirli bir yolu izleyecek biçimde sonlu bir komutlar listesi oldukça açık olmalı, konuyla ilgisi bulunmayan bir kişi bile algoritmadan yararlanarak işlemleri yapabilmelidir.

Biyolojik varlıklar da doğal algoritmalar uyarınca davranışta bulunurlar (yolda yürürken, kitap okurken, yemek yerken vb). Ne var ki, bu tür algoritmaları görevli organlar kendiliğinden türlü koşullara uyum sağlayarak gerçekleştirirler. Günlük etkinlikleri içinde insanlar bunun farkında olmaz. Ancak her türlü komut sinir sistemimiz yoluyla beynimize ulaşır ve orda işlenip uyarılar belirli bir davranışa dönüşür. Bu komutlar haberlerdir. Algoritmalar her türlü işlemde kullanılabilir. Hatta algoritmanın algoritması da yapılabilir. Ancak sonuç çıkarabilme problemleri, kendi kendine hesap edilebilme problemleri, örtme ve çevrilebilme problemleri algoritmik olarak çözülemezler. Elektronik makinelerin programları da bir tür algoritmadır.

Bir sayının karekökünü hesaplamak için bir algoritmayı ifade eden akış şeması

Bir sayının karekökünü hesaplamak için bir algoritmayı ifade eden akış şeması (Kaynak : wikipedia.org)

Algoritmanın Tanımı

Genel olarak, bir algoritmanın resmi tanımıyla ilgili kesin bir fikir birliği yoktur. Birçok yazar bunları bir hesaplamayı veya soyut bir problemi çözmek için talimat listeleri olarak tanımlar , yani sınırlı sayıda adım, bir problemin (girdi) verilerini bir çözüme (çıktı) dönüştürür. Ancak bazı algoritmaların belirli bir problemi tamamlaması veya çözmesi gerekmediğine dikkat edilmelidir. Örneğin, asal sayıların hesaplanmasını asla tamamlamayan Eratosthenes Kalburunun değiştirilmiş bir versiyonu hala bir algoritmadır.

Tarih boyunca çeşitli yazarlar, matematiksel modelleri kullanarak algoritmaları resmi olarak tanımlamaya çalışmışlardır. Bu, 1936’da Alonzo Church tarafından lambda matematiğine dayanan “etkili hesaplanabilirlik” kavramıyla ve Turing makinesine dayanan Alan Turing tarafından yapıldı . Her iki yaklaşımla da tamamen aynı problemlerin çözülebileceği anlamında iki yaklaşım eşdeğerdir. 89 Bununla birlikte , bu modeller sayılar, semboller veya grafikler gibi belirli bir veri türüne tabiyken , genel olarak algoritmalar çok sayıda veri yapısı üzerinde çalışır .3 ​1​ Genel olarak tüm tanımlardaki ortak kısım, paralel algoritmaları dikkate almadığımız sürece aşağıdaki üç özellikte özetlenebilir:

Advertisement
  • Sıralı zaman. Bir algoritma, ayrık zamanda –adım adım– çalışır, böylece her geçerli girdi için bir hesaplama durumları dizisi tanımlar ( giriş , algoritmaya başlamadan önce sağlanan verilerdir).
  • Soyut durum. Her hesaplama durumu, birinci dereceden bir yapı kullanılarak resmi olarak tanımlanabilir ve her algoritma, uygulamasından bağımsızdır (algoritmalar soyut nesnelerdir), böylece bir algoritmada birinci dereceden yapılar, izomorfizm altında değişmezdir.
  • Sınırlı keşif. Bir durumdan diğerine geçiş, tamamen sabit ve sonlu bir tanımla belirlenir; yani, her bir durum ile bir sonraki arasında, mevcut durumun yalnızca sabit ve sınırlı sayıda terimi dikkate alınabilir.

Kısacası algoritma, adım adım çalışan, her adımın açık bir şekilde ve belirli bir bilgisayara atıfta bulunulmadan tanımlanabildiği ve ayrıca bir adımda okunabilen/yazılabilen veri miktarı üzerinde sabit bir sınırı olan herhangi bir şeydir.

Bu geniş tanım, hem pratik algoritmaları hem de yalnızca teoride çalışan algoritmaları kapsar, örneğin Newton’un yöntemi ve Gauss-Jordan eleme çalışması, en azından prensipte, sonsuz hassasiyette sayılarla; ancak, bir bilgisayarda sonsuz kesinlik programlamak mümkün değildir ve bunlar yine de algoritmalardır. Özellikle, Church-Turing tezini doğrulamak için kullanılabilecek , hesaplanabilir her fonksiyonun bir Turing makinesinde (veya eşdeğer olarak, yeterince genel bir programlama dilinde) programlanabileceği dördüncü bir özelliği düşünmek mümkündür :

Aritmetikleştirilebilirlik. İlk adımda yalnızca inkar edilemez şekilde hesaplanabilen işlemler mevcuttur.


Leave A Reply