كيفية اجتياز متاهة برمجيا عندما وصلت إلى طريق مسدود

StackOverflow https://stackoverflow.com/questions/40413

سؤال

تتحرك من خلال المتاهة إلى الأمام من السهل جدا, ولكن أنا لا يمكن أن يبدو لمعرفة كيفية عمل نسخة احتياطية من خلال المتاهة في محاولة جديدة طريق بمجرد أن تصل إلى طريق مسدود دون الرجوع بعيد ؟

هل كانت مفيدة؟

المحلول

استخدام التراجع عن طريق الحفاظ على كومة من السابق اتجاه القرارات.

نصائح أخرى

أبسط (لتنفيذ) خوارزمية أن تبقى مجرد كومة من المواقع كنت في الطريق أخذت من كل ما لم تتراجع يعطيك هذه المعلومات.

العودة, فقط البوب قبالة المواقع القديمة من المكدس البحث عن المزيد من مخارج من هذا الموقع حتى تجد قديمة الموقع مع غير مجرب الخروج.

باستمرار واختبار المخارج بنفس الترتيب في كل مرة, إذا كنت تعرف أن التراجع إلى موقع يأتي من أسفل (أي.آخر مرة كنت في الموقع القديم ذهبت إلى أسفل) ، ثم يمكنك ببساطة اختيار الاتجاه القادم بعد أسفل.

أنا لست متأكدا تماما ما تعنيه يعود بسرعة على الرغم من أنني أفترض أنك تريد العودة إلى المكان السابق كنت قد تختبر طرق, أليس هذا ما تريد ؟

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

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

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

إريك ليبرت هل سلسلة من المقالات على خلق C# تقبال من*, التي قد تكون أكثر كفاءة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top