Algoritma nedir?

Algoritmaların dünyayı nasıl çalıştırdığını keşfedin

Bir algoritma bir dizi talimattır. Tanım gerçekten bu kadar basit. Bir algoritma, bu gibi talimatlar vermek kadar kolay olabilir:

  1. Caddeden aşağı git
  2. İlk sağa dön
  3. Soldaki ikinci evi bul
  4. Kapıyı çal ve
  5. Paketi teslim et.

Ancak algoritmanın tanımı basit olsa da, gerçek anlam ve hayatımızı nasıl etkilediği oldukça karmaşık olabilir.

Bir Algoritma Örneği

Günlük yaşamımızda kullandığımız yaygın bir algoritma örneği bir reçetedir. Bu talimatlar bize, ihtiyaç duyacağımız tüm malzemeleri ve bu bileşenlerle ne yapacağımıza dair talimatları veriyor. Kolay geliyor, değil mi?

Ama ya ölçü kabının nerede olduğunu bilmiyorsanız? Bulmak için bir algoritmaya ihtiyacın var. Ölçüm kabının nasıl kullanılacağı hakkında bir algoritmaya bile ihtiyacınız olabilir.

Bu yüzden bir algoritma bir takım talimatlar olsa da, bu talimatları kimin veya neyin yorumlayacağını da hesaba katmalıdır. Örneğin, evinizden en yakın bakkala nasıl ulaşacağınızı anlatan bir arkadaşınıza yol tarifi verirseniz, arkadaşınız evinizin nerede olduğunu bildikleri takdirde sadece o mağazayı nasıl alacağını bilir. Belirli bir marketi başka bir arkadaşının evinde söyleyecek yetenekli değiller.

Bu, bir algoritmanın hem basit hem de karmaşık olabilmesidir. Ve bilgisayar algoritmaları açısından konuştuğumuzda, bir bilgisayarın yapabileceklerini anlamak, algoritmaları formüle etmenin temel bir parçasıdır.

Sıralama Algoritmaları Nasıl Evrildi?

Oluşturulan en eski algoritmalardan biri kabarcık sıralama rutiniydi. Kabarcık sıralama, bir veri kümesinde döngü yaparak, her bir değer kümesini yan yana karşılaştırarak ve gerektiğinde değiştirerek sayıları, harfleri veya kelimeleri sıralamak için kullanılan bir yöntemdir.

Bu döngü, algoritmanın bir şeyi değiştirmeye gerek kalmadan listenin tamamı boyunca hareket edene kadar tekrarlanır, yani değerler doğru şekilde sıralanır. Bu tip bir algoritma genellikle özyinelemeli bir algoritma olarak anılır, çünkü görev tamamlanana kadar kendi üzerinde tekrar tekrar devreye girer.

Algoritma şu şekilde basit görünebilir:

  1. İlk değere git.
  2. Bir sonraki değere karşı bu değeri kontrol edin ve gerekirse takas konumlarını kontrol edin
  3. Bir sonraki değere gidin ve karşılaştırmayı tekrarlayın.
  4. Listenin sonunda olursak, döngü sırasında herhangi bir değer değiştirildiyse en üste geri dönün.

Ancak kabarcık sıralama, değerleri sıralamanın en etkili yolu olarak ortaya çıkmadı. Zaman geçtikçe ve bilgisayarlar karmaşık görevleri hızlı bir şekilde yapabildikçe, yeni sıralama algoritmaları ortaya çıktı.

Böyle bir algoritma ilk listeden tarar ve sıralanmış değerlerin ikinci bir listesini oluşturur. Bu yöntem yalnızca orijinal listeden tek bir geçiş yapar ve her bir değerle, değeri koymak için doğru yeri bulana kadar ikinci listeden geçer. Genellikle, kabarcık sıralama yöntemini kullanmaktan daha verimlidir.

Bu algoritmaların gerçekten çılgın olabileceği yer. Ya da nasıl göründüğüne bağlı olarak gerçekten ilginç.

Kabarcık sıralama yöntemi, birçok yolla değerleri sıralamada en verimli olmayan yöntemlerden biri olarak kabul edilirken, orijinal liste doğru şekilde sıralanırsa, kabarcık sıralaması en verimli olanlardan biri olabilir. Çünkü, bu durumda, kabarcık sıralama algoritması listeden tek bir zaman geçecek ve doğru şekilde sıralanacağını belirleyecektir.

Ne yazık ki, listemizin sıralanıp çoğaltılmadığını her zaman bilmeyiz, bu yüzden çok sayıda listelerde ortalama olarak kullanmak için en verimli olacak bir algoritma seçmeliyiz.

Kabarcık Sıralamasından Ne Öğreniyoruz?

Facebook Algoritmaları Ve Gündelik Yaşamda Daha Fazlası

Algoritmalar, insanlara her gün yardım ediyorlar. Web'de arama yaptığınızda, en iyi arama sonuçlarını bulmaya çalışan bir algoritma çalışıyor. Akıllı telefonunuzu yol tarifi için sorun ve bir algoritma sizin için en uygun rotayı belirler. Ve Facebook'a göz atarken, arkadaşımızın Facebook gönderilerinden hangisinin bizim için en önemli olduğuna bir algoritma karar verir. (Arkadaşlarımın Facebook'un en çok sevdiğimizi düşündüğü bir şey olmadığını umalım)

Ancak algoritmik olarak düşünmek, bilgisayar hayatımızın çok ötesinde bize yardımcı olabilir. Daha iyi bir sandviç yapmamıza bile yardım edebilir.

Diyelim ki iki dilim ekmekle başlıyorum, bir dilim dilime hardal ve başka bir dilime mayonez sürüyorum. Mayonez ile ekmeğin üzerine bir dilim peynir, üstüne biraz jambon, biraz marul, iki dilim domates koyup üzerine dilimi hardalla kaplarım. İyi sandviç, değil mi?

Kesinlikle yemek yersem hemen. Ama bir süreliğine masanın üstünde bırakırsam, o üst dilim ekmek o domatesin bazılarını ıslatmak için biraz su içebilir. Oldukça beklenmedik bir problem oldu ve fark etmeden yıllar önce sandviç yapabilirim, ama bir kez daha, daha iyi bir sandviç yapmak için algoritmamı değiştirmenin yollarını düşünmeye başlayabilirim.

Mesela domateslerden kurtulabilirim. Ama ben domates tadı kaybetmek istemiyorum. Bunun yerine, ekmeği ve maruldan sonra domatesleri sandviç üzerine koyabilirim. Bu, marulun domates ve ekmek arasında koruyucu bir bariyer oluşturmasına izin verir.

Bir algoritma böyle gelişir. Ve bir algoritmanın bir bilgisayar tarafından bir algoritma olarak çalıştırılması gerekmez. Bir algoritma bir süreçtir ve süreçler hepimizin etrafındadır.