18 Aralık 2013 Çarşamba

Metaball

Metaball Algoritması, günümüzde çoğu görsel uygulamada kullanılan basit ama hoş görüntüler oluşturan bir algoritmadır. Genelde oyunlardaki ve animasyonlardaki, sıvılarda veya akışkan simulasyonlarında kullanılır. Aslında ayrı parçacıklar, birbirine yaklaştıkça aralarındaki boşluklar dolar ve bir bütünmüş gibi görünürler. Bu da parçacık tabanlı simule edilen akışkanların, çok daha gerçekçi görünmesini sağlar.



11 Aralık 2013 Çarşamba

Q-learning

Bu yazıyla, oldukça keyifli bir konu olan makine öğrenimi'ne giriş yapmış olacağız. Bu yüzden asıl konuya geçmeden önce, size makine öğrenimi hakkında ufak birkaç bilgi vermek istiyorum.

Makine öğrenimi, günümüzde birçok uygulama alanı olan bir bilim dalı. Adından da anlaşılacağı gibi bilgisayara birşeyleri öğretmeyi ve bu öğrendiklerini insan yararına kullandırtmayı amaçlayan çalışmalar yapıyor bu alan. Peki öğrenme derken ne demek istiyorum ? Bir bilgisayar nasıl öğrenir ?

11 Kasım 2013 Pazartesi

Game of Life

Game of Life(Hayat Oyunu), 1970 yılında, matematikçi John Conway tarafından tasarlanan bir algoritmadır. Conway, matematiğin yapısından esinlenerek, basit kuralların karmaşık bir bütünlüğü oluşturabileceğini düşünmüş ve game of life ile bunu denemiştir.

Game of Life denilen algoritmada, karelerden oluşan bir dünyamız var. İdealde sonsuz genişlik ve sonsuz uzunlukta ancak tabiki biz sınırlandıracağız. Her karenin iki farklı durumu var, canlı veya ölü.

Her karenin bir sonraki durumda ölü mü canlı mı olacağına ise, o kareyi çevreleyen 8 karenin durumu belirliyor.
Kurallar gayet basit;
- Etrafında ikiden az canlı hücre olan bir canlı hücre, yalnızlık nedeniyle ölür
- Etrafında üçten fazla canlı hücre olan bir canlı hücre, aşırı kalabalık nedeniyle ölür.
- Etrafında iki veya üç canlı hücre olan bir canlı hücre, gelecek durumda canlı kalır.
- Etrafında üç canlı hücre olan bir ölü hücre, gelecek durumda yeniden doğar.

Bazı karelerin canlı olduğu bir başlangıç durumu belirlenir ve simulasyon başlatılır. Neler olacağını kafanızda canlandırabiliyor musunuz ?

6 Kasım 2013 Çarşamba

Markov Zinciri

Bu yazımın konusu markov chain(markov zinciri) adlı söz dizimi algoritması olacak. Bu algoritmanın yaptığı iş, özet olarak, programa verdiğiniz metinden, bu metin'e benzer başka bir metin çıkarmaktır.

Metindeki kelimeleri, ard arda dizilişlerine göre ayırıp, verdiğiniz metine benzer, anlamlı ancak kısmen farklı bir metin ortaya çıkarır. Metinden ne kadar farklı olacağı konusunda bir etken de metnin uzunluğudur. Daha uzun metinlerden, metinden daha farklı yeni metinler elde edersiniz. İlginç ve eğlenceli sonuçlar veriyor. Bu işi nasıl yaptığını tam olarak açıklayayım.

4 Ekim 2013 Cuma

Bisection


Denklem:
Hata Payı:
Aralık:
Hassasiyet:
0


Bu yazımda bir reel kök bulma algoritması olan bisection(türkçesi ikiye ayırma) algoritmasını anlatacağım. Standart bisection algoritmasından sonra da, bu algoritmadan daha fazla yararlanmanızı sağlayacak ufak bir algoritma daha ekleyeceğim. Kısa bir özet geçip kafanızda kabaca şekillendirdikten sonra, pseudocode eşliğinde detaylı olarak anlatacağım. Yukarıda, algoritmanın javascript ile yazmış olduğum hali mevcut. Denklem kısmına denklemin katsayılarını uygun şekilde(örneğin, x^3 + 2x^2 + 6x + 5 için 1,2,6,5) girip, gerekli aralığı ve parametreleri belirledikten sonra hesapla butonuna tıkladığınızda, bulunan reel kökleri butonun yanında görebilirsiniz.

Bisection algoritması, kaçıncı dereceden olursa olsun, bir homojen denklemin, belirli bir aralıktaki reel kökünü(o aralıkta varsa) bulmaya yarar. Örnek vererek açıklayayım. Şimdi ikinci dereceden bir denklem düşünün. x^2 + 6x + 5 = 0 olsun mesela. Bu denklemin grafiğini gözünüzde canlandırın. X eksenini iki noktada kesen parabolik bir eğri. Biz x ekseni üzerinde iki nokta seçip, bu noktaların arasındaki değerlerle ilgileniyoruz. Eğer 0'dan geçtiği noktalardan biri, seçtiğimiz aralıktaysa, bu aralığı daralta daralta 0'dan geçtiği noktaya ulaşabiliriz.

1 Ekim 2013 Salı

Giriş

Herkese merhabalar,

Bu yazı blog'umun, aynı zamanda devam edecek olan algoritmalar serimin ilk yazısı olacak. Bu yüzden kısa bir giriş yapmak istiyorum.

Fazla terim kullanmaya, ıvır zıvır bilgi vermeye niyetim yok. Ancak programlamaya yeni başlayan insanların bazıları, algoritma kelimesinden korkarlar. Bu yüzden yazılara geçmeden önce, algoritmanın ne olduğunu anlamak gerekir.