Miklix

Recursive Backtracker Maze գեներատոր

Հրապարակվել է՝ 16 փետրվարի, 2025 թ., 18:24:31 UTC

Maze գեներատորը, օգտագործելով recursive backtracker ալգորիթմը կատարյալ լաբիրինթոս ստեղծելու համար: Այս ալգորիթմը հակված է լաբիրինթոսներ ստեղծել երկար, քամոտ միջանցքներով եւ շատ երկար, ոլորված լուծույթով:

Այս էջը ավտոմատ կերպով թարգմանվել է անգլերենից՝ հնարավորինս շատ մարդկանց համար հասանելի դարձնելու համար: Ցավոք, մեքենայական թարգմանությունը դեռ կատարելագործված տեխնոլոգիա չէ, ուստի կարող են սխալներ առաջանալ: Եթե ​​նախընտրում եք, կարող եք դիտել բնօրինակ անգլերեն տարբերակը այստեղ.

Recursive Backtracker Maze Generator

Ռեկուրսիվ backtracker ալգորիթմը իրականում ընդհանուր նպատակի խորության որոնում է: Երբ այն օգտագործվում է լաբիրինթոսային սերնդի համար, այն փոքր-ինչ ձեւափոխվում է պատահականորեն ընտրելու ուղին, մինչդեռ եթե օգտագործվում է իրական որոնման նպատակով, ապա մարդը սովորաբար պարզապես փնտրում է յուրաքանչյուր մակարդակը գծային կարգով։ Այն հակված է լաբիրինթոսներ արտադրելու, որոնք ունեն երկար, քամոտ միջանցքներ եւ շատ երկար, ոլորապտույտ լուծույթ։

Կատարյալ լաբիրինթոսն այն լաբիրինթոսն է, որտեղ լաբիրինթոսի ցանկացած կետից դեպի ցանկացած այլ կետ կա ուղիղ մեկ ճանապարհ: Դա նշանակում է, որ դուք չեք կարող ի վերջո շրջել շրջանակներով, բայց հաճախ կհանդիպեք փակուղիների՝ ստիպելով ձեզ շրջվել և հետ գնալ:

Այստեղ ստեղծված լաբիրինթոսային քարտեզները ներառում են լռելյայն տարբերակ՝ առանց որևէ մեկնարկի և ավարտի դիրքերի, այնպես որ դուք կարող եք որոշել դրանք ինքներդ. լուծում կլինի լաբիրինթոսի ցանկացած կետից մինչև ցանկացած այլ կետ: Եթե ​​ցանկանում եք ոգեշնչել, կարող եք միացնել առաջարկվող սկզբի և ավարտի դիրքը և նույնիսկ տեսնել լուծումը երկուսի միջև:


Ստեղծեք նոր լաբիրինթոս








Ռեկուրսիվ backtracker ալգորիթմը կատարյալ լաբիրինթոսներ ստեղծելու խորացված առաջին որոնման մեթոդ է (լաբիրինթոսներ, որոնք չունեն պտույտներ եւ մեկ ճանապարհ ցանկացած երկու կետերի միջեւ)։ Այն պարզ է, արդյունավետ եւ առաջացնում է տեսողական գրավիչ լաբիրինթոսներ, որոնք ունեն երկար, քամոտ միջանցքներ։

Չնայած իր անվանմանը, պարտադիր չէ, որ այն կիրառվի կրկնության միջոցով: Այն հաճախ կիրառվում է իտերատիվ մոտեցմամբ՝ օգտագործելով LIFO հերթը (այսինքն՝ ստալակ): Շատ մեծ լաբիրինթոսների դեպքում կրկնվելու դեպքում ավելի հավանական է, որ զանգերի կուտակումը տեղի կունենա՝ կախված ծրագրավորման լեզվից եւ առկա հիշողությունից։ LIFO հերթը ավելի հեշտությամբ կարելի է հարմարեցնել մեծ քանակությամբ տվյալներ ձեռք բերելուն, նույնիսկ հերթը պահել սկավառակի կամ տվյալների բազայի վրա, եթե առկա հիշողությունը բավարար չէ:


Ինչպես է այն գործում

Ալգորիթմը գործում է ստակի վրա հիմնված խորության վրա հիմնված որոնման մոտեցման միջոցով: Ահա քայլ առ քայլ կոտրվածքը.

  1. Ընտրեք սկսնակ բջիջը եւ նշեք այն որպես այցեքարտ:
  2. Մինչ կան չզտված բջիջներ.
    • Նայեք հարեւան բջիջներին, որոնք դեռ չեն այցելել:
    • Եթե առնվազն մեկ չզվայել հարեւան գոյություն ունի.
      • Պատահականորեն ընտրեք չզվարված հարեւաններից մեկին:
      • Հեռացրեք պատը ներկա բջջի եւ ընտրված հարեւանի միջեւ:
      • Տեղափոխվեք ընտրված հարեւանի մոտ եւ նշեք այն որպես այցելություն:
      • Ներկա բջիջը հրեք կույտի վրա։
    • Եթե չկան չզգավորված հարեւաններ.
      • Backtrack- ը' վերջին բջիջը կճղակից դուրս գալով:
  3. Շարունակեք այս գործընթացը, մինչեւ որ ստաքը դատարկվի:

Հետաքրքիր փաստ այս ալգորիթմի մասին այն է, որ այն աշխատում է ինչպես լաբիրինթոսային գեներատոր, այնպես էլ որպես լաբիրինթոս լուծող: Եթե այն աշխատեցնեք արդեն արտադրված լաբիրինթոսում եւ պարզապես կանգ առնեք, երբ հասնեք որոշված վերջնակետին, ապա կպարունակի լաբիրինթոսի լուծույթը։

Ես իրականում ունեմ այս ալգորիթմի երկու տարբերակները այս կայքում խաղալիս. LIFO հերթ, որը հիմնված է մեկը այս էջում լաբիրինթոսներ գեներացնելու համար, եւ մի կրկնություն, որը հիմնված է լաբիրինթոսների լուծման համար, նաեւ լաբիրինթոսներ, որոնք ստեղծվում են այլ ալգորիթմների կողմից (այդպես են ստեղծվում լուծումներով քարտեզները): Երկու տարբեր տարբերակներ ունենալը միայն սպորտի համար է, քանի որ ես մի nerd եմ, ով այն հետաքրքիր է համարում, երկուսն էլ կարող էին աշխատել երկուսի համար ;-)

Կիսվեք Bluesky-ումԿիսվել Facebook-ումԿիսվեք LinkedIn-ումԿիսվեք Tumblr-ումԿիսվեք X-ումԿիսվեք LinkedIn-ումԿպցնել Պինթրեսթում

Միկել Բանգ Քրիստենսեն

Հեղինակի մասին

Միկել Բանգ Քրիստենսեն
Mikkel-ը miklix.com-ի ստեղծողն ու սեփականատերն է: Նա ունի ավելի քան 20 տարվա աշխատանքային փորձ՝ որպես պրոֆեսիոնալ համակարգչային ծրագրավորող/ծրագրային ապահովման մշակող և ներկայումս լրիվ դրույքով աշխատում է եվրոպական խոշոր ՏՏ կորպորացիայի մեջ: Երբ նա բլոգ չի գրում, նա իր ազատ ժամանակն անցկացնում է հետաքրքրությունների, հոբբիների և գործունեության լայն շրջանակի վրա, որոնք որոշ չափով կարող են արտացոլվել այս կայքում ընդգրկված թեմաների բազմազանության մեջ: