İlginizi Çekebilir

Algoritma Nedir?

ALGORİTMA NEDİR

Algoritma Nedir?

Her başlığın ilk paragrafında yaptığım gibi, aşağıda görmüş olduğunuz birkaç paragrafta da nitelikli bilgiler vermekle beraber fütursuzca boş yapıyorum, tek gecelik bir okuma bekliyorsanız hemen aşağıda mevzuyu özet geçen birkaç cümle bulabilirsiniz; yok ben ciddi düşünüyorum senle, uzun bir ilişki arıyorum diyorsanız gelin, birazdan gelecek olan paragraflarda bir akşam yemeği yiyelim.

Öncelikle konuya biraz göğsümüzü kabartarak başlayım. Dokuzuncu yüzyıl dahilerinden, İslam Medeniyeti’nin sayısal alanda öncülerinden Harezmi doğrudan ismiyle bu çağlar ötesi kavramın bizzat kendisi olmuş. Harezmi ismini al-Khwārizmī şeklinde alan Latinler bunu “algoritmi” şeklinde Latinleştirmişler, İngilizce’ye de “algorithm” olarak geçerek Harezmi evrensel bir kavram haline gelmiş. Çok iyisin be Harezmi dede!

Algoritma Nedir?
                                                                         El-Harezmi

Gazı aldıysak devam edelim. Şimdi bu kavrama ilk defa bu sitede denk gelmiş olamazsınız. Konuyla alakalı az biraz fikriniz vardır. Lakin ben hiçbir şey bilmiyormuşsunuz gibi davranmak zorundayım, çünkü biliyorum bak orada biri bu mevzuyu ilk defa okuyor, bana gücenmeyin.

Harezmi dedemizin ismini verdiği bu “algoritma” nedir, ne işe yarar, kim kullanır? Derdi olan herkes algoritma kullanır arkadaşlar. Algoritma derde dermandır, hastaya şifadır, borçluya paradır. Şaka yapmıyorum algoritma gerçekten de budur. Var olan problemi ortadan kaldırmakta izlediğimiz adımların bütününe biz algoritma diyoruz, yani öyle demişler biz de onlara uyuyoruz.

O yüzden oldukça geniş bir anlamı var bu kelimenin. Çemberi daraltıp bizim perspektiften bu kavramı ele alalım. Algoritma bizim için yazılımımızdaki sorunları çözen adımlar bütünü oldu bu sefer. Sorun dedimse koddaki hataları kastetmiyorum ha, klavyenin başına oturduğunuzda yapmak istediğiniz her şey aslında bir sorun olarak başlar. Gittikçe o sorunları çözersiniz ve sonunda nihai ürüne ulaşırsınız.

Konuya daha somut yaklaşmamı isterseniz, şöyle bir örnek verelim. Günümüzde bilgisayarlar çok, aşırı, devasa basamaklı sayılarla işlemler yapıyor. Arama motorları milyonlarca sonucu katrilyonlarcasının arasından bulup önünüze birkaç saniyede getiriyor. Bunu bu kadar büyük sayıda veri ile bu kadar kısa zamanda yapmalarını sağlayan şey bu mevzuyu halletmekte kullandıkları çözümler silsilesi, yani “algoritma”. Yazılımcı sandalyesine yaslanıp klavyesini tokatlamaya başladığı anda yaptığı her tercih algoritmasını şekillendiriyor. Buradan sınırsız sayıda algoritma üretilebileceğini çıkarabilirsiniz. Evet, hemen şimdi bir problem tanımlayıp onu çözen kod satırlarına kendi isminizi vererek, “filan algoritması” diyebilirsiniz. Çok yaşamaz ama muhtemelen. Çünkü aramızdaki zeka küplerinin çok büyük dertlerimizi ortadan kaldıran dehşet verici hızda çalışan algoritmaları bizi tekerleği yeniden icat etmekten büyük ölçüde kurtarıyor.

Biz bu serimizde size iki başlık altında algoritmaları tanıtacağız: search ve sort algoritmaları. Aratma ve Sıralatma algoritmaları da diyebilirdim ama fazla milliyetçilik koduna zarar, artık terimleşmiş bu isimlere alışmanızı tavsiye ediyorum. Algoritmalar sadece sıralama ve arama yapmaya mı yarıyor diye içinize olurda bir kurt düşmüşse, bu iki türle hayal edemeyeceğiniz problemleri çözebileceğinizi size garanti ederim. Kodlamaya biraz haşir neşirseniz birkaç veri tipi ile neler yapılabileceğini görmüşsünüzdür. Buna da o nazarla bakarsanız bu iki başlığın aslında neredeyse “her şey” anlamına geldiğini fark edersiniz. Bir ton algoritmayı yığacağız önünüze, siz de aralarından işinize geleni alıp kullanacaksınız. Bazıları kullanmayı bırakın anlamayacağınız zorlukta olacak, onlar da sizin algoritmik düşünme kabiliyetinizi arttıracak. Yani hiçbir türlü buradan boş dönmeyeceksiniz, bazıları var ki çok şaşalı öğrendikçe eğleneceksiniz!

