Miklix

مولد المتاهة لخوارزمية إلير

نُشرت: ١٦ فبراير ٢٠٢٥ م في ٧:٥٤:١٧ م UTC

مولد متاهة يستخدم خوارزمية Eller لإنشاء متاهة مثالية. هذه الخوارزمية مثيرة للاهتمام لأنها تتطلب فقط الاحتفاظ بالصف الحالي (وليس المتاهة بأكملها) في الذاكرة، وبالتالي يمكن استخدامها لإنشاء متاهات كبيرة جدًا حتى على أنظمة محدودة للغاية.

لقد تمت ترجمة هذه الصفحة آليًا من الإنجليزية بهدف جعلها متاحة لأكبر عدد ممكن من الأشخاص. لسوء الحظ، لم يتم تطوير تقنية الترجمة الآلية بعد، لذا قد تحدث أخطاء. إذا كنت تفضل ذلك، يمكنك عرض النسخة الإنجليزية الأصلية هنا:

Eller's Algorithm Maze Generator

خوارزمية Eller هي خوارزمية لإنشاء متاهات تنتج بكفاءة متاهات مثالية (متاهات بدون حلقات ومسار واحد بين أي نقطتين) باستخدام نهج الصف تلو الآخر. وهي تنتج متاهات مشابهة لخوارزمية Kruskal، ولكنها تفعل ذلك عن طريق إنشاء صف واحد فقط في كل مرة، دون الحاجة إلى تخزين المتاهة بالكامل في الذاكرة. وهذا يجعلها مفيدة لإنشاء متاهات كبيرة جدًا على أنظمة محدودة جدًا ولإنشاء محتوى إجرائي.

المتاهة المثالية هي المتاهة التي يوجد بها مسار واحد فقط من أي نقطة في المتاهة إلى أي نقطة أخرى. وهذا يعني أنه لا يمكنك أن تنتهي إلى الدوران في دوائر، ولكنك ستواجه غالبًا نهايات مسدودة، مما يضطرك إلى الالتفاف والعودة.

تتضمن خرائط المتاهة التي تم إنشاؤها هنا إصدارًا افتراضيًا بدون أي مواضع بداية ونهاية، لذا يمكنك تحديدها بنفسك: سيكون هناك حل من أي نقطة في المتاهة إلى أي نقطة أخرى. إذا كنت تريد الإلهام، فيمكنك تمكين موضع بداية ونهاية مقترح - وحتى رؤية الحل بين الاثنين.


إنشاء متاهة جديدة








نبذة عن خوارزمية إيلر

تم تقديم خوارزمية إيلر بواسطة ديفيد إيلر.

تتميز هذه الخوارزمية بنهجها الفعّال الذي يعتمد على إنشاء المتاهة صفًا تلو الآخر، مما يجعلها مثالية للمتاهات اللانهائية أو المتاهات التي يتم إنشاؤها في الوقت الفعلي. يتم الاستشهاد بها بشكل شائع في أدبيات إنشاء المحتوى الإجرائي وإنشاء المتاهة، لكنني لم أتمكن من العثور على مصادر أولية تفصل نشرها الأصلي.

كيف تعمل خوارزمية Eller لإنشاء المتاهة

تعمل خوارزمية Eller على معالجة صف واحد في كل مرة، مع الحفاظ على مجموعات الخلايا المتصلة وتعديلها. وتضمن الخوارزمية الاتصال مع تجنب الحلقات، كما تعمل على تمديد المتاهة إلى الأسفل بكفاءة.

من الناحية النظرية يمكن استخدامه لإنشاء متاهات لا نهائية، ومع ذلك، لضمان إمكانية حل المتاهة الناتجة فعليًا، من الضروري التبديل إلى منطق "الصف الأخير" في مرحلة ما لإنهاء المتاهة.

الخطوة 1: تهيئة الصف الأول

  • تعيين معرف مجموعة فريد لكل خلية في الصف.

الخطوة 2: ضم بعض الخلايا المتجاورة أفقيًا

  • دمج الخلايا المجاورة بشكل عشوائي عن طريق تعيينها على نفس معرف المجموعة. وهذا يضمن وجود ممرات أفقية.

الخطوة 3: إنشاء اتصالات رأسية للصف التالي

  • بالنسبة لكل مجموعة تظهر في الصف، يجب أن تتصل خلية واحدة على الأقل بالأسفل (لضمان الاتصال).
  • اختر بشكل عشوائي خلية واحدة أو أكثر من كل مجموعة لتوصيلها بالصف التالي.

الخطوة 4: الانتقال إلى الصف التالي

  • قم بنقل الاتصالات الرأسية عن طريق تعيين نفس معرف المجموعة للخلايا المقابلة أدناه.
  • تعيين معرفات مجموعة جديدة لأي خلايا غير معينة.

الخطوة 5: كرر الخطوات من 2 إلى 4 حتى الوصول إلى الصف الأخير

  • متابعة المعالجة صفًا تلو الآخر.

الخطوة 6: معالجة الصف الأخير

  • تأكد من أن جميع الخلايا الموجودة في الصف الأخير تنتمي إلى نفس المجموعة عن طريق دمج أي مجموعات منفصلة متبقية.

شارك على بلوسكايشارك على الفيسبوكشارك على لينكدإنشارك على تمبلرشارك على إكسشارك على لينكدإنثبت على بينتريست

ميكيل بانج كريستنسن

عن المؤلف

ميكيل بانج كريستنسن
ميكيل هو مؤسس ومالك موقع miklix.com. يتمتع بخبرة تزيد عن 20 عامًا كمبرمج كمبيوتر/مطور برامج محترف ويعمل حاليًا بدوام كامل في إحدى شركات تكنولوجيا المعلومات الأوروبية الكبرى. عندما لا يقوم بالتدوين، يقضي وقت فراغه في مجموعة واسعة من الاهتمامات والهوايات والأنشطة، والتي قد تنعكس إلى حد ما في تنوع الموضوعات التي يغطيها هذا الموقع.