Miklix

Recursive Backtracker Maze Generator

Publikuar: 16 shkurt 2025 në 6:23:33 e pasdites, UTC
Përditësimi i fundit: 12 janar 2026 në 9:02:29 e paradites, UTC

Gjenerator labirinti që përdor algoritmin rekursiv të ndjekjes së kthimit prapa për të krijuar një labirint të përsosur. Ky algoritëm tenton të krijojë labirinte me korridore të gjata e dredha-dredha dhe një zgjidhje shumë të gjatë e dredha-dredha.

Kjo faqe u përkthye me makinë nga anglishtja për ta bërë të aksesueshme për sa më shumë njerëz. Fatkeqësisht, përkthimi me makinë nuk është ende një teknologji e përsosur, kështu që mund të ndodhin gabime. Nëse preferoni, mund ta shikoni versionin origjinal në anglisht këtu:

Recursive Backtracker Maze Generator

Algoritmi rekursiv i gjurmimit prapa është në të vërtetë një kërkim i përgjithshëm që përqendrohet në thellësi. Kur përdoret për gjenerimin e labirintit, modifikohet pak për të zgjedhur rrugën rastësisht, ndërsa nëse përdoret për qëllime kërkimi real, zakonisht do të kërkohet çdo nivel në rend linear. Ai tenton të prodhojë labirinte me korridore të gjata e dredha-dredha dhe një zgjidhje shumë të gjatë e dredha-dredha.

Një labirint i përsosur është një labirint në të cilin ka saktësisht një rrugë nga çdo pikë në labirint në çdo pikë tjetër. Kjo do të thotë që nuk mund të përfundoni duke ecur në rreth, por shpesh do të hasni në rrugë pa krye, duke ju detyruar të ktheheni dhe të ktheheni.

Hartat e labirintit të krijuara këtu përfshijnë një version të paracaktuar pa asnjë pozicion fillimi dhe mbarimi, kështu që ju mund t'i vendosni ato vetë: do të ketë një zgjidhje nga çdo pikë në labirint në çdo pikë tjetër. Nëse dëshironi frymëzim, mund të aktivizoni një pozicion të sugjeruar fillimi dhe përfundimi - dhe madje të shihni zgjidhjen midis të dyjave.


Gjeneroni labirint të ri








Algoritmi rekursiv i gjurmimit prapa është një metodë kërkimi që vë në dukje thellësinë për të gjeneruar labirinte perfekte (labirinte pa sythe dhe me një shteg të vetëm midis dy pikave). Është i thjeshtë, efikas dhe prodhon labirinte tërheqëse vizualisht me korridore të gjata e dredha-dredha.

Pavarësisht emrit të tij, nuk është e thënë domosdoshmërisht të zbatohet duke përdorur rekursionin. Shpesh zbatohet në një qasje iterative duke përdorur një radhë LIFO (domethënë një pirg). Për labirinte shumë të mëdha, përdorimi i rekursionit ka më shumë të ngjarë të rezultojë në mbingarkesë të pirgut të thirrjeve, varësisht nga gjuha e programimit dhe memoria e disponueshme. Një radhë LIFO mund të përshtatet më lehtë për të trajtuar sasi të mëdha të dhënash, madje duke e mbajtur radhën në disk ose në një bazë të dhënash nëse memoria e disponueshme është e pamjaftueshme.


Si funksionon

Algoritmi funksionon duke përdorur një qasje kërkimi me thellësi të parë bazuar në grumbull. Ja ndarja hap pas hapi:

  1. Zgjidhni një qelizë fillestare dhe shënojeni si të vizituar.
  2. Ndërsa ka qeliza të pavizituara: Shikoni qelizat fqinje që nuk janë vizituar ende. Nëse ekziston të paktën një fqinj i pavizituar: Zgjidhni rastësisht një nga fqinjët e pavizituar. Hiqni murin midis qelizës aktuale dhe fqinjit të zgjedhur. Lëvizni te fqinji i zgjedhur dhe shënojeni atë si të vizituar. Shtyni qelizën aktuale në grumbull. Nëse nuk ka fqinjë të pavizituar: Kthehuni prapa duke hequr qelizën e fundit nga grumbulli.
  3. Vazhdoni këtë proces derisa pirgu të jetë bosh.

Një fakt interesant në lidhje me këtë algoritëm është se ai funksionon si gjenerator labirinti dhe si zgjidhës labirinti. Nëse e ekzekutoni në një labirint të gjeneruar tashmë dhe ndaloni kur të arrini pikën e caktuar të përfundimit, pirgu do të përmbajë zgjidhjen e labirintit.

Në fakt, kam dy versione të këtij algoritmi në lojë në këtë faqe interneti: një të bazuar në radhën LIFO për gjenerimin e labirinteve në këtë faqe dhe një të bazuar në rekursion për zgjidhjen e labirinteve, gjithashtu labirinteve të gjeneruara nga algoritme të tjera (kështu bëhen hartat me zgjidhjet). Të kesh dy versione të ndryshme është vetëm për sport sepse jam një nerd që e gjen interesante, secili mund të kishte funksionuar për të dy ;-)

Lexime të mëtejshme

Nëse ju pëlqeu ky postim, mund t'ju pëlqejnë edhe këto sugjerime:


Shpërndaje në BlueskyShpërndaje në FacebookNdani në LinkedInShpërndaje në TumblrShpërndaje në XNdani në LinkedInPin në Pinterest

Mikkel Christensen

Rreth Autorit

Mikkel Christensen
Mikkel është krijuesi dhe pronari i miklix.com. Ai ka mbi 20 vjet përvojë si programues profesional kompjuteri/zhvillues softuerësh dhe aktualisht është i punësuar me kohë të plotë për një korporatë të madhe evropiane IT. Kur nuk bën blog, ai e kalon kohën e lirë në një gamë të gjerë interesash, hobish dhe aktivitetesh, të cilat mund të reflektohen në një farë mase në shumëllojshmërinë e temave të mbuluara në këtë faqe interneti.