Miklix

Kruskalın Alqoritmi Maze Generatoru

Nəşr olundu: 16 fevral 2025 at 18:09:28 UTC
Son yeniləmə: 12 yanvar 2026 at 08:59:41 UTC

Mükəmməl bir labirint yaratmaq üçün Kruskal alqoritmindən istifadə edən labirint generatoru. Bu alqoritm orta uzunluqlu dəhlizlərə və bir çox çıxılmaz nöqtələrə malik labirintlər, eləcə də kifayət qədər düz bir həll yolu yaratmağa meyllidir.

Bu səhifə mümkün qədər çox insan üçün əlçatan olması üçün ingilis dilindən maşın tərcümə edilib. Təəssüf ki, maşın tərcüməsi hələ mükəmməl texnologiya deyil, ona görə də səhvlər baş verə bilər. İstəyirsinizsə, orijinal ingilis versiyasına buradan baxa bilərsiniz:

Kruskal's Algorithm Maze Generator

Kruskalın alqoritmi labirint yaratmaq üçün uyğunlaşdırıla bilən minimum genişlənən ağac alqoritmidir. Xüsusilə mükəmməl labirintlər yaratmaq üçün təsirlidir. Kruskalın alqoritminə alternativ olaraq, eyni zamanda minimum genişlənən ağac alqoritmi olan Prim alqoritmini istifadə edə bilərsiniz, lakin onlar eyni labirintlər yaratdıqları və Kruskalın daha sürətli işlədiyi üçün Primləri tətbiq etməyə vaxt ayırmadım.

Mükəmməl bir labirint, labirintdəki hər hansı bir nöqtədən hər hansı digər nöqtəyə tam olaraq bir yolun olduğu labirintdir. Bu o deməkdir ki, siz dövrələrə girə bilməyəcəksiniz, ancaq tez-tez çıxılmaz nöqtələrlə qarşılaşacaqsınız, sizi dönüb geri qayıtmağa məcbur edəcəksiniz.

Burada yaradılan labirint xəritələri heç bir başlanğıc və bitmə mövqeləri olmayan defolt versiyanı ehtiva edir, buna görə də özünüz üçün bunlara qərar verə bilərsiniz: labirintdə istənilən nöqtədən istənilən digər nöqtəyə həll yolu olacaq. Əgər ilham almaq istəyirsinizsə, təklif olunan başlanğıc və bitiş mövqeyini aktivləşdirə və hətta ikisi arasında həll yolu görə bilərsiniz.


Yeni labirint yaradın








Kruskalın Alqoritmi Haqqında

Kruskalın alqoritmi amerikalı riyaziyyatçı, statistik və kompüter alimi Cozef Bernard Kruskal tərəfindən yaradılmışdır. O, alqoritmi ilk dəfə 1956-cı ildə "Qrafikin ən qısa uzanan alt ağacı və səyahət edən satıcı problemi haqqında" adlı məqaləsində təsvir etmişdir.

Alqoritm, dövrlərdən qaçınmaqla bütün təpələrin mümkün olan minimum ümumi kənar çəkisi ilə birləşdirildiyinə əmin olaraq, qrafikin minimum yayılma ağacını (MST) tapmaq üçün hazırlanmışdır.

Kruskalın Alqoritmi Labirint Yaradılması üçün Necə İşləyir

Addım 1: Başlanğıclaşdırın

  • Labirintdəki hər bir hücrəni ayrı bir dəst (unikal bir komponent) kimi qəbul edin.
  • Qonşu hüceyrələr arasındakı bütün divarları potensial kənarlar kimi sadalayın.

Addım 2: Divarları sıralayın

  • Divarları qarışdırın və ya təsadüfi şəkildə sıralayın. Əgər bunu əsl Kruskal alqoritmi kimi tətbiq edirsinizsə, divarları təsadüfi qaydada sıralayın (çünki labirint yaratmaq üçün çəkilər tələb olunmur).

Addım 3: Divarları emal edin

  • Qarışdırılmış divarlar arasından keçin.
  • Əgər divarla bölünmüş iki hücrə fərqli dəstlərə aiddirsə (yəni, onlar hələ labirintdə bir-birinə bağlı deyillərsə), divarı çıxarın və dəstləri birləşdirin.
  • Əgər onlar artıq eyni dəstdədirlərsə, (dövrlərin qarşısını almaq üçün) divarı atlayın.

Addım 4: Tamamlanana qədər davam edin

  • Bütün hüceyrələr birləşənə və tək bir ağac əmələ gələnə qədər bu prosesi təkrarlayın.
  • Sonda hər bir hücrə digərlərinə ilgəklər və ya təcrid olunmuş hissələr olmadan bağlanır.

Kruskalın alqoritmi birləşmə dəstlərinə əsaslandığı üçün, labirint generasiyası zamanı bağlı hücrələri izləmək üçün səmərəli bir yol təqdim edən Union-Find alqoritmindən istifadə etməklə optimallaşdırıla bilər. Union-Find alqoritminin PHP tətbiqini burada görə bilərsiniz: Link

Əlavə Oxu

Bu yazı xoşunuza gəldisə, bu təklifləri də bəyənə bilərsiniz:


Bluesky-də paylaşınFacebookda paylaşLinkedIn-də paylaşınTumblr-da paylaşınX-də paylaşınLinkedIn-də paylaşınPinterest-də Pin

Mikkel Christensen

Müəllif haqqında

Mikkel Christensen
Mikkel miklix.com saytının yaradıcısı və sahibidir. O, peşəkar kompüter proqramçısı/proqram təminatı tərtibatçısı kimi 20 ildən artıq təcrübəyə malikdir və hazırda böyük Avropa İT korporasiyasında tam iş günü işləyir. Bloq yazmayanda o, boş vaxtını geniş çeşidli maraqlara, hobbilərə və fəaliyyətlərə sərf edir ki, bu da müəyyən dərəcədə bu veb-saytda əhatə olunan müxtəlif mövzularda əks oluna bilər.