Algoritma Örnekleri – 1

Problem: 1’den 10’a kadar sayan sayaç ve kullanıcıdan alınan x(sınır değer) değeri ile x+(i*2)^2 kuralı ile tanımlanan s değerlerini hesaplamak ve her biri için asal olup olmadığını kontrol etmek. Bulunan asal sayıların toplamını ve kaç tane olduğunu ekrana yazdırmak.
(Örnek:
x:5, bulunan asal sayı:2 asal sayıların toplamı:190
x:8  bulunan asal sayı:0 asal sayıların toplamı:0)

x2

static void Main(string[] args)
        {
            int i, x, m, s = 0;
            int toplam_asal = 0, sayi_asal = 0;
            Console.WriteLine("Deger giriniz:");
            x = Convert.ToInt32(Console.ReadLine());
            for (i = 1; i <= 10; i++)
            {
                s = x + (i * 2) * (i * 2);
                for (m = 2; m < s; m++)
                {
                    if (s % m == 0)
                    {
                        break;
                    }
                    if(m==s-1)
                    {
                        toplam_asal = toplam_asal + s;
                        sayi_asal = sayi_asal + 1;
                    }
                }

            }
            Console.WriteLine("Deger:" + x + "Bulunan asal sayi: " + sayi_asal + "Toplam:" + toplam_asal);
            Console.ReadLine();
        }
    }

Dijkstra Algoritması ile En Kısa Yol Bulma

Dijkstra Algoritması, graflar içinde birbirine bağlı düğümler arasında gidilebilen en kısa yolu bulmayı amaçlar. Algoritma, İnternet ağ trafiği protokolünü yönlendiren OSPF (Open Shortest Path First) protokolünde, oyun programlamada, ulaşım ağlarında kullanılır.

Algoritmanın Çalışması

1. Kaynak düğüm belirlenir (örneğimizde A). Kaynak düğümden gidilebilen diğer düğümler, “bir önceki düğüm / maliyet” şeklinde not edilir.

2. Bu düğümlerden en az maliyete sahip olan işaretlenir, diğerleri aynı bilgiyle devam eder. Ulaşılamayan düğümler için maliyet sonsuz olarak işaretlenir.

3. En az maliyete sahip düğüm için, henüz işaretlenmemiş diğer düğümlerin maliyeti hesaplanır, daha az maliyetli bir yol bulunduğunda değişiklik yapılır. Bu maliyet hesaplanırken, işaretlenmiş son düğümün maliyetini eklemeyi unutmayın, yola A’dan başlayıp çıkmıştık.

Bu işlemler sonsuz işaretlenen düğümler bitinceye kadar devam edilir.

Bu grafta A düğümünden diğer düğümlere giden en kısa yolu Dijkstra algoritmasıyla bulalım. Dikkat edilecek nokta; önceden işaretlenmiş düğümler için daha kısa mesafeye bakılmaz. Seçim her zaman işaretlenmemiş düğümler arasında yapılır.

Ekran Alıntısı

Bu tabloyu çıkardıktan sonra bir düğümü başlangıç noktası kabul edip en kısa yolu ve toplam maliyeti görebiliyoruz. Örneğin A – H arası gidilebilecek en kısa yol için H sütununa baktığımızda maliyetin 6 olduğunu görüyoruz. A sütununa ulaşana kadar düğümleri takip ettiğimizde ise H -> E -> F -> C -> A yolunu buluyoruz.

Anti-pattern Nedir?

Bir yazılım mühendisliği kavramı olan anti-pattern, kullanışsız çoğu zaman hatalı sonuçlar doğuran, yanlış geliştirilmiş çözümlere denir. Genellikle doğru olduğu düşünülerek gerçekleştirilen  ve tecrübe eksikliğinin temel neden olduğu bu hatalar, projelerin başarısızlıkla sonuçlanmasına yol açar. Anti-pattern’lerin en büyük tehlikesi, davranışın ya da çözümün ilk etapta doğru olduğunun düşünülmesidir, bu durum sorunların uzun vadede ortaya çıkmasına neden olur.

Bir çok kaynakta dark pattern, pitfall olarak da geçen bu kavram, Bell Labs programcısı Andrew Koenig‘in C Traps and Pitfalls adlı kitabında bahsetmesiyle yaygınlaştı. Sadece yazılım alanında değil, iş süreçleri ve analizi, proje yönetimi gibi bir çok alanda kullanılan genel bir kavram haline gelmiştir. Aşağıda bazı anti-pattern’ler örnek olarak verilmiştir.

Okumaya devam et “Anti-pattern Nedir?”