Miklix

Tekrarlayan Geri İzleme Labirent Oluşturucu

Yayınlandı: 16 Şubat 2025 18:17:17 UTC
Son güncelleme: 12 Ocak 2026 09:02:18 UTC

Özyinelemeli geri izleme algoritmasını kullanarak mükemmel bir labirent oluşturan labirent jeneratörü. Bu algoritma, uzun, dolambaçlı koridorlara ve çok uzun, kıvrımlı bir çözüme sahip labirentler oluşturma eğilimindedir.

Bu sayfa, mümkün olduğunca çok kişi tarafından erişilebilir olması amacıyla İngilizce'den makine çevirisiyle çevrilmiştir. Ne yazık ki, makine çevirisi henüz mükemmelleştirilmiş bir teknoloji değildir, bu nedenle hatalar meydana gelebilir. Tercih ederseniz, orijinal İngilizce versiyonu buradan görüntüleyebilirsiniz:

Recursive Backtracker Maze Generator

Özyinelemeli geri izleme algoritması aslında genel amaçlı bir derinlik öncelikli arama algoritmasıdır. Labirent oluşturmada kullanıldığında, yolu rastgele seçmek için biraz değiştirilirken, gerçek arama amaçları için kullanıldığında, genellikle her seviye doğrusal sırayla aranır. Uzun, dolambaçlı koridorlara ve çok uzun, kıvrımlı bir çözüme sahip labirentler üretme eğilimindedir.

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.


Yeni labirent oluşturun








Özyinelemeli geri izleme algoritması, mükemmel labirentler (döngü içermeyen ve herhangi iki nokta arasında tek bir yol bulunan labirentler) oluşturmak için kullanılan derinlemesine arama yöntemidir. Basit, verimli ve uzun, dolambaçlı koridorlara sahip görsel olarak çekici labirentler üretir.

Adına rağmen, mutlaka özyineleme kullanılarak uygulanması gerekmez. Genellikle LIFO kuyruğu (yani bir yığın) kullanılarak yinelemeli bir yaklaşımla uygulanır. Çok büyük labirentler için, programlama diline ve mevcut belleğe bağlı olarak, özyineleme kullanmak çağrı yığını taşmasına yol açma olasılığını artırır. LIFO kuyruğu, mevcut bellek yetersizse bile, kuyruğu diskte veya bir veritabanında tutarak büyük miktarda veriyi işlemek için daha kolay uyarlanabilir.


Nasıl Çalışır

Algoritma, yığın tabanlı derinlemesine arama yaklaşımını kullanarak çalışır. İşte adım adım açıklaması:

  1. Başlangıç hücresini seçin ve ziyaret edildi olarak işaretleyin.
  2. Henüz ziyaret edilmemiş hücreler varken: Henüz ziyaret edilmemiş komşu hücrelere bakın. En az bir ziyaret edilmemiş komşu varsa: Ziyaret edilmemiş komşulardan birini rastgele seçin. Geçerli hücre ile seçilen komşu arasındaki duvarı kaldırın. Seçilen komşuya gidin ve ziyaret edilmiş olarak işaretleyin. Geçerli hücreyi yığına ekleyin. Ziyaret edilmemiş komşu yoksa: Yığından son hücreyi çıkararak geri dönün.
  3. Yığın boşalana kadar bu işleme devam edin.

Bu algoritmayla ilgili ilginç bir gerçek, hem labirent oluşturucu hem de labirent çözücü olarak çalışmasıdır. Zaten oluşturulmuş bir labirent üzerinde çalıştırıp, belirlenen bitiş noktasına ulaştığınızda durdurursanız, yığın labirentin çözümünü içerecektir.

Aslında bu sitede bu algoritmanın iki versiyonunu kullanıyorum: bu sayfadaki labirentleri oluşturmak için LIFO kuyruğuna dayalı bir versiyon ve labirentleri çözmek için özyinelemeye dayalı bir versiyon (çözümlerin bulunduğu haritalar da bu şekilde yapılıyor). İki farklı versiyon kullanmamın tek sebebi, bu konuya ilgi duyan bir bilgisayar meraklısı olmam; ikisi de aynı şekilde çalışabilirdi ;-)

Daha Fazla Okuma

Bu yazıyı beğendiyseniz, şu öneriler de ilginizi çekebilir:


Bluesky'de paylaşFacebook'ta paylaşLinkedIn'de paylaşTumblr'da paylaşX'te paylaşLinkedIn'de paylaşPinterest'e Pinleyin

Mikkel Christensen

Yazar Hakkında

Mikkel Christensen
Mikkel miklix.com'un yaratıcısı ve sahibidir. Profesyonel bilgisayar programcısı/yazılım geliştiricisi olarak 20 yılı aşkın deneyime sahiptir ve şu anda büyük bir Avrupa BT şirketinde tam zamanlı olarak çalışmaktadır. Blog yazmadığı zamanlarda, boş zamanlarını çok çeşitli ilgi alanları, hobiler ve aktivitelerle geçirmektedir ve bu da bir dereceye kadar bu web sitesinde kapsanan konuların çeşitliliğine yansıyabilir.