Miklix

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

Հրապարակվել է՝ 16 փետրվարի, 2025 թ., 18:24:31 UTC
Վերջին թարմացումը՝ 12 հունվարի, 2026 թ., 09:02:30 UTC

Լաբիրինթոսի գեներատոր՝ օգտագործելով ռեկուրսիվ հետադարձման ալգորիթմ՝ կատարյալ լաբիրինթոս ստեղծելու համար: Այս ալգորիթմը հակված է ստեղծել լաբիրինթոսներ՝ երկար, գալարուն միջանցքներով և շատ երկար, գալարուն լուծումներով:

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

Recursive Backtracker Maze Generator

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

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

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


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








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

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


Ինչպես է այն աշխատում

Ալգորիթմը գործում է խորության վրա հիմնված որոնման մոտեցմամբ։ Ահա քայլ առ քայլ վերլուծությունը՝

  1. Ընտրեք մեկնարկային բջիջ և նշեք այն որպես այցելված։
  2. Քանի դեռ կան չայցելված բջիջներ՝ նայեք հարևան բջիջներին, որոնք դեռևս չեն այցելել։ Եթե գոյություն ունի առնվազն մեկ չայցելված հարևան՝ պատահականորեն ընտրեք չայցելված հարևաններից մեկը։ Հեռացրեք ներկայիս և ընտրված հարևանի միջև եղած պատը։ Տեղափոխվեք ընտրված հարևանի մոտ և նշեք այն որպես այցելված։ Տեղափոխեք ներկայիս բջիջը կույտի մեջ։ Եթե չայցելված հարևաններ չկան՝ վերադարձեք հետ՝ կույտից հանելով վերջին բջիջը։
  3. Շարունակեք այս գործընթացը, մինչև կույտը դատարկվի։

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

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

Լրացուցիչ ընթերցանություն

Եթե ​​ձեզ դուր եկավ այս գրառումը, ձեզ կարող են նաև դուր գալ այս առաջարկները.


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

Միկել Քրիստենսեն

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

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