Algoritma Nedir?

Algoritma; bir problemin ya da bir sorunun çözümü için ihtiyaç duyulan tüm işlemlerin mantıksal olarak, sıralı bir şekilde ifade edilmesidir. Algoritma kavramı programlama ya da yazılım geliştirmenin yanı sıra, günlük hayattaki aktiviteler, matematik vb. derslerde karşılaşılan sorunları daha kolaylıkla çözme olanağı sağlar. Algoritma sözcüğü Türkistanlı bir âlimden gelir. Türkistanlı âlim 9. yüzyılda Cebir adında bir kitap oluşturarak algoritmik çalışmalarını sergilemiştir. Kısaca algoritmayı bulan kişi kim diye sorulduğunda Ebu Abdullah Muhammed bin Musa el Harezmi  diyebiliriz. Bu kitabın matematiğe çok büyük katkıları olmuştur. Bu kitap farklı dillere çevrilmiştir. Avrupa da çok ilgi gören kitabın ismi ve âlimin ismi Avrupalılar tarafından telaffuz edilemediği için “algorizm” sözcüğünü kullanmışlardır. Algorizm “Arap sayıları kullanarak problemleri çözmek” anlamına gelir. Zamanla algorizm algoritmaya dönüşmüştür.

el-Harezmi

Örneğin bir küme içerisindeki verilerin sıralanması bir algoritmadır, aynı küme içerisindeki bir veriyi arama işlemi ise farklı bir algoritmayı oluşturur. Ancak tüm bu algoritmaları içerisinde barındırıp, kullanıcıların gereksinimini karşılayacak bir çözüm üretildiğinde ise buna program veya yazılım adı verilmektedir.

Bir programın tasarlanması ne kadar zor ve zaman alıcı görünse de, karşılaşılacak problemlerin çözümü algoritmik olarak ifade edildiğinde programın kodlama kısmı oldukça basit hale indirgenir. Program tasarlanırken, kullanılacak veri yapısı ve algoritmalar doğrudan doğruya uygulamaya bağlıdır. Programcı çözüme ulaşmak için var olan algoritmaları kullanabileceği gibi, ihtiyaca göre yeni algoritmalar da oluşturabilir. Bazı durumlarda aynı problemin çözümüne yönelik çok farklı çözümler ortaya atılmıştır, bunlar içerisinden en uygun olanı tespit etmek, uygulamanın yapısına ve programcının bilgi birikimine bağlı olarak değişiklik gösterir.

Algoritmada 3 temel bileşen vardır:
1. Değişkenler: Dışarıdan girilen ve bizim oluşturduğumuz değerleri tutan elemanlardır.
2. Algoritma:  Kısaca gerekli adımların mantıksal bir sıra ile yazılmasıdır.
3. Akış Diyagramı: Birbirine oklar gösterilerek algoritmaları ve şemaları birbirine bağlayan kutulara denir. Kısaca çözümün şekiller ile tasviridir.

Bir Örnekle Açıklayalım!

Klavyeden girilen iki sayının toplamını bulan ve sonucu ekrana yazdıran programın algoritmasını ve akış diyagramını yapalım.

1. Değişkenler

Birinci Sayı: x

İkinci Sayı : y

İki Sayının Toplamı: toplam

2. Algoritma

Adım 1: Başla

Adım 2: Birinci sayıyı oku ve x değişkenine aktar.

Adım 3: İkinci sayıyı oku ve y değişkenine aktar.

Adım 4: x ve y sayılarını topla sonucu toplam değişkenine aktar.

Adım 5: toplam değerini ekrana yazdır.

Adım 6: Dur

3. Akış Diyagramı

HAYDİ BİR ALGORİTMA OYUNU OYNAYALIM!
Aynı problem için farklı algoritmaların çok farklı verimlilik verebileceğiyle ilgili size bir fikir vermek için küçük bir oyun oynayalım. Bilgisayar 1’den 13’e rastgele bir tam sayı seçecek. Bilgisayarın seçtiği sayıyı bulana kadar tahminler yürütmeniz gerekiyor:
Sayıyı bulduktan sonra, bize söyleyin—bir sonraki sayıyı tahmin etmek için hangi tekniği kullandınız?
Belki 1, sonra 2, sonra 3, sonra 4 tahmin ettiniz ve doğru sayıyı tahmin edene kadar, böyle devam ettiniz. Bu yaklaşıma doğrusal arama deriz, çünkü sayıları sıraya dizilmiş gibi tahmin ediyorsunuz. Bu işe yarardı. Ama en fazla kaç tahmine ihtiyacınız olurdu? Bilgisayar 30’u seçseydi, 30 tahmin gerekirdi. Ama yine de, şanslı olabilirsiniz; bilgisayar 1’i seçerse, sayıyı ilk tahminde bulurdunuz. Ya ortalamada neler olur? Bilgisayar 1 ila 30 arasında herhangi bir sayıyı eşit olasılıkla seçiyorsa, ortalamada 15 tahmin gerekir.
Ama, sadece 1, 2, 3, 4, … tahminlerinden çok daha verimli bir şey yapabilirsiniz, öyle değil mi? Bilgisayar bir tahminin çok düşük, çok yüksek veya doğru olduğunu belirttiği için, 15 tahminiyle başlayabilirsiniz. Bilgisayarın seçtiği sayı 15’ten küçükse, o zaman 15’in çok yüksek olduğunu bildiğiniz için, 15 ila 30 arasındaki tüm sayıları ortadan kaldırabilirsiniz. Bilgisayarın seçtiği sayı 15’ten büyükse, 1 ila 15 arasındaki sayıları eleyebilirsiniz. Her durumda, sayıların yarısını eleyebilirsiniz. Bir sonraki tahminde, kalan sayıların yarısını elersiniz. Hep kalan sayıların yarısını eleyerek, devam edin. Bu yarılama yaklaşımına ikili arama diyoruz ve bilgisayar 1’den 30’a hangi sayıyı seçerse seçsin, bu teknikle sayıyı en fazla 5 tahminde bulabilmeniz gerekir.
İşte, 1 ila 300 arasında bir sayı için bunu deneyin. 9’dan fazla tahmin gerekmemeli.
Bu sefer sayıyı bulmanız için kaç tahmin gerekti? Neden 9’dan fazla tahmine asla ihtiyacınız olmaz? (Matematiksel bir açıklama bulabilir misiniz)?

KAYNAKLAR:

1- https://tr.khanacademy.org/computing/computer-science/algorithms/intro-to-algorithms/a/a-guessing-game

2- www.bilgeadam.com/akademi/Pdfs/Kodlama.pdf

3- http://www.elektrikport.com/teknik-kutuphane/bes-dakikada-algoritmayi-taniyin/8223#ad-image-0

4- https://www.kodlamamerkezi.com/algoritma/algoritma-nedir-algoritma-cesitleri/