Algoritma analizi

Algoritma analizi veya diğer adıyla algoritma çözümlemesi, bilgisayar biliminde bir algoritmayı çalıştırabilmek için gereken kaynakların (zaman, yer gibi) miktarının tespitidir. Algoritmaların çoğunluğu, rastgele seçilmiş uzunluktaki girdiler ile çalışmak için tasarlanmıştır. Genellikle, bir algoritmanın verimlilik veya çalışma zamanı, adımların sayısı (zaman karmaşıklığı) veya depolama yerleri (alan karmaşıklığı)'nin girdi uzunluğuyla ilişkili olan işlev olarak ifade edilir.
Algoritma çözümlemesi, verilmiş olan hesaplamalı bir bilinmezi çözen herhangi bir algoritma aracılığıyla gereksinim duyulan kaynaklar için kuramsal tahminleri sağlayan hesaplamalı karmaşıklık kuramının önemli bir parçasıdır. O, verimli algoritmaları bulabilmek veya kıyaslayabilmek için bir anlayış geliştirmemizi sağlar.
Algoritmaların kuramsal çözümlemesinde, sonuşmazsal (asimptotik) anlamda onların karmaşıklığını tahmin etmektir, yani büyük miktarda ve rastsal olan girdiler için karmaşıklık işlevini tahmin etmektir. Büyük O gösterimi, Büyük omega gösterimi ve Büyük theta gösterimi, sonuşmazsaldaki sonları belirtmek için kullanılır. Mesela, ikili arama, aranmakta olan bir listenin uzunluğunun logaritmasına oranlı olan adım sayısında veya O(Log(n))'de veya konuşma diliyle "logaritmik zaman"da çalıştırmak için söylenilir. Genellikle sonuşmazsal tahminler kullanılır, çünkü aynı algoritmanın farklı gerçekleştirmeleri, verimlik açısından diğer algoritmalara kıyasla farklı olabilir. Bunlara rağmen verilen bir algoritmanın herhangi iki "akla yatkın" gerçekleştirmesinin verimliliği, saklı sabit adı verilen bir çarpımsal sabit unsuru aracılığıyla ilişkilidir.
Verimliliği kesin olan yani sonuşmazsal olmayan ölçümler, bazen hesaplanılmış olur, ancak genellikle hesaplama taslamı (modeli) kullanılarak çağrılan algoritmanın belirli gerçeklemesini dikkate alan belirli varsayımlara gereksinim duyarlar. Bir hesaplama taslamı, soyut bilgisayar açısından tanımlanılabilinir. Mesela, Turing makinesi, ve/veya birim zamanda yürütülen belirli işlemlerin olduğu esaslar tarafından. Örnek için, n adet elemanı olan ikili aramayı uyguladığımız sıralanmış dizi ve birim zamanda yapılmış olan dizideki elemanların her birine uğranmasını garanti edersek, o zaman en fazla log2 n + 1 zaman birimi, bir cevabın döndürülmesi için yeterlidir.
| g t Bilgisayar biliminin alt dalları |
| --- | --- | --- |
| Matematiksel temeller | Matematiksel mantık ·  Kümeler kuramı ·  Sayı teorisi ·  Çizge teorisi ·  Tip teorisi ·  Kategori teorisi ·  Sayısal çözümleme ·  Bilgi teorisi ·  Kombinatorik ·  Boole cebiri |  |
| Hesaplama teorisi | Otomat teorisi ·  Hesaplanabilirlik teorisi ·  Hesaplamalı karmaşıklık teorisi ·  Kuantum hesaplama teorisi |  |
| Algoritmalar ve veri yapıları | Algoritma çözümlemesi ·  Algoritma tasarımı ·  Hesaplamalı geometri |  |
| Programlama dilleri ve derleyiciler | Ayrıştırıcılar ·  Yorumlayıcılar ·  Yordamsal programlama ·  Nesne yönelimli programlama ·  Fonksiyonel programlama ·  Mantık programlama ·  Programlama paradigmaları |  |
| Eşzamanlı, paralel ve dağıtık sistemler | Çoklu işleme ·  Dağıtımlı hesaplama ·  Eşzamanlılık denetimi |  |
| Yazılım mühendisliği | Gereksinim çözümleme ·  Yazılım tasarımı ·  Bilgisayar programlama ·  Biçimsel yöntemler ·  Yazılım testi ·  Yazılım geliştirme süreci |  |
| Sistem mimarisi | Bilgisayar mimarisi ·  Bilgisayar organizasyonu ·  İşletim sistemi |  |
| Telekomünikasyon ve ağ oluşturma | Bilgisayar müziği ·  Yönlendirme ·  Örgü topolojisi ·  Kriptografi |  |
| Veritabanları | Veritabanı yönetim sistemleri ·  İlişkisel veritabanı ·  SQL ·  İşlem yürütme ·  Veritabanı indeksleme ·  Veri madenciliği ·  Metadata (Üst veri) ·  Ana veri (Master data) |  |
| Yapay zekâ | Otomatikleştirilmiş muhakeme ·  Bilgisayarlı dilbilim ·  Bilgisayarlı görü ·  Evrimsel hesaplama ·  Uzman sistemler ·  Makine öğrenimi ·  Doğal dil işleme ·  Robotik |  |
| Bilgisayar grafikleri | Görselleştirme ·  Bilgisayar animasyonu ·  Görüntü işleme |  |
| İnsan-bilgisayar etkileşimi | Bilgisayar erişilebilirliği ·  Kullanıcı arayüzleri ·  Giyilebilir hesaplama ·  Yaygın bilişim ·  Sanal gerçeklik |  |
| Bilimsel hesaplama | Yapay yaşam ·  Biyoenformatik ·  Bilişsel bilim ·  Bilgisayarlı kimya ·  Hesaplamalı nörobilim ·  Hesaplamalı fizik ·  Sayısal algoritmalar ·  Sembolik matematik |  |
Bilgisayar bilimi, ACM Hesaplama ve Sınıflandırma Sistemi'ne göre farklı konu ve alanlara ayrılabilir.