algoritma-ornek1

Algoritma genel anlamda matematiksel işlem olan mantık konusuna ait bir terim olarak tanımlanır. Tam olarak amacı ise yapılan bir işin doğru olarak yapılabilmesi için izlenmesi gereken adım sırasıdır. Aslında insanlar yaptıkları tüm işleri bir algoritma sırası ile mantıklı hale getirir. Eğer yapılan bir işte algoritmik sıra yok veya izlenmiyorsa yapılan işin sonu büyük bir ihtimalle iyi bitmeyecektir. Bundan dolayı eğer bir mühendislik veya matematik dalına ait bir meslek seçmişseniz dolaylı yada dolaysız ilk göreceğiniz konulardan biri de algoritma ve algoritma çeşitleridir. Algoritma nedir? sorusunun tam olarak cevaplanması için belkide bir örneği başvurulması en doğrusudur. Bundan dolayı aşağıdaki örneği incelemek sizin açınızdan önemli olacağını düşünmekteyim.

Bir mühendislik çalışmasında yapılacak ilk işlem işin algoritmasını (işlem sırasını) çıkarmak olacaktır. Bu yüzden matematik mühendisliği gibi meslek gurupları ortaya çıkmıştır. Mühendislikte nasıl uygulandığını anlamak için şu örneği inceleyin.

Öyle bir makine yapılacak ki start düğmesine basıldığında çalışacak, stop düğmesine basıldığında duracak ve bir insan makine alanında tehlikeli bir bölgeye girerse kendisini otomatik olarak durduracak.

İşte böyle bir uygulamada ilk önce işlem sırası oluşturulursa makine için gerekli malzemeler, nasıl çalışacağı, nasıl bir yol izlemesi gerekir gibi pek çok sorunu tespit edilir ve doğru işlemleri sırasıyla uygulanabilir. Aksi taktirde makine yapılırken sürekli yeni şeyler eklemek yada çıkarmak durumunda kalınabilir. Hatta bu süreç tüm işin baştan masa üstünde tartışılmasını gerektirebilir. Bu makinenin algoritmasını grafiksel olarak basitçe hazırlayalım.

algoritma-ornek

Yukarıda basit bir algoritma örneği verdikten sonra tekrardan yolumuza devam edelim.Algoritma sistemleri mühendislik alanında en çok yazılımcılar tarafından kullanılır. Eğer bir yazılım uygulamasına algoritma oluşturmadan başlarsanız yaptığınız işlemlerin bir çoğu boşa gidebilir ve saatlerinizi boş boşuna harcamış olursunuz. Artık bu kısımdan sonra algoritma temelleri ve algoritma örnekleri ile devam edeceğiz.

Programlamada Algoritma Temelleri

Eğer bir program geliştirmeye karar verdiyseniz başarılı bir başlangıç ve mutlu bir son için sırayla şu adımları izlemeniz en doğrusu olacaktır.

Değişkenleri Belirleme

Programın akışı için dışarıdan girdi olarak alınacak verilerin tamamını belirlemek gerekir. Bu sayede programın temelleri oluşturulmuş olur. Değişkenler programın çalışmasını etkileyen en temel bileşenlerdir. Bundan dolayı başarılı bir şekilde değişkenleri belirlemek oldukça önemlidir.

Algoritma Oluşturma

Tüm değişkenleri belirledikten sonra yapılması gereken adım tabi ki de onları doğru şekilde sıralamak olmalıdır. Yukarıda zaten algoritmayı uzunca bir şekilde anlattım. Yapılacak olan işlemleri doğru bir şekilde sıralamak algoritma oluşturmak için yeterli olacaktır. Algoritma oluşturulurken basit ve  problemi en kısa yoldan çözüme ulaştırması için çalışılmalıdır.

Akış Diyagramı

Yukarıda verdiğim makine örneğinde zaten bir akış diyagramı oluşturmuştum. Akış diyagramı, yapılacak olan işin algoritması çıkarıldıktan sonra şema gurupları ile gösterilmesidir. Oluşturulan akış diyagramı ile karmaşık algoritmalar görselleştirildiği gibi mühendislikle pek ilişkisi olmayan insanlar içinde anlaşılır hale getirilir.

Akış Diyagramı Sembolleri

Akış diagramı oluşturulurken kullanılan sembollerin standart geometrik şekilleri vardır. Bu şekiller yardımı ile işlemler anlaşılabilir. Aşağıda paylaştığım görselde akış diyagramı oluştururken kullanılan sembolleri görebilirsiniz.

algoritma-kume-semaları

Algoritma Örnekleri

Yazı boyunca belli başlı örnek algoritma işlemleri gösterdim. Bu bölümde ise aşağıda paylaştığım örneğin algoritmasını (işlem sırasını) çıkaracağım ve sonrasında akış diyagramını çizerek yapılması planlanan bir programın nasıl hazırlanacağını göstereceğim. Örnek olarak ise daha önceki yazılarımdan birinde anlattığım C# faktöriyel hesaplama programının algoritmasını hazırlayarak yapacağım.

Soru: K!/L!(K-L)! işleminin kusursuz bir şekilde çalıştıracak bir algoritma hazırladıktan sonra akış diyagramı ile gösterin.

Akış diyagramından önce bir algoritma hazırlamak gerektiğinden yukarıda bahsetmiştim. Bu algoritma sırası hazırlanırken işlemler genellikle A0,A1,A2… gibi yada 1.İşlem, 2.İşlem,3.İşlem… gibi isimlerle sınıflandırılırlar. Ben A0,A1… yapısını genellikle kullanmayı tercih ettiğimden bu yazıda bu şekilde kullanacağım.

