İçeriğe atla

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.

İlgili Araştırma Makaleleri

Komut kümesi mimarisi, CPU'nun yazılım tarafından nasıl kontrol edileceğini tanımlayan bilgisayar soyut modelinin bir parçasıdır. ISA, işlemcinin ne yapabileceğini ve bunu nasıl yapacağını belirterek donanım ve yazılım arasında bir arayüz gibi davranır.

Bilişim, bilişim bilimi ya da bilgisayar bilimi, bilgi ve hesaplamanın kuramsal temellerini ve bunların bilgisayar sistemlerinde uygulanabilmeleri sağlayan pratik teknikleri araştıran bir yapısal bilim dalıdır. Bilişimciler ya da bilgisayar bilimcileri bilgi oluşturan, tanımlayan ve dönüştüren algoritmik süreçler icat edip, kompleks sistemleri tasarlamak ve modellemek için uygun soyutlamalar formüle ederler. Bilişim Dünya'da hızla gelişmeye devam eden önemli bir teknolojidir.

<span class="mw-page-title-main">AES</span> Şifreleme standartı

AES, elektronik verinin şifrelenmesi için sunulan bir standarttır. Amerikan hükûmeti tarafından kabul edilen AES, uluslararası alanda da defacto şifreleme (kripto) standardı olarak kullanılmaktadır. DES'in yerini almıştır. AES ile tanımlanan şifreleme algoritması, hem şifreleme hem de şifreli metni çözmede kullanılan anahtarların birbiriyle ilişkili olduğu, simetrik-anahtarlı bir algoritmadır. AES için şifreleme ve şifre çözme anahtarları aynıdır.

<span class="mw-page-title-main">Büyük O gösterimi</span>

Büyük O (Big-Oh) gösterimi matematiksel bir gösterim olup işlevlerin (fonksiyonların) asimptotik davranışlarını tarif etmek için kullanılır. Bir işlevin büyümesinin asimptotik üst sınırını daha basit başka bir işlev cinsinden tanımlanması demektir. İki temel uygulama alanı vardır: matematik alanında genellikle kırpılmış bir sonsuz serinin kalan terimini karakterize etmek için kullanılır; bilgisayar bilimlerinde ise algoritmaların bilgi işlemsel karmaşıklığının çözümlemesi için kullanılır.

Paralel hesaplama ya da Koşut hesaplama, aynı görevin, sonuçları daha hızlı elde etmek için çoklu işlemcilerde eş zamanlı olarak işletilmesidir. Bu fikir, problemlerin çözümünün ufak görev parçalarına bölünmesi ve bunların eş zamanlı olarak koordine edilmesine dayanır. Paralel hesaplama ile performans artar, büyük sorunlar daha az sürede çözülür ve bilimdeki gelişmeler paralel hesaplamaya gereksinim duyar.

Veri yapısı, bilgisayar ortamında verilerin etkin olarak saklanması ve işlenmesi için kullanılan yapı.

Kolmogorov karmaşıklığı, bilgisayar biliminde, bir metin parçası gibi bir nesneyi tanımlamak için kullanılması gereken bilgi işlemsel kaynakların ölçüsü.

<span class="mw-page-title-main">Kalkülüs</span>

Başlangıçta sonsuz küçük hesap veya "sonsuz küçüklerin hesabı" olarak adlandırılan kalkülüs, geometrinin şekillerle çalışması ve cebirin aritmetik işlemlerin genellemelerinin incelenmesi gibi, kalkülüs sürekli değişimin matematiksel çalışmasıdır.

Ayrık Fourier Dönüşümü, Fourier analizinde kullanılan özel bir Fourier dönüşümüdür.

<span class="mw-page-title-main">Birleştirmeli sıralama</span>

Birleşmeli Sıralama, bilgisayar bilimlerinde derecesinde karmaşıklığa sahip bir sıralama algoritmasıdır. Girdi olarak aldığı diziyi en küçük hale gelene kadar ikili gruplara böler ve karşılaştırma yöntemi kullanarak diziyi sıralar.

<span class="mw-page-title-main">Sıralama algoritması</span>

Sıralama algoritması, bilgisayar bilimlerinde ya da matematikte kullanılan, verilen bir listenin elemanlarını belirli bir sıraya sokan algoritmadır. En çok kullanılan sıralama türleri, sayı büyüklüğüne göre sıralama ve alfabetik sıralamadır. Sıralama işleminin verimli yapılması, arama ve birleştirme algoritmaları gibi çalışması için sıralanmış dizilere gereksinim duyan algoritmaların başarımının yüksek olması için önemlidir. Sıralama algoritmaları bilgisayarlarda tutulan verilerin düzenlenmesini ve insan kullanıcı tarafından daha rahat algılanmasını da sağlar.

<span class="mw-page-title-main">Gustafson yasası</span>

Gustafson yasası, yeterince büyük bir sorunun verimli bir biçimde koşutlaştırılabileceğini öngören bir bilgisayar mühendisliği yasasıdır. 1988 yılında John L. Gustafson'un geliştirdiği bu kural, bir programın koşutluk derecesine bağlı olarak ne ölçüde hızlandırılabileceğini belirleyen Amdahl yasası ile yakından ilintilidir.

