“Sosyal medya algoritması değişmiş”, “Arama motorunun algoritması”, “Bu problemi çözecek bir algoritma yazmamız lazım”… Algoritma kelimesi son yıllarda teknoloji haberlerinden gündelik sohbetlere kadar her yerde karşımıza çıkıyor. Kulağa karmaşık gelse de aslında hepimiz her gün farkında olmadan algoritmalar kullanıyoruz. Bu yazıda algoritmanın ne demek olduğunu, kelimenin ilginç kökenini ve günlük hayattan örnekleri anlatıyoruz.
- 1. Algoritma nedir?
- 2. Kelimenin kökeni: El-Harezmi
- 3. İyi bir algoritmanın özellikleri
- 4. Günlük hayattan algoritma örnekleri
- 4.1. Yemek tarifi
- 4.2. Yol tarifi
- 4.3. Çamaşır makinesi programı
- 5. Klasik bir örnek: Öklid algoritması
- 6. Algoritmalar nasıl gösterilir?
- 7. Aynı sorunu çözen iki algoritma
- 8. Algoritmalarda karar ve tekrar
- 8.1. Koşul (karar)
- 8.2. Döngü (tekrar)
- 9. “Sosyal medya algoritması” ne demek?
- 10. Sık sorulan sorular
- 10.1. Algoritma ile program aynı şey mi?
- 10.2. Algoritma öğrenmek için matematik bilmek şart mı?
- 10.3. “Algoritmik düşünme” ne demek?
- 11. İlgili yazılar
Algoritma nedir?
Algoritma, belirli bir sorunu çözmek ya da belirli bir sonuca ulaşmak için izlenmesi gereken, sırası belli ve açıkça tanımlanmış adımlar dizisidir. Bir algoritmada her adım, ne yapılacağını kimsenin tahmin etmesine gerek kalmayacak kadar net olmalıdır.
Bu tanımda bilgisayar kelimesinin geçmediğine dikkat edin. Algoritma, bilgisayarlardan çok daha eski bir kavramdır. Bilgisayarlar yalnızca algoritmaları çok hızlı ve hatasız uygulayan makinelerdir.
Kelimenin kökeni: El-Harezmi
Algoritma kelimesinin hikâyesi, 9. yüzyılda Bağdat’ta yaşamış matematikçi Muhammed bin Musa el-Harezmi’ye uzanır. El-Harezmi, Abbasi döneminde bilim insanlarının toplandığı Beytülhikme’de çalışmış ve Hint rakamlarıyla hesap yapmayı anlatan bir eser yazmıştır.
Bu eser sonraki yüzyıllarda Latinceye çevrilmiş ve bazı çevirilerde yazarın adı “Algoritmi” biçiminde geçmiştir. Zamanla bu isim, onun anlattığı hesaplama yöntemlerini ifade eden bir kelimeye dönüşmüş ve bugünkü “algoritma” kavramı ortaya çıkmıştır. El-Harezmi’nin denklemler üzerine yazdığı bir başka kitabın adındaki “el-cebr” kelimesi de bugün kullandığımız “cebir” kelimesinin kaynağıdır.
İyi bir algoritmanın özellikleri
Bir adımlar dizisinin algoritma sayılabilmesi için genellikle şu özellikleri taşıması beklenir:
- Açıklık: Her adım tek bir şekilde anlaşılmalıdır. “Biraz karıştır” yerine “iki dakika karıştır” demek gibi.
- Sonluluk: Algoritma belirli sayıda adımdan sonra mutlaka bitmelidir. Sonsuza kadar süren bir işlem algoritma sayılmaz.
- Girdi: Algoritma bir başlangıç verisiyle çalışır. Örneğin sıralanacak bir isim listesi.
- Çıktı: Sonunda bir sonuç üretir. Örneğin alfabetik sıraya dizilmiş liste.
- Uygulanabilirlik: Her adım gerçekten yapılabilir olmalıdır.
Günlük hayattan algoritma örnekleri
Yemek tarifi
Bir yemek tarifi, en bilinen algoritma örneğidir. Malzemeler girdiyi, adım adım talimatlar işlemi, ortaya çıkan yemek ise çıktıyı temsil eder. Adımların sırası önemlidir: Kek harcını fırına verdikten sonra yumurta eklemeye çalışmak işe yaramaz.
Yol tarifi
“Düz gidin, ikinci ışıktan sağa dönün, eczanenin yanındaki sokağa girin” şeklindeki bir yol tarifi de bir algoritmadır. Harita uygulamaları da aslında çok sayıda olası güzergâh arasından en kısa ya da en hızlı olanı bulan algoritmalar kullanır.
Çamaşır makinesi programı
Makineye su alma, yıkama, durulama ve sıkma adımlarını belirli bir sırada ve sürede uygulatan program da bir algoritmadır. Bazı adımlar koşula bağlıdır: Su belirli bir seviyeye ulaşmadan yıkama başlamaz.
Klasik bir örnek: Öklid algoritması
Bilinen en eski algoritmalardan biri, antik Yunan matematikçisi Öklid’in eserlerinde yer alan ve iki sayının en büyük ortak bölenini (EBOB) bulmaya yarayan yöntemdir. Adımları şöyledir:
- Büyük sayıyı küçük sayıya bölün ve kalanı bulun.
- Kalan sıfırsa, küçük sayı aradığınız EBOB’dur.
- Kalan sıfır değilse, küçük sayıyı büyük sayının yerine, kalanı da küçük sayının yerine koyup birinci adıma dönün.
48 ve 18 sayılarıyla deneyelim: 48’i 18’e böldüğümüzde kalan 12’dir. Şimdi 18’i 12’ye bölüyoruz; kalan 6. Ardından 12’yi 6’ya bölüyoruz; kalan 0. Demek ki 48 ile 18’in en büyük ortak böleni 6’dır. Bu yöntem, sayılar ne kadar büyük olursa olsun aynı adımlarla ve kesin bir sonuçla çalışır.
Algoritmalar nasıl gösterilir?
Bir algoritmayı anlatmanın birkaç yolu vardır:
- Düz metin: Adımların numaralandırılarak cümlelerle yazılması.
- Akış şeması: Adımların kutular, karar noktalarının ise baklava dilimi şekilleriyle gösterildiği, oklarla birbirine bağlanan çizimler.
- Sözde kod: Herhangi bir programlama diline bağlı olmadan, programlama mantığına yakın bir dille yazılmış adımlar.
- Program: Algoritmanın bir programlama diliyle, bilgisayarın çalıştırabileceği biçimde yazılmış hali.
Yani algoritma bir fikirdir, program ise o fikrin belirli bir dilde yazılmış uygulamasıdır. Aynı algoritma farklı programlama dilleriyle yazılabilir.
Aynı sorunu çözen iki algoritma
Bir sorunun çoğu zaman birden fazla çözüm yolu vardır ve bunlar arasında hız açısından büyük farklar olabilir. Alfabetik sıraya dizilmiş, bin kişilik bir isim listesinde bir ismi aradığınızı düşünün.
İlk yöntem, listeyi baştan başlayıp tek tek kontrol etmektir. Şanssızsanız bin ismin hepsine bakmanız gerekir. İkinci yöntem ise listenin ortasını açmak, aradığınız ismin bu noktadan önce mi sonra mı geldiğine bakmak ve listenin yarısını gözden çıkarmaktır. Bu işlemi kalan yarıda tekrarladığınızda, en fazla on adım civarında ismi bulursunuz; çünkü bin, ikiye on kez bölündüğünde bire iner. Bu ikinci yönteme ikili arama denir ve eskiden telefon rehberinde isim ararken çoğumuz farkında olmadan bunu yapardık.
Bilgisayar biliminde algoritmaların ne kadar hızlı çalıştığını ve ne kadar bellek kullandığını inceleyen ayrı bir çalışma alanı vardır. Veri miktarı büyüdükçe doğru algoritmayı seçmek, saniyeler ile saatler arasındaki fark anlamına gelebilir.
Algoritmalarda karar ve tekrar
Basit görünen algoritmaların çoğu iki temel yapı üzerine kurulur. Bunları tanımak, bir algoritmayı okumayı ve yazmayı kolaylaştırır.
Koşul (karar)
“Eğer hava yağmurluysa şemsiye al, değilse alma” gibi, bir duruma göre farklı yollardan birini seçmeye koşul denir. Akış şemalarında bu adım genellikle baklava dilimi şeklinde gösterilir ve “evet” ile “hayır” olmak üzere iki çıkışı vardır.
Döngü (tekrar)
“Çorba kaynayana kadar ara ara karıştır” gibi, bir koşul sağlanana kadar aynı adımın tekrarlanmasına döngü denir. Öklid algoritmasındaki “birinci adıma dön” talimatı da bir döngüdür. Döngülerde en önemli nokta, bir noktada mutlaka bitmeleridir; aksi halde algoritma sonsuza kadar çalışır.
“Sosyal medya algoritması” ne demek?
Günlük dilde “algoritma” dendiğinde çoğu zaman sosyal medya platformlarının, video sitelerinin ya da alışveriş uygulamalarının içerikleri hangi sırayla göstereceğine karar veren sistemler kastedilir. Bu sistemler; kullanıcının neleri beğendiği, neyi ne kadar süre izlediği ve hangi içeriklerle etkileşime geçtiği gibi sinyalleri kullanarak kişiye özel bir akış oluşturur.
“Algoritma bu gönderiyi öne çıkarmadı” gibi cümleler bu sıralama sistemini anlatır. Bu sistemlerin ayrıntıları genellikle platformlar tarafından tam olarak açıklanmaz ve zaman içinde sık sık değiştirilir.
Sık sorulan sorular
Algoritma ile program aynı şey mi?
Hayır. Algoritma, bir sorunu çözmek için izlenecek adımların mantığıdır. Program ise bu adımların bir programlama diliyle, bilgisayarın anlayacağı şekilde yazılmış halidir.
Algoritma öğrenmek için matematik bilmek şart mı?
Temel algoritmik düşünme için ileri matematik gerekmez. Bir işi adımlarına ayırmak, sıralamak ve koşulları belirlemek başlangıç için yeterlidir. Daha ileri konularda matematik bilgisi önem kazanır.
“Algoritmik düşünme” ne demek?
Bir sorunu küçük parçalara ayırmak, çözüm için gereken adımları sıraya koymak ve bu adımları tekrar kullanılabilir hale getirmek anlamına gelir. Okullarda kodlama derslerinde kazandırılmaya çalışılan temel beceri budur.
İlgili yazılar
Bir Malumat Yayın Ekibi; bilim, dil, resmî işlemler ve gündelik hayat konularında kaynaklara dayalı rehber içerikler hazırlar.