मैं इस समय इस पर काम कर रहा हूं ... किनारे से शुरू हो रहा हूं, मैं एक वर्ग सरणी में यादृच्छिक चल रहा हूं, जब मैं उनके माध्यम से गुजरता हूं तो पथ लंबाई के साथ कोशिकाओं को चिह्नित करता हूं।
जब आप अटक जाते हैं (और आप करेंगे), एक टी-जंक्शन बनाएं जो आपके आस-पास के सबसे हालिया पथ के साथ एक लूप बना रहा हो (लेकिन नीचे देखें)। मैं फिर टी-जंक्शन के दूसरी तरफ मौजूदा रास्ते के साथ ट्रैक करता हूं और वहां लूप तोड़ता हूं। यह लटकती पूंछ फिर यादृच्छिक चलने के अपने नए 'सिर' बनाती है (पथ स्रोत से अपने पथ की लंबाई को फिर से समझना याद रखें), और आप आगे बढ़ सकते हैं।
प्रयोगों से पता चलता है कि ऐसा करके यह (या अभी तक नहीं देखा गया है) नई पूंछ बनाने के एक लूप में आया है, जब तक कि आपकी नई 'पूंछ' फंस गई हो, आप बस नहीं मस्तिष्क से उस सेल के साथ एक लिंक फिर से बनाएं जिसे आपने अभी हाल ही में तोड़ दिया है - उस मामले में दूसरा सबसे हालिया चुनें।
समाप्त मामला है जब आप एक बढ़त तत्व पर 'अटक' हो जाता है, और आप सरणी भर दिया (अपने पथ की लंबाई सरणी के क्षेत्र के रूप में एक ही है) - आपका काम हो गया। आपका प्रारंभ बिंदु आपके अंतिम बिंदु की ओर जाता है।
इस के साथ दो संभावित अक्षमताएं और संभावित हिचकी लगती हैं (मैं इस समय एल्गोरिदम के साथ खेल रहा हूं) - कभी-कभी आप कोने में चलेंगे और जारी रखने का एकमात्र तरीका लूप को दोबारा बनाना है जो आपने अभी टूटा है उसके साथ लिंक करें। फिर अनुक्रम बैक-ट्रैक उन सभी लूपों के माध्यम से जिन्हें आपने पहले उस बिंदु पर बनाया था जिस पर आप मूल रूप से फंस गए थे। यदि कि कहीं और नहीं जा सकते (यह दूसरे कोने है) तो आप सिर्फ दो के बीच उछाल होगा। इसके आस-पास के तरीके हैं, लेकिन इसका मतलब है कि कुछ प्रकार की लूप कोशिकाओं की सूची रखना, केवल तभी इसे साफ़ करना जब आप वास्तव में कुछ नया रास्ता डालते हैं।
अन्य
कि इसे छोड़ने का खतरा लगता है एक अजीब वर्ग रिक्त है, खासकर जब आपके सरणी अजीब-दर-अजीब है। मैं पूरी तरह से जांच की है नहीं क्यों यह मामला है, और जब ऐसा होता है कि पिछले कोने समस्या विशेष रूप से प्रचलित लगता है यह है।कार्य जारी है ...
वहाँ किसी भी प्रतिबंध है, उदा है कोई 2x2 काला वर्ग? –
@ ली रयान: नहीं। हालांकि जवाबों के बीच इस तरह के एल्गोरिदम होना अच्छा लगेगा। – Fejuto
संबंधित: http://stackoverflow.com/questions/2641964/algorithm-to-generate-a-segment-maze – nico