Big O Notasyonu

Evet, işler ciddileşiyor beyler bayanlar. Sayısallaşıyor da diyebiliriz. Gözünüz korkmasın ama, sözelciler kaçmayın gelin buraya. Bu koca O işareti bir algoritmanın performansını gösteriyor. Yani olur da bir gün yolda bir yerde bir algoritmaya rastgelir ve ondan ağıza alınmayacak hakaretler işitmeye başlarsanız, sizi yerin dibine gömmeye ant içmiş o algoritmayı “Big O notasyonun” kaç senin konuşuyorsun?” diye beklenmedik bir soruyla yamultabilirsiniz. Sokakta rastladığınızdan muhtemelen varoş bir algoritmadır, size geri dönüş yapmadan sessizce yanınızdan uzaklaşacaktır.

O notasyonu bir algoritmanın çalışma hızı hakkında bize bilgi verir ve buna bağlı olarak kıymet kazanır. O algoritma hakkında “en kötü senaryo” yu söyler. Aslında matematiksel bir ifade ama biz gene bizi ilgilendiren kısmıyla ilgili konuşuyoruz. Bu algoritmanın “Big O” notasyonu budur. Bu kadar, üzerinde işlemler yapmıyoruz. Fikrimizi aldık, algoritmanın nasıl çalıştığını, ne hızda olduğunu, çalışma grafiğini pat diye anladık. Araba kaç basıyor, ne kadar sürede hızlanıyor ve uzun mesafede hızını ne kadar koruyor, artık fikrimiz var.

Somutlamak adına örneklendirelim. Linear Search algoritması, adı üstünde toplu halde duran bir grup eleman arasından istenen elemanı sırasıyla tüm elemanlara bakarak arar ve bulur. Bu elemanın en kötü senaryodaki hızı, başka bir deyişle bu algoritmanın big O notasyonu, O(n)’dir. Çünkü en kötü senaryoda bu algoritma aradığımız elemanı sıranın en sonunda bulabilir ve n tane eleman varsa n. adımda bu eleman bulunacaktır. İşte, arama yaptığımız boyutta kaç hamlede sonuca ulaştığımıza değer biçen big O notasyonu, bize en kötü durumda n adımda bu sonuca ulaşılacağını gösteriyor.

Algoritma Nedir?

Söylemek size hakaret olur ama ben kendimi tutamıyorum yine de söyleyeceğim, mavi renkli grafik bizim Linear Search.

Bir de bunun tam tersi var tabi ki, o da (omega) Ω O. En iyi senaryo hakkında fikir veriyor, Linear Search algoritmasını ele aldığımızda bu bizim için Ω O(1) olur öyle değil mi? Çünkü en iyi senaryoda sırasıyla baktığımız elemanlar arasında aradığımız elemanı ilk sırada buluruz. Yani 1 adımda sonuca ulaşırız, bu da bize Ω O(1) değerini verir.

Algoritmaya giriş böyle olur kardeşlerim, daha devam etsem, o algoritma anlatmak olur. İleriki yazılarımızda arkadaşlarımızla birlikte sizi farklı algoritma türleri, alıştırmaları ve ilginizi çekecek küçük sürprizlerle süsleyerek sunacağız, aşağıya bıraktığım listeye baktıktan sonra hoşçakalın!
Daha sonra anlatacağımız algoritmaların listesi burada. Belki de çoktan anlatmışızdır, üzerlerine tıklayıp şansınızı deneyebilirsiniz :)

SEARCH (aratma) ALGORİTMALARI

Linear Search
Binary Search
Jump Search
Interpolation Search
Exponential Search
Ternary Search

SORT (sıralatma) ALGORİTMALARI

Selection Sort
Bubble Sort
Insertion Sort
Merge Sort
Heap Sort
Quick Sort
Radix Sort
Counting Sort
Bucket Sort
Shell Sort
Comb Sort
Pigeonhole Sort
Cycle Sort

Yorum Yap

Yorum Yap

Yorumlar (1)

  1. 2 ay önce

    Çok faydalı bir yazı

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir