Algoritma
Algoritma; bir işin gerçekleşmesi ya da bir problemin çözülmesi için planlanan yöntemler ve basamakların birleşimine verilen isimdir. Genelde programlama alanında ya da matematiksel problemlerin çözümünde kullanılan, başlangıcı ve bitişi açıkça belli olan işlemler bütünü olarak tanımlanır. Yapılması planlanan işin yapılabilmesi için ihtiyaç olan hareketlerin, işlemlerin ya da çalışmaların adımlar halinde düzenli olarak belirlenmesidir.
Problem çözümünde kullanılan iki yaklaşımdan birisidir ve sezgisel çözüm yaklaşımına göre daha çok tercih edilir. Bir bilgisayar programcısı için bir programlama dilinden önce öğrenilmesi gereken konular arasında gösterilir ve programlamanın en önemli başlığı olarak tanımlanabilir.
Tarihçe
Bu kavram, ilk olarak 9. yüzyılda ortaya çıkmıştır ve ilk ortaya koyan Harezmi’dir. Tam adı, Ebu Abdullah Muhammed İbn Musa el Harezmi olan alim, cebir alanındaki çalışmalarını yazılı hale getirerek matematik alanına büyük katkılar verdi. Harezmi’nin dünyaca en çok bilinen ve Latince çevirileri olan kitabı; Hisab el-cebir ve el-mukabala (حساب الجبر و المقابلة) ‘dır. Bu kitap aynı zamanda bilinen ilk algoritma koleksiyonu olarak tanımlanır.
Algoritma kelimesi köken olarak ‘Algorizm’ kelimesinden gelir. Bunun sebebi, Harezmi’nin kitabının Latinceye çevirildikten sonra Avrupa’da zor telaffuz edilmesi ve Harezmi'nin ismini söyleyemeyen Avrupalıların ‘Algorizm’ olarak adlandırmasıdır.
Sonuç olarak Algorizm kavramı, Arap sayıları ile problem çözme anlamında kullanılmaya başlanmış olsa da zamanla bugünkü haline dönüşerek genel kapsamda kullanılmaya başlandı. Son olarak 1950’ler sonrasında özellikle bilgisayar teknolojilerinde yaşanan gelişmelerle birlikte programlama alanında hemen hemen yapılacak her işin yapılma biçimini ve yapımı için uygulanacak basamakları temsil eden bir kavram geldi.
Algoritma oluşturma
Algoritma, düz yazı ve anlatım biçiminde ya da akış diyagramı şeklinde olabilir. Genel olarak tercih edilen akış diyagramı şeklinde olandır. Bir süreç oluşturulabilmesi için yapılacak işi tanımlayan bazı semboller kullanılır. Özellikle bir programın geliştirilmesi ve sürecin anlaşılabilmesi açısından bu semboller büyük önem taşır.
Bir algoritma oluşturulabilmesi için öncelikle yapılacak iş ya da problem net olarak belirlenmeli ve çözüm yöntemleri tespit edilmelidir. İşin yapılması ya da çözümün uygulanması için başlangıç hareketinden itibaren sonuca ulaştıracak tüm basamaklar uygulama sırası ile belirtilmelidir. Bu konudaki en önemli kavramlardan birisi akış şemasıdır; bir algoritmanın çözümünün, şematik olarak gösterilmesine akış şeması denilir.
Bazı akış şeması komutları şu şekildedir;
- Başla-Bitir (sonlandırıcı)
- Input (girişler)
- İşlem
- Görüntüleme
- Karar
- Tekrarlı işlem
- Elle girilen değer
Örnekler
Örnek 1 (Gündelik kavramlar ile açıklama)
Hedeflenen İş: Evden okula gitmek
Başlangıç: Ev
Bitiş: Okul
Algoritma:
Adım 1: Kapıyı aç
Adım 2: Ayakkabıyı giy
Adım 3: Kapıyı kapat
Adım 4: Binadan çık
Adım 5: Yoldan yürü
Adım 6: 2. Yol ayrıma kadar yürü
Adım 7: Sola dön
Adım 8: Yolu bitir
Adım 9: Okula gir.
Örnek 2 (Programatik kavramlar ile açıklama)
Hedeflenen İş: Kullanıcı tarafından girilen bir sayının faktöriyel değerini bulmak
Başlangıç: Programın başlaması
Bitiş: Sonucun gösterilmesi
Algoritma:
Adım 1: Programı çalıştır
Adım 2: factorial,i ve n değişkenlerini tanımla
Adım 3: Değişkenlerin başlangıç değerlerini tanımla
factorial = 1
i =
Adım 4: Ekrandan girilen n değerini oku
Adım 5: (i=n) eşitliği sağlanana kadar tekrarla
factorial = factorial*i
i = i+1
Adım 6: Factorial değişkeninin değerini göster
Bazı Önemli Algoritma Çeşitleri
- Arama algoritmaları
- Bellek yönetimi algoritmaları
- Bilgisayar grafiği algoritmaları
- Birleşimsel algoritmalar
- Çizge algoritmaları
- Evrimsel algoritmalar
- Genetik algoritmalar
- Kripto algoritmaları veya kriptografik algoritmalar
- Kök bulma algoritmaları
- Optimizasyon algoritmaları
- Sıralama algoritmaları
- Veri sıkıştırma algoritmaları
Algoritmaların Kullanım Alanları Nelerdir?
Algoritmalar, bir veri setinde belirli bir hedefe ulaşmak için kullanılan yöntemlerdir. Örneğin, veri madenciliği algoritmaları veri setlerinde anlamlı bilgi veya gizli desenler bulmak için kullanılır. Makine öğrenimi algoritmaları, veri setlerini kullanarak modeller öğrenir ve bu modelleri sonraki veri setlerine uygulamak için kullanılır. Örneğin, bir makine öğrenimi algoritması veri setini kullanarak bir sınıflandırma modeli öğrenebilir, bu modeli sonraki veri setlerine uygulayarak yeni veri noktalarının hangi sınıfa ait olduğunu tahmin edebilir. Bunun yanı sıra, algoritmalar aşağıdaki gibi çeşitli alanlarda da kullanılabilir:
- İmge işleme: Algoritmalar, görüntüleri işlemek ve özelliklerini belirlemek için kullanılır. Örneğin, bir imge işleme algoritması bir fotoğraftaki yüzleri tanımlayabilir ve bu yüzlerin saç rengini belirleyebilir.
- Sosyal ağ analizi: Algoritmalar, sosyal ağ verilerini analiz etmek ve çeşitli trendleri belirlemek için kullanılır. Örneğin, bir sosyal ağ analizi algoritması bir kullanıcının arkadaş çevresini inceleyerek bu kullanıcının popülerliğini ölçebilir.
- Veri sıkıştırma: Algoritmalar, veriyi daha küçük bir şekilde saklamak için kullanılır. Örneğin, bir veri sıkıştırma algoritması bir resmi daha küçük bir dosya boyutuna indirgemek için kullanılabilir.
- Sıralama ve arama: Algoritmalar, veri setlerinde belirli veri noktalarını bulmak için kullanılır. Örneğin, bir arama algoritması bir veri setinde bir kelimeyi arayabilir ve bu kelimeyi içeren veri noktalarını listeleyebilir.
Sonuç
Bu kavram, genel anlamda yaşamın her alanında insanların karşısına çıkabilir. Çünkü algoritma kavramı, çözümden çok çözüme giden yolu temsil eder. Yapmak istenilen bir yolculuk için hazırlanan bir plan ve bir işin tamamlanması için belirlenen basamaklar temel olarak algoritmayı temsil eder.
Yalnız uygulanmamış ve sonuçları gözlemlenmemiş bir algoritma, patent için yasalar tarafından uygun görülmemiştir. Ancak yazılımdaki algoritmalar, bu noktada çok fazla tartışma konusu olmuştur.