Kruskal Algoritması Labirent Oluşturucu
Yayınlandı: 16 Şubat 2025 18:00:51 UTC
Son güncelleme: 12 Ocak 2026 08:59:24 UTC
Kruskal's Algorithm Maze Generator
Kruskal algoritması, labirent oluşturmak için uyarlanabilen minimum yayılma ağacı algoritmasıdır. Özellikle mükemmel labirentler oluşturmada etkilidir. Kruskal algoritmasına alternatif olarak, yine minimum yayılma ağacı algoritması olan Prim algoritması da vardır, ancak her ikisi de aynı labirentleri oluşturduğu ve Kruskal daha hızlı çalıştığı için Prim algoritmasını uygulamaya gerek duymadım.
Mükemmel bir labirent, labirentteki herhangi bir noktadan diğer herhangi bir noktaya tam olarak tek bir yolun olduğu bir labirenttir. Bu, daireler çizerek ilerleyemeyeceğiniz, ancak sık sık çıkmaz sokaklarla karşılaşacağınız ve sizi geri dönmeye zorlayacağınız anlamına gelir.
Burada oluşturulan labirent haritaları, herhangi bir başlangıç ve bitiş konumu olmayan varsayılan bir sürüm içerir, böylece bunlara kendiniz karar verebilirsiniz: labirentin herhangi bir noktasından başka bir noktaya bir çözüm olacaktır. İlham almak isterseniz, önerilen bir başlangıç ve bitiş konumunu etkinleştirebilir ve hatta ikisi arasındaki çözümü görebilirsiniz.
Kruskal Algoritması Hakkında
Kruskal algoritması, Amerikalı matematikçi, istatistikçi ve bilgisayar bilimcisi Joseph Bernard Kruskal Jr. tarafından geliştirilmiştir. Algoritmayı ilk olarak 1956 yılında "Bir Grafın En Kısa Kapsayan Alt Ağacı ve Gezgin Satıcı Problemi Üzerine" adlı makalesinde tanımlamıştır.
Algoritma, döngülerden kaçınırken tüm köşelerin mümkün olan en düşük toplam kenar ağırlığıyla birbirine bağlı olmasını sağlayarak bir grafın minimum kapsayan ağacını (MST) bulmak üzere tasarlanmıştır.
Kruskal Algoritmasının Labirent Oluşturmada Çalışma Şekli
Adım 1: Başlatma
- Labirentteki her hücreyi ayrı bir küme (benzersiz bir bileşen) olarak ele alın.
- Komşu hücreler arasındaki tüm duvarları potansiyel kenarlar olarak listeleyin.
Adım 2: Duvarları Sıralayın
- Duvarları karıştırın veya rastgele sıralayın. Gerçek bir Kruskal algoritması olarak uyguluyorsanız, duvarları rastgele bir sırada sıralayın (çünkü labirent oluşturma ağırlık gerektirmez).
Adım 3: Duvarları İşlemek
- Karıştırılmış duvarlar arasında yineleme yapın.
- Duvarla ayrılan iki hücre farklı kümelere aitse (yani labirentte henüz birbirine bağlı değillerse), duvarı kaldırın ve kümeleri birleştirin.
- Eğer zaten aynı gruptaysalar, duvarı atlayın (döngüleri önlemek için).
Adım 4: Tamamlanana Kadar Devam Edin
- Tüm hücreler birbirine bağlanıp tek bir yayılma ağacı oluşturana kadar bu işlemi tekrarlayın.
- Sonuç olarak, her hücre döngüler veya izole bölümler olmaksızın diğerleriyle bağlantılıdır.
Kruskal algoritması kümeleri birleştirmeye dayandığı için, labirent oluşturma sırasında bağlantılı hücreleri izlemenin verimli bir yolunu sağlayan Birleştirme-Bulma algoritması kullanılarak optimize edilebilir. Birleştirme-Bulma algoritmasının PHP uygulamasını burada görebilirsiniz: Bağlantı
Daha Fazla Okuma
Bu yazıyı beğendiyseniz, şu öneriler de ilginizi çekebilir:
- Wilson Algoritması Labirent Oluşturucu
- Eller Algoritması Labirent Oluşturucu
- Avla ve Öldür Labirenti Oluşturucu
