20*20 lik bir matris üzerinde engeller oluşturarak giriş belirlenip engellere çarpmadan çıkışa ulaşılacak program nasıl yazılır?
Merhaba,
Bahsettiğiniz problemi ele alırken 20'ye 20'lik sıfır ve 1'lerden oluşan bir matrisi ele alalım. Buradaki 1'ler engelleri, 0'lar ise yolları temsil etsin. Başlangıç noktasının sağ-sol ve aşağı-yukarı yönlerdeki matris elementlerinin değerlerine bakalım (1 olmayan değerlere) ve buna göre bir sonraki adımımızı gerçekleştirelim. Buradaki önemli nokta bir sonraki adımımızı atma işlemimiz olacak. Eğer 3 tarafı 1'lerden oluşan bir noktada takılırsak geri giderek tekrar seçim yapmamız gerekecek. Sonuç olarak deneme yanılma yöntemi ile çıkışa kadar ulaşmamız gerekiyor.
Bu probleme benzer olarak Dijkstra'nın en kısa yol algoritmasına (Dijkstra’s shortest path algorithm) göz atabilirsiniz. Bunu Genetik Algoritma ile de çözdürebilirsiniz.
Sizin yazmanız gerekecek algoritmaya dönecek olursak, aşağı yukarı şöyle bir algoritma işinizi görebilir diye düşünüyorum:
1. Baslangıç Noktası Belirle (Satır-Sütun Konumu) 2. Hareket doğrultusu seç (Sağ-Sol, Aşağı-Yukarı) => Bu kısım rastgele yapılabilir 3. Hareket Doğrultusundaki elementi konrol et: 0 mı 1 mi? =>0sa devam, değilse 2. adıma geç 4. Adımı gerçekleştir => Hareket doğrultusuna göre bir önceki konumun satır ve sütun numaralarını güncelle 5. 2. adıma geri dön
Takıldığınız yerleri tekrar sorabilirsiniz,
Kolay gelsin,
Ek olarak aşağıda örnek bir uygulamayı indirerek kaynak kodlarını ve açıklamalarını inceleyebilirsiniz:
İleride bu konu üzerine arama yapanlara yardımcı olması açısından bu sayfa üzerinden sorularınızı iletmeniz daha faydalı olacaktır.
Teşkkürler,