Kısaca algoritma analizi bir yazılımın belirli kaynak kullanımı ile belirli özelliklerinin çalışması durumunda, performansının analiz edilmesi süreci olarak tanımlanabilir.
Algoritma analizi hakkında genel bilgiler paylaşmadan önce algoritma, yazılım algoritmaları ile kısaca bilgi aktarmak faydalı olacaktır.
Algoritma Nedir?
Basit anlamda algoritma, bir problemi çözmek veya amaca ulaşmak için işin nasıl yapılabileceğini içeren yönergedir denilebilir. Bir reçete olarak da düşünülebilir. Günlük hayattan çok basit bir örnek ile bir yemek yapmak isteniliyor ise elinizdeki yemek tarifini bir algoritma olarak düşünebilirsiniz.
Algoritma, matematik biliminde tarihte ilk defa aynı zamanda “Cebir” inde kurucusu sayılan Harezmi’nin ortaya koyduğu tanımlar ile kullanılmaya başlanmıştır.
Yazılım Algoritmaları
Algoritma bilişim teknolojileri alanında sıklıkla kullanılır. Yazılım dünyasında kod yazılmadan önce genellikle algoritmaya ihtiyaç duyulur. Örneğin arama motoru algoritması, şifreleme algoritması.
Algoritmalar yazılım ile bir sorunu çözmek veya görevi yerine getirmek için bilgisayara adım adım talimat verilmesini sağlar. Fakat sadece adımlar ile yapılacakları, komutları belirlemek ile sınırlı kalmaz, aynı zamanda değişik durumlarda bu komutların nasıl çalışacağını belirleyen değişkenler üzerine kurulmuş bir yapı olarak düşünülebilir. Programlamada algoritmalar genellikle fonksiyon olarak oluşturulur.
Bir yazılımda belirli bir zaman veya tarih aralığındaki bir firmanın satış rakamlarının bir veri tabanından sorgulanarak, bir önceki ay veya yıl verileri ile karşılaştırılması, ardından çubuk grafik ile kıyaslamanın gösterilmesi sonucu bir çok algortima ile sağlanabilmektedir. Bu durumda algoritma analizi en uygun algoritmaların seçimi için devreye girer ve performansı yüksek yazılımlar üretilmesini katkı sağlar.
Algoritma, sırası ile çalıştırılması gereken komutlar zincirini içerir. Algoritmanın görsel olarak ifade edilmesi mümkündür. Bu görsele akış diyagramı (FlowChart) denilir.
Akış Diyagramı (Flow Chart)
Aşağıda akış diyagramları üzerinde sıklıkla kullanılan işaretler ile ilgili görsel örnekler mevcuttur.
ALGORİTMA ANALİZİ
Bilgisayar algoritmalarının analizi; algoritmanın nasıl çalıştığı, ne kadar zamanda çalıştığı, sonlanıp sonlanmadığı, herhangi bir konuda bir algoritmanın yazılıp yazılamayacağı konusunda temel sorular ile ilgilenir.
Bu analiz, bir algoritmanın çalışma süresini tahmin ederek başlar. Örneğin bir alışveriş sitesinde gerçekleştirilecek satış işleminin sıra ile tüm adım, tüm aşamaları, ürünün öncelikli olarak kime satılacağı, banka, ödeme ve satış sonrası işlemler gibi süreçler birçok farklı algoritma kullanılarak gerçekleştirilebilmektedir.
Algoritma analizi; tasarımı gerçekleştirilmiş, mevcut algoritma üzerindeki problemlere yoğunlaşır, hangi algoritmanın kullanılarak sistemin daha hızlı ve yüksek performans ile çalışmasının sağlanması konularını çözüme kavuşturmak için yöntemler sunar.
Algoritma analizi matematikte kullanılmakta olan bazı deneysel analizler, asimptotik analizleri de içerebilir. Algoritma analizinin en önemli getirilerinden biri de sistemin belirli yöntem ve özellikler ile zamana bağlı olarak nasıl çalışabileceğinin, (en iyi durumunda, ortalama ve en kötü durumda sisteme getirilecek yüklerin) ölçümlenmesini inceler.
Her algoritmanın maliyet (harcanan zaman) ve yer (harcanan hafıza) kullanımı ölçümlenebilir. Ölçüm yapılacak veri giriş boyutu ve/veya diğer çeşitli parametreler temelinde analiz sonucu bir çıktı verir.
Deneysel analiz sonucu deneysel veriler ile algoritmanın davranışını örnek – 2 (Grafik) görselinde deki gibi bir grafik dahilinde görüntülenebilir.
Asimptotik (Asymptotic) Algoritma Analizi
Bir yazılımda kullanılan algoritmanın, ne kadar sürede çalıştığını en kolay şekilde ölçümlemek için; kullanılan yazılım geliştirme dilinde yararlanılabilecek hazır fonksiyonlar kullanılabilmektedir.
Algoritma analizinde genellikle karmaşıklık teoremi kullanılmaktadır. Matematiksel hesaplamalar ile algoritma performansı hakkında bilgiler edinilebilir, yapılan analiz bir algoritmanın asimptotik değerlerini bulmayı hedefler.
Yaygın olarak kullanılan üç değer:
- Big OH Notasyonu – Zaman karmaşıklığında üst sınırı gösterir. Algoritmaların karmaşıklığındaki büyüme oranı (Growth), kısaca koddaki operasyonların (döngü sayısının) max değerinin hesaplanması denilebilir. En kötü durum analizidir.
- Big Omega Notasyonu – Zaman karmaşıklığında alt sınırı gösterir. Bu değerden daha az bir zaman içeren çalışma hızı bulunamaz denebilir.
- Big Theta Notasyonu – Big OH ve Big Omega arasında ortalama bir karmaşıklığı ifade eder.
Bu yazıya yorum yaparak katkıda bulunabilir,
Konu hk. Detaylı bilgiye ihtiyaç duymanız durumunda info@analizgerek.com e-posta adresimize bildirimde bulunabilirsiniz.