<span class="mw-page-title-main">Makine öğrenimi</span> algoritmaların ve istatistiksel modellerin kullanımıyla bilgisayarların yapacakları işleri kendileri çözebilmeleri

Makine öğrenimi (ML), veriden öğrenebilen ve görünmeyen verilere genelleştirebilen ve dolayısıyla açık talimatlar olmadan görevleri yerine getirebilen istatistiksel algoritmaların geliştirilmesi ve incelenmesiyle ilgilenen, yapay zekâda akademik bir disiplindir. Makine öğrenimi, bilgisayarların deneyimlerinden öğrenerek karmaşık görevleri otomatikleştirmeyi sağlayan bir yapay zeka alanıdır. Bu, veri analizi yaparak örüntüler tespit etme ve tahminlerde bulunma yeteneğine dayanır. Son zamanlarda yapay sinir ağları, performans açısından önceki birçok yaklaşımı geride bırakmayı başardı.

<span class="mw-page-title-main">Hesaplamalı fizik</span>

Hesaplamalı fizik, fizik sorunlarını çözebilmek için sayısal algoritmaların üretilmesi ve gerçeklenmesini içerir. Genelde kuramsal fizikin bir alt dalı olarak değerlendirilir ancak bazen de kuramsal ve deneysel fizik arasında orta bir dal olarak da düşünülür.

Sayı teorisinde, asal çarpanlara ayırma bir bileşik sayının, çarpıldıklarında yine aynı sayıyı verecek şekilde, bir ve kendisi dışındaki bölenlerine ayrılmasıdır.

Hesaplamalı kimya, kimya problemlerini çözmeye yardımcı olmak için bilgisayar simülasyonunu kullanan bir kimya dalıdır. Moleküllerin, katıların yapı ve özelliklerini hesaplamak için verimli bilgisayar programlarına dahil edilmiş teorik kimya yöntemlerini kullanır. Bu yöntemlerin kullanılmasının nedeni, hidrojen moleküler iyonu ile ilgili nispeten yeni sonuçlar dışında, kuantum çok-gövdeli(many-body) problemlerin analitik olarak çözülemez oluşudur. Hesaplama sonuçları normal olarak kimyasal deneylerle elde edilen bilgileri tamamlarken, bazı durumlarda gözlemlenmeyen kimyasal olayları da tahmin edebilmektedir. Yeni ilaç ve materyallerin tasarımında yaygın olarak kullanılmaktadır.

<span class="mw-page-title-main">Hesaplamalı geometri</span>

Hesaplamalı geometri, geometri açısından ifade edilebilen algoritmaların incelenmesine ayrılmış bilgisayar bilimlerinin bir dalıdır. Bazı çalışmalar tamamen geometrik problemlerden meydana gelirken bazıları ise hesaplamalı geometrik algoritmaların incelenmesi sonucunda meydana gelmektedir. Bunun gibi problemlerin hesaplama geometrisinin bir parçası olduğu düşünülmektedir. Modern hesaplamalı geometri son zamanlarda gelişme göstermesine karşın, tarihin antik dönemine kadar uzanan en eski bilgi işlem alanlarından biridir.

<span class="mw-page-title-main">Bilimsel hesaplama</span>

Bilimsel hesaplama karmaşık problemleri anlamak ve çözmek için gelişmiş bilgi işlem yeteneklerini kullanan çok disiplinli bir alandır. Hesaplamalı bilim üç farklı unsuru birleştirmektedir:

Kriptografide, scrypt, Colin Percival tarafından Tarsnap çevrimiçi yedekleme hizmeti için oluşturulan bir parola tabanlı anahtar türetme fonksiyonudur. Bu algoritma, büyük miktarda bellek gerektirerek büyük ölçekli özel donanım saldırılarını gerçekleştirmeyi pahalı hale getirmek için özel olarak tasarlanmıştır. 2016 yılında, scrypt algoritması IETF tarafından RFC 7914 olarak yayınlandı. Scrypt algoritmasının, ArtForz kullanıcı adına sahip ve gerçek adı bilinmeyen bir programcı tarafından implemente edilmiş, basitleştirilmiş bir sürümü, önce Tenebrix'te ve ardından Fairbrix ve Litecoin olmak üzere bir dizi kripto para birimi tarafından iş kanıtı şeması olarak kullanıldı.

<span class="mw-page-title-main">Zaman karmaşıklığı</span> bir algoritma çalıştırmak için harcanan zamanın tahmini

Teorik bilgisayar biliminde, zaman karmaşıklığı bir algoritma çalıştırmak için gereken bilgisayar zamanını tanımlayan hesaplama karmaşıklığıdır. Zaman karmaşıklığı genellikle algoritma tarafından gerçekleştirilen temel işlemlerin sayısı sayılarak ve her bir temel işlemin gerçekleştirilmesinin sabit bir zaman aldığı varsayılarak tahmin edilir. Böylece, algoritma tarafından gerçekleştirilen temel işlemlerin sayısı ile harcanan zamanın bir sabit faktör ile ilişkili olduğu kabul edilir.