Suat Arslan - Algoritma
Algoritmanın Tarihi
Algoritma sözcüğü, Özbekistan'ın Harezm, bugünkü Türkmenistan'ın Khiva kentinde doğmuş olan Ebu Abdullah Muhammed İbn Musa el Harezmi adındaki İran'lı alimden kaynaklanır. Bu alim 9. yüzyılda cebir alanındaki algoritmik çalışmalarını kitaba dökerek matematiğe çok büyük bir katkı sağlamıştır. "Hisab el-cebir ve el-mukabala" kitabı dünyanın ilk cebir kitabı ve aynı zamanda ilk algoritma koleksiyonunu oluşturur. Latince çevirisi Avrupa'da çok ilgi görür. Alimin ismini telaffuz edemeyen Avrupalılar "algorizm" sözcüğünü "Arap sayıları kullanarak aritmetik problemler çözme kuralları" manasında kullanırlar. Bu sözcük daha sonra "algoritma"ya dönüşür ve genel kapsamda kullanılır.
Faaliyetlerin birçoğu algoritmanın tanımının geliştirilmesine yönlendirilmiştir ve aktifliği çevredeki sorunlar nedeniyle, özellikle matematiğin temelleri(özellikle Church-Turing tezi) ve akıl felsefesi(özellikle yapay zeka konusundaki tartışmalar) sebebiyle devam etmiştir
Algoritma Nedir?
Bir problemin çözümünde izlenecek yol anlamına gelir ve problemin çözümünün adımlar halinde yazılmasıyla oluşturulur. Genellikle matematikte ve programlamada bir işi yapmak için tanımlanan, belli bir başlangıcı ve sonu olan, açıkça belirlenmiş basamaklardır. Algoritmada 3 temel bileşenimiz 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. Her algoritma aşağıdaki kriterleri sağlamalıdır. 1. Girdi : Sıfır veya daha fazla değer dışarıdan verilmeli. 2. Çıktı : En azından bir değer üretilmeli. 3. Açıklık : Her işlem (komut) açık olmalı ve farklı anlamlar içermemeli. 4. Sonluluk: Her türlü olasılık için algoritma sonlu adımda bitmeli. 5. Etkinlik : Her komut kişinin kalem ve kağıt ile yürütebileceği kadar basit olmalıdır.
Algoritma Hayatımızda
►Bir cep telefonunun el kitapçığında yazan, rehber kaydı girmek için izlenecek yollar, o işin algoritmasıdır. ►Bir e-ticaret uygulamasında ürün satış algoritması çıkarılır. ►Bir tiyatro uygulamasının sürekli gerçekleştireceği temel işlem bilet satmaktır. Bu işlemi gerçekleştirmek için gerekli kodlar yazılmadan önce, algoritma kurulmalıdır. ►Üniversite eğitim notunu hesaplama; Üniversitede bir dersin başarı notu, vize ve bir final notu hesaplanır. Vize notunun katsayısı finalden daha düşüktür. Sonuçta çıkan not 50 ve üstüyse öğrenci geçer, 50 altıysa kalır. Vizenin %30 ve finalin %70 ağırlıklı olduğu başarı notunun hesaplanmasını akış diyagramı ve algorıtma kullanarak gösterilebilir
Algoritma bilişim öğrencilerinin sıklıkla kullandıkları bir yöntemdir.Hatta ilk gördükleri algoritma hazırlamak ve programlama dilinde uygulamasını öğrenmek olur.
Şimdi ise bu algortima örneğini inceleyelim
* Klavyeden girilen 3 yazılının ortalamasını bulup kalıp-geçtiğini hesaplayan programın algoritmasını yapınız. Adım -Başla Adım -1. yazılıyı giriniz(y1) Adım -2. yazılıyı giriniz(y2) Adım -3. yazılıyı giriniz(y3) Adım -toplam=y1 + y2 Adım -ortalama=toplam + y3 Adım -ortalama= ortalama / 3(sınav sayısına göre değişkenlik gösterir) Adım -Eğer ortalama 45'ten küçük ise(ortalama < 45) Adım -kaldı Adım -Eğer ortalama 45'ten büyük ise(ortalama > 45) Adım -geçti Adım -Dur(Stop)
ÜSTEKİ ŞEMA BASİT BİR PROGRAMLAMA ALGORİTMASIDIR.
Algoritma Çeşitleri
Gerçek anlamda algoritma çeşitleri aslında her program uygulaması için farklı bir algoritma çeşidi keşfedilebilir. Fakat ihtiyaçlar doğrultusunda geliştirilmiş bazı algoritma çeşitleri vardır.
Arama Algoritmaları
Bu algoritmalar bilgi kümesi içerisinde belirli anahtar kelimelere dayanılarak, onunla ilgili diğer bilgilere erişmeyi amaçlar. Büyük miktarda verinin depolandığı alanlarda istenen bilgiye en kısa sürede erişmek için geliştirilen algoritmalardır. Örnek olarak ardışıl arama, ikili arama, çırpı fonksiyonu gösterilebilir.
Sıralama Algoritmaları
Verilerin belirli kriterler göz önünde bulundurularak, anlamlı ve sıralı şekilde sunulmasını sağlayan algoritmalardır. Verilerin sıralı olması bilgiye erişimi kolaylaştırılır ve işlemlerin daha hızlı yapılmasını sağlar. Bu algoritmaya hızlı sıralama , kabarcık sıralama, seçmeli sıralama örnek verilebilir.
Graf Boyama Algoritmaları
Graf bir olay veya ifadenin düğüm ve çizgiler kullanılarak gösterilmesine olanak sağlayan bir veri modelidir. Eğer bir problem graf veri modeli şekline benzetilebiliyorsa, probleme algoritmik bir bakış açısı sağlanır ve bu veri modelinde tanımlanmış olan teoriler, algoritmalar ve fonksiyonlar çözüm de kullanılabilir. Bu algoritma gezgin satıcı ve en kısa yolun bulunması gibi problemlere hızlı çözümler sunmaktadır.
Genetik Algoritmalar
Genetik algoritmalar problemlerin çözümü için evrimsel süreci bilgisayar ortamında taklit ederek, tek bir çözüm sunmak yerine farklı çözümlerden oluşan bir çözüm kümesi üretirler. Problemlerin matematiksel bir metotla çözülemediği karmaşık sistemler içerisinde sıklıkla kullanılırlar. Ders dağıtım programları, finansal işlemler ve üretim analizi gibi birçok uygulama alanı mevcuttur.
Sıkıştırma Algoritmaları
Bilgisayar ortamında saklanan verilerin, orjinalini kaybetmeden bellek üzerinde daha az yer kaplayacak şekilde kodlanması işlemini gerçekleştiren algoritmalardır. Sıkıştırma teknikleri genel olarak kayıplı ve kayıpsız olmak üzere iki sınıfta toplanırlar. Günümüzde resim, ses, video, metin gibi tüm veri kümeleri çeşitli yöntemlerle sıkıştırılabilmektedir.
Şifreleme Algoritmaları
Verileri aritmetiksel, mantıksal, karıştırma gibi yöntemlere tabi tutarak yetkisiz kişilerden saklamaya yarayan algoritmalara verilen isimdir. Şifreleme günümüzde veri güvenliğinin öneminin artmasıyla kriptoloji adında başlı başına bir alan haline dönüşmüştür. Şifreleme algoritmalarına örnek olarak Des, Md5, Rsa, Aes, 3Desörnek olarak gösterilebilir.
Kök Bulma Algoritmaları
Matematik konusu olan kök işlemleri üzerine çalışan algoritma türüdür. x olarak tanımlı bilinmeyen denklemleri kök bulma algoritma yardımı ile çözebilirsiniz.