2013-04-11 6 views
5

के लिए एल्गोरिदमिक समाधान मैं माइन्सवेपर सॉल्वर बनाने की कोशिश कर रहा हूं। जैसा कि आप जानते हैं कि यह निर्धारित करने के 2 तरीके हैं कि खानभूमि में कौन से फ़ील्ड खोलने के लिए सुरक्षित हैं, या यह निर्धारित करने के लिए कि कौन से फ़ील्ड खनन किए गए हैं और आपको इसे ध्वजांकित करने की आवश्यकता है। निर्धारित करने के लिए सबसे पहले जिस तरह से तुच्छ है और हम कुछ इस तरह है:माइन्सवीपर

अगर (खानों की संख्या के आसपास एक्स - चारों ओर एक्स की खोज की खानों की वर्तमान संख्या) = चारों ओर एक्स बंद क्षेत्रों तो चारों ओर एक्स सभी बंद क्षेत्रों

खनन कर रहे हैं की संख्या

अगर (चारों ओर एक्स खानों की संख्या == चारों ओर एक्स की खोज की खानों की वर्तमान संख्या) तो चारों ओर एक्स सभी बंद क्षेत्रों खनन नहीं

लेकिन मेरे सवाल यह है: जब हम किसी भी खनन नहीं मिल रहा है क्या स्थिति के बारे में या सुरक्षित क्षेत्र और हमें 1 से अधिक फ़ील्ड देखने की आवश्यकता है?

http://img541.imageshack.us/img541/4339/10299095.png

उदाहरण के लिए

इस स्थिति। हम पिछले विधि का उपयोग कर कुछ भी निर्धारित नहीं कर सकते हैं। तो मुझे इन मामलों के लिए एल्गोरिदम के साथ मदद की ज़रूरत है।

मुझे इसे बनाने के लिए ए * एल्गोरिदम का उपयोग करना होगा। यही कारण है कि मुझे एल्गोरिदम में अगले चरण के लिए सभी संभावित सुरक्षित राज्यों की आवश्यकता है। जब मुझे सभी संभावित सुरक्षित राज्य मिलते हैं तो मैं उन्हें वर्तमान सबसे कम पथ में जोड़ूंगा और ह्युरिस्टिक फ़ंक्शन के आधार पर मैं पथों की सूची को क्रमबद्ध करूंगा और अगले फ़ील्ड को खोलने की आवश्यकता होगी।

+0

आप एल्गोरिदम लिखने से बच सकते हैं और कंप्यूटर को स्वयं ही सीख सकते हैं, लेकिन मैं आपको कोई भी भविष्य नहीं बता सकता ..:/ – BlackBear

+1

मुझे आपके द्वारा प्रदान की गई उदाहरण छवि को समझ में नहीं आता है। बाएं "2" बाएं तरफ दूसरी पंक्ति में खेतों को खनन करता है, लेकिन दूसरा "2" सुझाव देता है कि उनमें से केवल एक ही है। यह किस खेल संदर्भ में उठता है? क्या आप कल्पना कर रहे हैं कि गेम की जानकारी विरोधाभासी हो सकती है? – pjmorse

+0

लेकिन आप अपने एल्गोरिदम का उपयोग करके उस छवि में एक सुरक्षित फ़ील्ड ढूंढ सकते हैं। दो लोगों से घिरा हुआ 2 ले लो; दोनों के आसपास खानों की संख्या दोनों के आसपास की खोज की गई खानों की वर्तमान संख्या के बराबर होती है। तो आप इसके ऊपर खाली क्षेत्र को उजागर कर सकते हैं। या, क्या आपका मतलब है, अगर आपके पास उस क्षेत्र में अभी तक कोई झंडे नहीं हैं, तो आप उन दो झंडे को कैसे चिह्नित करेंगे? – Kevin

उत्तर

8

बहुत उत्तेजित होने से पहले, बहुत बढ़िया समस्या, कृपया NP Completeness and Minesweeper, साथ ही साथ presentation पढ़ें जो कुछ अच्छे सबसे खराब केस उदाहरण विकसित करता है और कैसे मनुष्य उन्हें हल कर सकता है। फिर भी, उम्मीद में हम सबसे अधिक संभावना समय बाधा नहीं मारेंगे, अगर हम बुनियादी छंटनी और हेरिस्टिक्स का उपयोग करते हैं।

खेल उत्पन्न करने का सवाल यहां पूछा गया है: Minesweeper solving algorithmalgebraic विधियों पर एक बहुत ही अच्छी पोस्ट है। आप कोशिश करने के लिए बैकट्रैकिंग भी दे सकते हैं (यानी अनुमान लगाएं और देखें कि क्या चीजें अमान्य हैं), ऐसे मामले के समान जहां स्थानीय जानकारी sudoku जैसी चीज़ों के लिए पर्याप्त नहीं है। इस technique के बारे में इस महान चर्चा को देखें।

+0

यदि आपको अपनी गलतियों से बैक अप लेने की अनुमति है, तो आप केवल एक बार प्रत्येक वर्ग को उजागर कर सकते हैं, और ट्रैक कर सकते हैं कि किन वर्गों में खान हैं। मुझे लगता है कि ओपी एक सॉल्वर की तलाश में है जो मानव के समान नियमों का पालन करता है - अर्थात् यदि आप एक गलत कदम उठाते हैं तो आप असफल हो जाते हैं। – mbeckish

+0

हां, ज़ाहिर है, बैकट्रैकिंग का उपयोग करें जब अन्य सभी अन्यथा विफल हो जाते हैं तो पेड़ तेजी से बढ़ता है। –

+0

लेकिन आप एक खदान को उजागर किए बिना और गेम खोने के बिना कैसे बैकट्रैक कर सकते हैं? – mbeckish

1

जैसा कि @ टिगर ने कहा कि यह कोई समस्या नहीं है जिसे नियमों के एक साधारण सेट के साथ हल किया जा सकता है। माइन्सवीपर एक अच्छा उदाहरण है जहां डीपीएलएल जैसे बैकट्रैकिंग एल्गोरिदम उपयोगी हैं। प्रस्तावित तर्क के रूप में सरल कुछ के साथ, आप minesweeper के लिए एक बहुत ही कुशल सॉल्वर लागू कर सकते हैं। मुझे यकीन नहीं है कि क्या आप एआई तर्क & तर्क परिचित से परिचित हैं - यदि नहीं, तो आप स्टुअर्ट रसेल और पीटर नॉरविग द्वारा "आर्टिफिशियल इंटेलिजेंस - ए मॉडर्न दृष्टिकोण" पुस्तक को देखना चाहेंगे। डीपीएलएल और प्रस्ताववादी तर्क के त्वरित संदर्भ के लिए, Google पर "wumpus world propositional logic" खोजें।