Algoritma Yalnızca Bilgisayarda Değildir
Algoritma, sonu olan ve sırası belli adımlardır. Yemek tarifi, yol tarifi ve sayıları dizmek de birer algoritmadır. Bilgisayar, bu adımları hızlandırır.
Algoritma denince akla hemen bir ekran ve karmaşık bir kod gelir. Kod, algoritmanın yalnızca bir yazılma biçimidir. Algoritmanın kendisi, sonu belli, sırası açık ve her adımda ne yapılacağı anlaşılır bir listedir. Bu yazıda tarifin, yol tarifi ve bir deste kartı dizmenin neden algoritma sayıldığını ve belirsiz bir adımın neden bütün listeyi bozduğunu anlatıyoruz.
Adım açık, sonu belli
Bir tarif, malzemeyi ve sırayı veriyorsa algoritmadır. Unu koy, suyu ekle, yoğur, beklet, pişir. Ekmeğin mayayla kabarması bu listenin canlı bir adımıdır. Liste, mayanın ne olduğunu bilmeden de izlenebilir. İzleyen, her adımda ne yapacağını anlar ve bir noktada ekmek pişmiş olur. Sonu olmayan bir komut, algoritma değildir. Biraz daha bekle, belki tuz at, canın isterse yoğur demek, bir liste gibi görünür ve uygulanamaz.
Açıklık, herkesin aynı sonucu alacağı anlamına gelmez. Fırınlar farklı ısınır. Yine de adım, ısının neye bakılarak karar verileceğini söylüyorsa izlenebilir. Söylemiyorsa izleyen, tarifin değil kendi tahmininin peşine düşer.
Yol da bir listedir
Bir kavşakta sağa dön, ikinci sokaktan sola sap, mavi kapıda dur. Bu da bir algoritmadır. Kapı yoksa veya sokak tek yön olduysa liste takılır. Takılınca algoritma, bir yedek adım söylemiyorsa kırılır. İyi bir yol tarifi, sapınca ne yapılacağını da bilir. Bilgisayar programları da aynı yüzden hata mesajı verir. Mesaj, listenin kırıldığı yerde söylenen yedek cümledir.
Grafik okurken yapılan hatalar da bir tür listedir. Eksenin başını bul, aralığa bak, birimi ayır. Liste izlenmezse resim, sayının yerine geçer. İzlenirse resim, sayının hizmetine döner.
Dizmek, karşılaştırmaktır
Bir deste kartı küçükten büyüğe dizmek için her seferinde iki karta bakılır. Küçük olan sola konur. Bu bakış, deste bitene kadar tekrarlanır. Tekrar, algoritmanın gücüdür. Aynı açık kural, on kartta da bin kartta da geçerlidir. Bin kartta süre uzar. Kural değişmez.
Daha az bakışla dizmenin yolları da vardır. Desteyi bölmek, parçaları ayrı dizmek ve sonra birleştirmek, her çifti baştan sona tekrar tekrar yoklamaktan daha az emek isteyebilir. İki yöntem de algoritmadır. Biri daha yavaş, öteki daha düzenlidir. Hız, kuralın doğru olmasından ayrı bir meziyettir. Yanlış bir kural, çok hızlı da olsa yanlış bir deste bırakır.
Bilgisayar hızdır, fikir değil
Bilgisayar, bu listeleri yorulmadan tekrarlar. Üslü büyümenin sayıları çabuk büyüttüğü yerde, tekrar da çabuk çoğalır. İnsan onuncu adımda yorulur. Makine, adım açık olduğu sürece devam eder. Açık değilse makine de tahmin yürütmez. Takılır veya yanlış bir varsayımla koşar.
Bu yüzden algoritmayı bilgisayarın icadı sanmak sırayı ters çevirir. Yemek, hesap ve yol, makinelerden önce de adım adım anlatılırdı. Makine, anlatılanı hızlandırdı ve aynı hatayı da hızla çoğalttı. Hız, belirsiz bir adımı düzeltmez.
Günlük hayattan kısa bir deneme
Bir çekmecedeki çorapları eşlemek de bir algoritmadır. Bir çorabı al, eşini görene kadar bak, eşi yoksa kenara koy, desteyi bitir. Kenara konanlar ikinci turda yeniden yoklanır. Yöntem yavaş görünebilir. Yine de her çorabın akıbeti bellidir. Tüm çekmeceyi her seferinde rastgele karıştırmak ise daha çok hareket ettirir ve daha az eşler.
Asal sayıların bir sayıyı bölüp bölmediğini denemek de böyledir. Adaylar sırayla denenir, bölünen çıkarsa sayı asal değildir, hiçbiri bölmezse asaldır. Büyük sayıda bu liste uzundur. Uzunluk, yöntemin algoritma olduğunu değiştirmez.
Algoritma, zekânın yerine geçen sihirli bir kutu değildir. Sihri alınca geriye, sırası belli ve sonu olan adımlar kalır. Adımlar açıksa bir insan da bir makine de aynı yolu yürüyebilir. Kapalıysa ikisi de başka başka yerlere varır.
Sık sorulan sorular
Tarif bir algoritma mıdır? Sırası belli ve sonu varsa evet. Canın isterse yoğur gibi belirsiz bir cümle, izlenebilir bir adım değildir.
Bilgisayar olmadan algoritma olur mu? Olur. Yol tarifi, çorap eşlemek ve kart dizmek de algoritmadır. Bilgisayar bu adımları hızlandırır.
Hızlı algoritma her zaman doğru mudur? Hayır. Hız ile doğruluk ayrıdır. Yanlış bir kural, hızlı da olsa yanlış sonuç bırakır.