Örneğin Algoritma Sırası

A0 → Başla
A1 → K değerini 1 yap
A2 → L değerini 1 yap
A3 → K değeri ne girildi?
A4 → L değeri ne girildi?
A5 → K!/L!(K-L)! işlemini yap
A6 → Pay paydadan büyük mü?
A7 → büyükse uyarı mesajı gönder
A8 → değilse sonucu yaz.
A9 → Dur

Örnek Akış Diyagramı

Akış diyagramının aşağıda çizilmiş resmini görebilirsiniz. Bu çizimi Photoshop, eDraw hatta AutoCad gibi çizim programlarıyla yapabilirsiniz. Eğer çok yetenekli biriyseniz Paint programını bile deneyebilirsiniz 🙂 Yada en basitinden bir kağıt ve kalem kullanarak hazırlamayı deneyebilirsiniz.

faktoriyel-akış-şeması

Algoritma Çeşitleri

Yazının başında belirttiğim gibi son bölümde algoritma çeşitleri hakkında olacak. 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 ki bunları tekrar tekrar yazmak tam anlamıyla Amerikayı tekrar keşfetme çıkmakla eşdeğerdir.

Algoritma işleri ile en çok uğraşan şirket büyük bir ihtimalle Google diye tahmin ediyorum. Çünkü eğer arama işi benim işim diyorsan algoritma işi de benimdir diyebilmen lazım belkide Google’u bu kadar başarılı kılan faktör de budur. Şuan Google arama motorunda arama faktörünü etkileyen 200 den fazla algoritma olduğu söyleniyor.

Arama Algoritmaları

Adında anlaşılacağı üzere dijital sistemlerde arama yapılmak istendiğinde kullanılabilecek algoritma çeşididir. Listeler, şekiller ve metinleri üzerinde arama yapılmasını sağlar. Yaygın olarak kullanılan arama algoritmaları şunlardır; ikili arama algoritması, enine arama algoritması, derin öncelikli arama algoritmalarıdır.

Genetik Algoritmaları

Yapay zeka sistemlerinde sık kullanılan bir algoritma çeşididir. Genetik bilindiği üzere insanın biyolojik yapısını inceleyen bilim dalıdır. Genetik algoritma ismini genetik bilimine benzer bir yapıda çalıştığından dolayı almıştır. Bu algoritma genellikle yer bulma işlemlerinde kullanılır. Çalışma mantığı ise sanal genler oluşturulur. Sonrasında bu genlerin mutasyonu sonucu en kaliteli sonuçlara ulaşılmasını sağlamaktır. Bu konu ile ilgili yapay zeka algoritmaları adlı yazıyı okumanızı tavsiye ederim.

Kriptografik Algoritmalar

Şifreleme amaçlı kullanılan algoritma çeşitleridir. Bu algoritma tipi sayesiyle dosyaların güvenliği sağlanabilir. Temel çalışma yapısı kullanıcı tarafından şifreleme yapılır ve dosya açılmak istendiği zaman oluşturulan şifre bilinmiyorsa içerideki bilgilere ulaşılamaz.

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.

Sıralama Algoritmaları

Alfabatik yada sayısal sıralama yapmak için kullanılan algoritma türüdür. Sürekli geliştirilmeye açık bir algoritma türüdür. Sıralama işleminin başarılı ve düzgün bir şekilde yapılması için oldukça önemlidir. Bu işlemi karşılaştırma yaparak yapmaktadır. Yani 1 ile 2 yi büyüklüğe göre sıralayacak olursak 2>1 şeklinde yaparız. Sıralama algoritması bu mantıkla sıralama yapmakta fakat bu kadar basit amaçlar için kullanılmamaktadır.

Diğer Algoritma Çeşitleri

Konunun başında bahsedildiği gibi algoritma çeşitleri 3 veya 4 türe ayrılabilecek kadar basit değildir. Ben algoritma çeşiti olarak burada en sık kullanılanlara biraz değinmeye çalıştım. Fakat hepsini teker teker bir yazı olarak yazılsa anca yeterli gelirdi. Bundan dolayı burada kısa keserek Wikipedia sitesinde yer alan algoritma başlığı altında diğer algoritma türlerini incelemenizi tavsiye ediyorum.

Bu algoritmaların tercih edilmesindeki sebepleri anlamaya çalışıyorsanız kısaca şunu diyebilirim. Yazının hemen başında dediğim gibi algoritma oluşturmanın temel amacı basit ve problemi en kısa yoldan çözmek olduğunu söylemiştim. Yukarıda verdiğim tüm bu algoritma çeşitleri bu işi en iyi şekilde yapabilen algoritmalar olduğu için bu algoritma çeşitleri kullanılmaktadır.

Algoritma üzerine olan bu yazının gerçek anlamda kaliteli bir yazı olduğuna inanıyorum. Çünkü pek çok kaynak site bu konuyu bu kadar ayrıntısı ile anlatmamış ya algoritma nedir? sorusunu açıklamaya çalışmış yada algoritma örnekleri vermiş ben ise bu yazıda her iki başlığı bir yazıda topladım. Umarım beğenilir. Yorumlarınızı bekliyorum.

2 Responses to Algoritma Nedir? ve Algoritma Çeşitleri

  1. hasan diyor ki:

    teşekkürler çok işime yaradı.

  2. Arda diyor ki:

    Teşşekürler Proje Ödevim Vardı Buradan baktım Sağolun

Bir Cevap Yazın

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