19 Temmuz 2011
Bir metodu void olarak kullanmamıza rağmen metod içindeki bir veya birden fazla değer almak istiyorsak, out veya ref parametresini kullanabiliriz. ref parametresi dediğim, call-by-referance anlamına geliyor. out parametresi de bu parametreye oldukça benziyor.
Ancak ref ve out parametresi arasında farklar var. Şöyle ki :
- out parametresi ile gönderilen bir değişkenin değeri metodun içinde kullanılamaz
- metod içinde yeni bir değişken yaratılır, fonksiyon sonlanırken referansi metoda gönderilen değişkeninkine atanır
- metoda out parametresiyle gönderilen bir değişkene ilk değer atanması zorunlu değildir
Hız? Bellek? Yazının devamı »
Etiketler: CSharp
Yazar : Tolpp | Kategori : .Net
| Yorum yok
7 Haziran 2011
En uzun ortak alt dizi problemi olarak da karşılaşılan longest common subsequence problemini dynamic programming ile nasıl çözüleceğini içeren kodu bu sayfada bulabilirsiniz.
LCS Problemi ne diyenler için : http://en.wikipedia.org/wiki/Longest_common_subsequence_problem
Dinamik Programlama ne diyenler için : http://tolpp.com/dinamik-programlama-dynamic-programming-nedir/
Aşağıdaki Java kodunu indirmek için : http://tolpp.com/algorithms/LCS.java
Yazının devamı »
Etiketler: Dinamik Programlama, Dynamic Programming, Java, Longest Common Subsequence
Yazar : Tolpp | Kategori : Algoritmalar
| Yorum yok
7 Haziran 2011
Merhaba. Bu yazıda dinamik programlamayı olabildiğince açıklayıcı şekilde anlatmaya çalışacağım.
Dinamik Programlama Nedir?
Dinamik programlama karışık problemlerin daha basit düzeylere indirilerek çözülmesini esas alan bir optimizasyon yöntemidir. Optimizasyondaki amaç, problemdeki kısıtlayıcı koşullar altında bu problemle ilgili en iyi karara varmaktır. Bir problem üzerinde dinamik programlama uygulayabilmek için o problemin alt problemlere parçalanabilir veya bir önceki problemin karakteristiğini koruyacak şekilde çözümü daha kolay başka probleme dönüştürülebilir olması yeterlidir
Yönteme göre optimum çözüm başlangıç durumundan bağımsız olarak diğer çözümler ile çözüm sonuçlarına göre optimum çözümler ardışıklığıdır. Yani, başlangıçta alt problemlerin çözümü bulunup buradan elde edilen verilerle daha büyük alt problemler çözüldüğünde problemin kendisi de çözülmüş olmaktadır. Yazının devamı »
Etiketler: Dinamik Programlama, Dynamic Programming, Rod Cut Problem
Yazar : Tolpp | Kategori : Algoritmalar
| 2 Yorum
5 Mayıs 2011
Subclass içinde override edilmiş(overload değil!) bir metod çağırıldığında, subclass içindekinin mi yoksa superclass içindekinin mi çağırılacağının run-time sırasında dinamik olarak belirlenmesine Dynamic Dispatch denir.
Hemen bir örnekle :
Yazının devamı »
Etiketler: Dynamic Dispatch, Programming Languages
Yazar : Tolpp | Kategori : Terimler
| 1 Yorum
1 Şubat 2011

Seçmeli sıralamanın gerçekleşimini gösteren animasyon
Seçmeli arama (selection sort) her bir adım sonunda en küçük değerin en başa getirildiği sıralama algoritmasıdır. Dizi içinde dolaşılarak en küçük değer en başa getirilir. Dizideki eleman sayısı N kadar dolaşma işlemi tekrarlandığında dizi üzerinde sırama ede edilmiş olur.
Performans
Dizimiz üzerinde N tane eleman olsun. Bu durumda N kadar kontrol döngüsü çalıştırılır. Bu döngülerden 1. için N, 2.iin N-1 … N-1. için 2, N.için 1 adet kontrol yapılır. Yani bu sayıları dizi toplamı alırsak N x(N+1)/2 = (N2+N)/2 kontrol yapılmış olur. Bu da worst-case O (n2) karmaşıklık anlamına gelir.
Buradan seçmeli sıralamanın çok performanslı bir sıralama olmadığını görebiliriz. Bu yüzden büyük diziler yerine, minik dizilerde kulanılması daha mantıklı olacaktır. Tercih sebebi ise yazımı çok kolay bil algoritmaya sahip olmasıdır.
Adım-Adım Uygulama
Elimizde 5 1 4 2 8 değerlerine sahip 5 elemanlı bir dizi olsun. Bunu selection sort kullanarak adım adım sıralayalım:
Yazının devamı »
Etiketler: Seçmeli Sıralama, Selection Sort
Yazar : Tolpp | Kategori : Sıralama Algoritmaları
| 1 Yorum