Miklix

Rekursiv Backtracker labirent generatoru

Nəşr olundu: 16 fevral 2025 at 18:29:05 UTC
Son yeniləmə: 12 yanvar 2026 at 09:02:37 UTC

Mükəmməl bir labirint yaratmaq üçün rekursiv geri izləmə alqoritmindən istifadə edən labirint generatoru. Bu alqoritm uzun, dolama dəhlizləri və çox uzun, dolama həlli olan labirintlər yaratmağa meyllidir.

Bu səhifə mümkün qədər çox insan üçün əlçatan olması üçün ingilis dilindən maşın tərcümə edilib. Təəssüf ki, maşın tərcüməsi hələ mükəmməl texnologiya deyil, ona görə də səhvlər baş verə bilər. İstəyirsinizsə, orijinal ingilis versiyasına buradan baxa bilərsiniz:

Recursive Backtracker Maze Generator

Rekursiv geri izləmə alqoritmi əslində ümumi məqsədli dərinliyə əsaslanan axtarışdır. Labirint yaratmaq üçün istifadə edildikdə, təsadüfi yol seçmək üçün bir az dəyişdirilir, halbuki faktiki axtarış məqsədləri üçün istifadə edildikdə, adətən hər səviyyəni xətti ardıcıllıqla axtarmaq lazımdır. Uzun, dolama dəhlizləri və çox uzun, dolama həlli olan labirintlər yaratmağa meyllidir.

Mükəmməl bir labirint, labirintdəki hər hansı bir nöqtədən hər hansı digər nöqtəyə tam olaraq bir yolun olduğu labirintdir. Bu o deməkdir ki, siz dövrələrə girə bilməyəcəksiniz, ancaq tez-tez çıxılmaz nöqtələrlə qarşılaşacaqsınız, sizi dönüb geri qayıtmağa məcbur edəcəksiniz.

Burada yaradılan labirint xəritələri heç bir başlanğıc və bitmə mövqeləri olmayan defolt versiyanı ehtiva edir, buna görə də özünüz üçün bunlara qərar verə bilərsiniz: labirintdə istənilən nöqtədən istənilən digər nöqtəyə həll yolu olacaq. Əgər ilham almaq istəyirsinizsə, təklif olunan başlanğıc və bitiş mövqeyini aktivləşdirə və hətta ikisi arasında həll yolu görə bilərsiniz.


Yeni labirint yaradın








Rekursiv geri izləmə alqoritmi mükəmməl labirintlər (döngəsiz və istənilən iki nöqtə arasında tək bir yol olan labirintlər) yaratmaq üçün dərinliyə əsaslanan axtarış metodudur. Sadə, səmərəlidir və uzun, dolama dəhlizləri olan vizual cəhətdən cəlbedici labirintlər yaradır.

Adına baxmayaraq, mütləq rekursiya istifadə edilərək həyata keçirilməli deyil. Çox vaxt LIFO növbəsindən (yəni stekdən) istifadə edərək iterativ yanaşmada həyata keçirilir. Çox böyük labirintlər üçün rekursiyadan istifadə, proqramlaşdırma dilindən və mövcud yaddaşdan asılı olaraq, çağırış stekinin daşmasına səbəb olma ehtimalı daha yüksəkdir. LIFO növbəsi, mövcud yaddaş kifayət deyilsə, növbəni diskdə və ya verilənlər bazasında saxlayaraq belə, böyük həcmdə məlumatların işlənməsi üçün daha asanlıqla uyğunlaşdırıla bilər.


Necə işləyir

Alqoritm yığın əsaslı dərinlik axtarış yanaşmasından istifadə edərək işləyir. Addım-addım təhlili belədir:

  1. Başlanğıc xananı seçin və onu ziyarət edilmiş kimi qeyd edin.
  2. Ziyarət olunmamış xanalar olsa da: Hələ ziyarət olunmamış qonşu xanalara baxın. Ən azı bir ziyarət olunmamış qonşu varsa: Ziyarət olunmamış qonşulardan birini təsadüfi olaraq seçin. Cari xana ilə seçilmiş qonşu arasındakı divarı çıxarın. Seçilmiş qonşuya keçin və onu ziyarət edilmiş kimi qeyd edin. Cari xananı yığına itələyin. Ziyarət olunmamış qonşu yoxdursa: Yığından sonuncu xananı çıxararaq geri qayıdın.
  3. Yığın boş qalana qədər bu prosesi davam etdirin.

Bu alqoritm haqqında maraqlı bir fakt, həm labirint generatoru, həm də labirint həlledicisi kimi işləməsidir. Əgər onu artıq yaradılmış labirintdə işlətsəniz və müəyyən edilmiş son nöqtəyə çatanda dayandırsanız, yığında labirint həlli olacaq.

Əslində bu saytda bu alqoritmin iki versiyası var: bu səhifədə labirintlər yaratmaq üçün LIFO növbə əsaslı versiya və labirintləri, həmçinin digər alqoritmlər tərəfindən yaradılan labirintləri həll etmək üçün rekursiya əsaslı versiya (həllləri olan xəritələr belə hazırlanır). İki fərqli versiyanın olması yalnız idman üçündür, çünki mən maraqlı hesab edən bir nerdəm, hər ikisi üçün də işləyə bilərdi ;-)

Əlavə Oxu

Bu yazı xoşunuza gəldisə, bu təklifləri də bəyənə bilərsiniz:


Bluesky-də paylaşınFacebookda paylaşLinkedIn-də paylaşınTumblr-da paylaşınX-də paylaşınLinkedIn-də paylaşınPinterest-də Pin

Mikkel Christensen

Müəllif haqqında

Mikkel Christensen
Mikkel miklix.com saytının yaradıcısı və sahibidir. O, peşəkar kompüter proqramçısı/proqram təminatı tərtibatçısı kimi 20 ildən artıq təcrübəyə malikdir və hazırda böyük Avropa İT korporasiyasında tam iş günü işləyir. Bloq yazmayanda o, boş vaxtını geniş çeşidli maraqlara, hobbilərə və fəaliyyətlərə sərf edir ki, bu da müəyyən dərəcədə bu veb-saytda əhatə olunan müxtəlif mövzularda əks oluna bilər.