Miklix

Կրուսկալի ալգորիթմի լաբիրինթոս գեներատոր

Հրապարակվել է՝ 16 փետրվարի, 2025 թ., 18:05:48 UTC
Վերջին թարմացումը՝ 12 հունվարի, 2026 թ., 08:59:35 UTC

Լաբիրինթոսի գեներատոր՝ օգտագործելով Կրուսկալի ալգորիթմը՝ կատարյալ լաբիրինթոս ստեղծելու համար: Այս ալգորիթմը հակված է ստեղծել լաբիրինթոսներ միջին երկարության միջանցքներով և բազմաթիվ փակուղիներով, ինչպես նաև բավականին ուղիղ լուծումով:

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

Kruskal's Algorithm Maze Generator

Կրուսկալի ալգորիթմը նվազագույն ընդգրկող ծառի ալգորիթմ է, որը կարող է հարմարեցվել լաբիրինթոս ստեղծելու համար: Այն հատկապես արդյունավետ է կատարյալ լաբիրինթոսներ ստեղծելու համար: Կրուսկալի ալգորիթմի այլընտրանքը Պրիմի ալգորիթմն է, որը նույնպես նվազագույն ընդգրկող ծառի ալգորիթմ է, բայց քանի որ դրանք ստեղծում են նույնական լաբիրինթոսներ, և Կրուսկալի գործողությունները ավելի արագ են, ես չեմ անհանգստացել Պրիմի ալգորիթմը իրականացնելու համար:

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

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


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








Կրուսկալի ալգորիթմի մասին

Կրուսկալի ալգորիթմը ստեղծվել է ամերիկացի մաթեմատիկոս, վիճակագիր և համակարգչային գիտնական Ջոզեֆ Բեռնարդ Կրուսկալ կրտսերի կողմից։ Նա առաջին անգամ նկարագրել է ալգորիթմը 1956 թվականին իր «Գրաֆի ամենակարճ ընդգրկող ենթածառի և շրջիկ վաճառողի խնդրի մասին» հոդվածում։

Ալգորիթմը նախագծված է գրաֆի նվազագույն ճյուղավորված ծառը (MST) գտնելու համար՝ ապահովելով, որ բոլոր գագաթները կապված լինեն հնարավոր նվազագույն ընդհանուր եզրի կշիռով՝ միաժամանակ խուսափելով ցիկլերից։

Ինչպես է Կրուսկալի ալգորիթմը աշխատում լաբիրինթոսի ստեղծման համար

Քայլ 1. Նախաձեռնել

  • Լաբիրինթոսի յուրաքանչյուր բջիջը դիտարկեք որպես առանձին հավաքածու (միակ բաղադրիչ):
  • Հարակից բջիջների միջև գտնվող բոլոր պատերը թվարկեք որպես պոտենցիալ եզրեր։

Քայլ 2. Պատերի տեսակավորում

  • Պատերը խառնեք կամ պատահականորեն դասավորեք։ Եթե այն իրականացնում եք որպես իրական Կրուսկալի ալգորիթմ, պատերը դասավորեք պատահական կարգով (քանի որ լաբիրինթոսի ստեղծումը կշիռներ չի պահանջում)։

Քայլ 3. Գործընթացային պատեր

  • Անցեք խառնված պատերի միջով։
  • Եթե պատով բաժանված երկու բջիջները պատկանում են տարբեր բազմությունների (այսինքն՝ դրանք դեռևս միացված չեն լաբիրինթոսում), հեռացրեք պատը և միացրեք բազմությունները։
  • Եթե դրանք արդեն նույն հավաքածուի մեջ են, բաց թողեք պատը (ցիկլերից խուսափելու համար):

Քայլ 4. Շարունակեք մինչև ավարտը

  • Կրկնեք այս գործընթացը մինչև բոլոր բջիջները միանան՝ կազմելով մեկ տարածվող ծառ։
  • Վերջում յուրաքանչյուր բջիջ միացված է մյուսներին առանց օղակների կամ մեկուսացված հատվածների։

Քանի որ Կրուսկալի ալգորիթմը հիմնված է միաձուլվող բազմությունների վրա, այն կարող է օպտիմալացվել՝ օգտագործելով Union-Find ալգորիթմը, որը ապահովում է լաբիրինթոսի ստեղծման ընթացքում միացված բջիջները հետևելու արդյունավետ միջոց: Դուք կարող եք տեսնել Union-Find ալգորիթմի իմ PHP իրականացումը այստեղ՝ Հղում

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

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


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

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

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

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