Miklix

الگوریتم Kruskal مولد پیچ و خم

منتشر شده: ۱۶ فوریهٔ ۲۰۲۵ ساعت ۱۸:۰۱:۲۵ (UTC)
آخرین به روز رسانی: ۱۲ ژانویهٔ ۲۰۲۶ ساعت ۸:۵۹:۲۹ (UTC)

مولد هزارتو با استفاده از الگوریتم کروسکال برای ایجاد یک هزارتوی بی‌نقص. این الگوریتم تمایل دارد هزارتوهایی با راهروهای با طول متوسط و بن‌بست‌های زیاد و همچنین یک راه‌حل نسبتاً مستقیم ایجاد کند.

این صفحه ماشینی از انگلیسی ترجمه شد تا در دسترس هر چه بیشتر مردم باشد. متأسفانه، ترجمه ماشینی هنوز یک فناوری کامل نشده است، بنابراین ممکن است خطاهایی رخ دهد. در صورت تمایل می توانید نسخه اصلی انگلیسی را در اینجا مشاهده کنید:

Kruskal's Algorithm Maze Generator

الگوریتم کروسکال یک الگوریتم درخت پوشای کمینه است که می‌تواند برای تولید هزارتو تطبیق داده شود. این الگوریتم به ویژه برای ایجاد هزارتوهای کامل مؤثر است. جایگزینی برای الگوریتم کروسکال، الگوریتم پریم است که آن هم یک الگوریتم درخت پوشای کمینه است، اما از آنجایی که آنها هزارتوهای یکسانی تولید می‌کنند و کروسکال سریع‌تر اجرا می‌شود، من زحمت پیاده‌سازی پریم را به خود نداده‌ام.

پیچ و خم کامل، پیچ و خم هایی است که در آن دقیقاً یک مسیر از هر نقطه در پیچ و خم به هر نقطه دیگر وجود دارد. این بدان معناست که شما نمی توانید در نهایت به دور زدن در دایره بپردازید، اما اغلب با بن بست هایی روبرو می شوید که شما را وادار می کند که بچرخید و به عقب برگردید.

نقشه های پیچ و خم تولید شده در اینجا شامل یک نسخه پیش فرض بدون هیچ موقعیت شروع و پایان است، بنابراین شما می توانید آن ها را برای خود تصمیم بگیرید: از هر نقطه در پیچ و خم تا هر نقطه دیگر راه حلی وجود خواهد داشت. اگر می خواهید الهام بگیرید، می توانید یک موقعیت پیشنهادی شروع و پایان را فعال کنید - و حتی راه حل بین این دو را ببینید.


ایجاد پیچ ​​و خم جدید








درباره الگوریتم کروسکال

الگوریتم کروسکال توسط جوزف برنارد کروسکال جونیور، ریاضیدان، آماردان و دانشمند کامپیوتر آمریکایی، ایجاد شد. او اولین بار این الگوریتم را در سال ۱۹۵۶ در مقاله خود با عنوان «درباره کوتاه‌ترین زیردرخت فراگیر یک گراف و مسئله فروشنده دوره‌گرد» شرح داد.

این الگوریتم برای یافتن درخت پوشای کمینه (MST) یک گراف طراحی شده است، و تضمین می‌کند که همه رئوس با حداقل وزن یال کل ممکن به هم متصل هستند و در عین حال از ایجاد چرخه‌ها جلوگیری می‌کند.

نحوه‌ی عملکرد الگوریتم کروسکال برای تولید هزارتو

مرحله ۱: مقداردهی اولیه

  • هر سلول در هزارتو را به عنوان یک مجموعه جداگانه (یک جزء منحصر به فرد) در نظر بگیرید.
  • تمام دیوارهای بین سلول‌های مجاور را به عنوان لبه‌های بالقوه فهرست کنید.

مرحله 2: مرتب سازی دیوارها

  • دیوارها را به صورت تصادفی یا تصادفی مرتب کنید. اگر آن را به عنوان یک الگوریتم واقعی کروسکال پیاده‌سازی می‌کنید، دیوارها را به ترتیب تصادفی مرتب کنید (زیرا تولید هزارتو نیازی به وزن ندارد).

مرحله 3: دیوارها را پردازش کنید

  • از میان دیوارهای درهم‌ریخته عبور کن.
  • اگر دو سلول تقسیم‌شده توسط دیوار به مجموعه‌های مختلفی تعلق دارند (یعنی هنوز در هزارتو به هم متصل نشده‌اند)، دیوار را حذف کرده و مجموعه‌ها را ادغام کنید.
  • اگر آنها از قبل در یک مجموعه هستند، از دیوار صرف نظر کنید (برای جلوگیری از چرخه).

مرحله ۴: ادامه تا تکمیل

  • این فرآیند را تا زمانی که همه سلول‌ها به هم متصل شوند، تکرار کنید و یک درخت پوشا تشکیل دهید.
  • در پایان، هر سلول بدون حلقه یا بخش‌های مجزا به سلول‌های دیگر متصل است.

از آنجایی که الگوریتم کروسکال بر ادغام مجموعه‌ها متکی است، می‌توان آن را با استفاده از الگوریتم Union-Find بهینه کرد، که روشی کارآمد برای ردیابی سلول‌های متصل در طول تولید هزارتو فراهم می‌کند. می‌توانید پیاده‌سازی PHP من از الگوریتم Union-Find را اینجا ببینید: لینک

مطالعه بیشتر

اگر از این پست لذت بردید، ممکن است این پیشنهادات را نیز بپسندید:


در Bluesky به اشتراک بگذاریددر فیسبوک به اشتراک بگذاریددر لینکدین به اشتراک بگذاریددر Tumblr به اشتراک بگذاریددر X به اشتراک بگذاریددر لینکدین به اشتراک بگذاریدپین در پینترست

میکل کریستنسن

درباره نویسنده

میکل کریستنسن
مایکل خالق و صاحب miklix.com است. او بیش از 20 سال تجربه به عنوان یک برنامه نویس حرفه ای کامپیوتر / توسعه دهنده نرم افزار دارد و در حال حاضر به طور تمام وقت برای یک شرکت بزرگ فناوری اطلاعات اروپایی مشغول به کار است. هنگامی که وبلاگ نویسی نمی کند، اوقات فراغت خود را صرف مجموعه وسیعی از علایق، سرگرمی ها و فعالیت ها می کند، که ممکن است تا حدی در موضوعات مختلف پوشش داده شده در این وب سایت منعکس شود.