Miklix

Lumalagong Puno Algorithm Maze Generator

Nai-publish: Marso 19, 2025 nang 8:25:25 PM UTC
Huling na-update: Marso 19, 2025 nang 8:26:19 PM UTC

Maze generator gamit ang Growing Tree algorithm upang lumikha ng perpektong maze. Ang algorithm na ito ay may posibilidad na makabuo ng mga maze na katulad ng Hunt and Kill algorithm, ngunit may medyo kakaibang tipikal na solusyon.

Ang pahinang ito ay isinalin sa makina mula sa Ingles upang gawin itong naa-access sa pinakamaraming tao hangga't maaari. Sa kasamaang palad, ang pagsasalin ng makina ay hindi pa isang perpektong teknolohiya, kaya maaaring mangyari ang mga error. Kung gusto mo, maaari mong tingnan ang orihinal na bersyong Ingles dito:

Growing Tree Algorithm Maze Generator

Ang algorithm ng Growing Tree ay kawili-wili, dahil maaari nitong tularan ang pag-uugali ng ilang iba pang mga algorithm, depende sa kung paano pinili ang susunod na cell sa panahon ng henerasyon. Ang pagpapatupad sa page na ito ay gumagamit ng malawak na una, mala-queue na diskarte.

Ang perpektong maze ay isang maze kung saan mayroong eksaktong isang landas mula sa anumang punto sa maze hanggang sa anumang iba pang punto. Nangangahulugan iyon na hindi ka maaaring maglibot sa mga bilog, ngunit madalas kang makatagpo ng mga patay na dulo, na pinipilit kang tumalikod at bumalik.

Ang mga mapa ng maze na nabuo dito ay may kasamang default na bersyon nang walang anumang mga posisyon sa pagsisimula at pagtatapos, kaya maaari kang magpasya para sa iyong sarili: magkakaroon ng solusyon mula sa anumang punto sa maze hanggang sa anumang iba pang punto. Kung gusto mo ng inspirasyon, maaari mong paganahin ang isang iminungkahing posisyon sa pagsisimula at pagtatapos - at kahit na makita ang solusyon sa pagitan ng dalawa.


Bumuo ng bagong maze








Tungkol sa Algorithm ng Lumalagong Puno

Ang algorithm ng Lumalagong Puno ay isang flexible at makapangyarihang paraan para makabuo ng perpektong labirinto. Interesante ang algorithm na ito dahil kaya nitong gayahin ang kilos ng ilang iba pang algorithm sa pagbuo ng labirinto, tulad ng algorithm ni Prim, recursive backtracking, at recursive division, depende sa kung paano pipiliin ang susunod na cell na iproseso.

Paano Gumagana ang Algorithm ng Lumalagong Puno

Hakbang 1: Inisyalizasyon

  • Mag-umpisa sa isang grid ng mga cell na hindi pa nabisita.
  • Pumili ng isang random na cell bilang panimulang cell at idagdag ito sa isang listahan.

Hakbang 2: Loop ng Pagbuo ng Labirinto

  • Habang hindi pa empty ang listahan ng mga cell:
    • Pumili ng cell mula sa listahan batay sa isang partikular na estratehiya (ipinapaliwanag sa ibaba).
    • Gumuhit ng isang daanan mula sa napiling cell patungo sa isa sa mga hindi pa nabisitang kalapit na cell (na pinili nang random).
    • Idagdag ang kalapit na cell sa listahan dahil isa na itong bahagi ng labirinto.
    • Kung walang hindi pa nabisitang kalapit na cell ang napiling cell, alisin ito mula sa listahan.

Hakbang 3: Pagtatapos

  • Tatapusin ng algorithm kapag wala nang natirang cell sa listahan, ibig sabihin, natapos na ang buong labirinto.

Mga Estratehiya sa Pagpili ng Cell (Pagkakaroon ng Pagkakataon ang Algorithm)

Ang pangunahing katangian ng algorithm ng Lumalagong Puno ay kung paano mo pipiliin kung aling cell ang ipoproseso sa susunod. Ang pagpili na ito ay may malaking epekto sa itsura ng labirinto:

Pinakabagong Cell (Pag-uugali ng Stack) – Recursive Backtracker:

  • Laging piliin ang pinaka-bagong idinagdag na cell.
  • Nagbubuo ng mahahabang, paikot-ikot na mga koridor na may maraming patay na dulo (tulad ng isang depth-first search na labirinto).
  • Ang mga labirinto ay may mga mahahabang daanan at madaling lutasin.

Random na Cell (Randomized Prim's Algorithm):

  • Pumili ng isang random na cell mula sa listahan bawat pagkakataon.
  • Nagbubuo ng isang mas pantay na distribusyon ng labirinto na may mga kumplikado at magulong mga daan.
  • Mas kaunting mahahabang koridor at mas maraming mga sanga.

Pinakamatandang Cell (Pag-uugali ng Queue):

  • Laging piliin ang pinakamatandang cell sa listahan.
  • Nagbubuo ng mga labirinto na may mas pantay na distribusyon, tulad ng isang breadth-first search na pattern.
  • Maikli, mabagsik na mga daanan na may mas maraming koneksyon.
  • (Ito ang bersyon na ipinapatupad dito)

Hybrid na Paraan:

Pagsamahin ang mga estratehiya para sa iba't ibang katangian ng labirinto. Halimbawa:

  • 90% pinakabago, 10% random: Mukhang karamihan ay isang recursive backtracker na labirinto, ngunit may paminsan-minsang mga sanga na nagpuputol sa mga mahahabang koridor.
  • 50% pinakabago, 50% pinakamatanda: Nagbibigay ng balanse sa pagitan ng mahahabang koridor at bushy na paglago.
Ibahagi sa BlueskyIbahagi sa FacebookIbahagi sa LinkedInIbahagi sa TumblrIbahagi sa XIbahagi sa LinkedInI-pin sa Pinterest

Mikkel Christensen

Tungkol sa May-akda

Mikkel Christensen
Si Mikkel ang lumikha at may-ari ng miklix.com. Siya ay may higit sa 20 taong karanasan bilang isang propesyonal na computer programmer/software developer at kasalukuyang nagtatrabaho ng full-time para sa isang malaking European IT corporation. Kapag hindi nagba-blog, ginugugol niya ang kanyang bakanteng oras sa isang malawak na hanay ng mga interes, libangan, at aktibidad, na maaaring sa ilang lawak ay makikita sa iba't ibang mga paksang sakop sa website na ito.