2008-09-18 11 views
14

मैंने अपनी एआई किताबों में से एक में पढ़ा है कि सिमुलेशन या गेम में पथ-खोज के लिए लोकप्रिय एल्गोरिदम (ए-स्टार, डिजस्ट्रा) भी प्रसिद्ध "15-पहेली" को हल करने के लिए उपयोग किया जाता है।आप ए-स्टार या डिजस्ट्रा के एल्गोरिदम के साथ 15-पहेली को कैसे हल करते हैं?

क्या कोई मुझे कुछ पॉइंटर्स दे सकता है कि मैं कैसे 15-पहेली को नोड्स और किनारों के ग्राफ में कम कर दूंगा ताकि मैं इन एल्गोरिदम में से किसी एक को लागू कर सकूं?

यदि मैं ग्राफ में प्रत्येक नोड को गेम स्थिति के रूप में मानना ​​था तो क्या वह पेड़ काफी बड़ा नहीं होगा? या यह सिर्फ ऐसा करने का तरीका है?

+9

यह compsci होमवर्क की तरह गंध करता है! –

+2

इसकी काफी कॉम्पसी होमवर्क समस्या – monksy

उत्तर

1

बस खेल के पेड़ का उपयोग करें। याद रखें कि एक पेड़ ग्राफ का एक विशेष रूप है।

आपके मामले में प्रत्येक नोड की पत्तियां वर्तमान नोड पर उपलब्ध चालों में से एक बनाने के बाद गेम स्थिति होगी।

6

एक त्वरित गूगल खोज एक जोड़े कागजात कि कुछ विस्तार से इस कवर अप बदल जाता है: Parallel Combinatorial Search पर, और External-Memory Graph Search

अंगूठे का सामान्य नियम पर एक जब यह एल्गोरिथम समस्याओं की बात आती है: कोई संभावना से पहले ही किया है आप, और उनके निष्कर्ष प्रकाशित किए।

+0

आपके लिंक का आधा हिस्सा मर चुका है। – Jonny

+0

यहां पहला लिंक है: http://www.cse.psu.edu/~pxr3/optslides.pdf –

0

भी। सावधान रहें कि ए-स्टार एल्गोरिदम के साथ, कम से कम, आपको यह निर्धारित करने के लिए एक स्वीकार्य ह्युरिस्टिक को समझने की आवश्यकता होगी कि कोई दूसरा अगला कदम एक और चरण की तुलना में समाप्त मार्ग के करीब है या नहीं।

+1

वास्तव में नहीं। एक स्वीकार्य ह्युरिस्टिक केवल आवश्यक कदमों की संख्या को अधिक महत्व देने की आवश्यकता नहीं है। यदि आप बता सकते हैं कि कौन से दो कदम करीब थे, तो आप सामान्य अर्थ में एक खोज नहीं कर पाएंगे, बस –

8

15 पहेली के साथ ए-स्टार के लिए एक अच्छा ह्युरिस्टिक गलत स्थान में वर्गों की संख्या है। क्योंकि आपको प्रति वर्ग कम से कम 1 कदम की आवश्यकता है, जगह से बाहर वर्गों की संख्या को पहेली को हल करने के लिए आवश्यक चालों की संख्या से कम या बराबर होने की गारंटी है, जिससे यह ए-स्टार के लिए उपयुक्त ह्युरिस्टिक बन गया है ।

+3

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

+1

आप सही हैं, यह बेहतर है, लेकिन मेरा भी काम करेगा। – RossFabricant

1

यहां आपको http://www.heyes-jones.com/astar.html

+0

धन्यवाद यह मेरा पृष्ठ है! 8puzzle को हल करने के लिए कोड है और यह इवान ब्रैट्को के प्रोलॉग प्रोग्रामिंग में इलाज के आधार पर है – justinhj

2

कि एक याद रखें * आपके हेरेस्टिक द्वारा परिभाषित लक्ष्य के सबसे संभावित पथ के नीचे समस्या स्थान आगे बढ़ने के माध्यम से खोज करेगा।

केवल सबसे बुरी स्थिति में यह पूरे समस्या स्थान को भरने में बाढ़ आ जाएगा, यह तब होता है जब आपकी समस्या का कोई वास्तविक समाधान नहीं होता है।

3

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

इस दृष्टिकोण के साथ एक समस्या यह है कि n x n बोर्ड जहां n > 3 खेल स्थान इतना बड़ा हो जाता है कि यह स्पष्ट नहीं है कि आप विज़िट किए गए शीर्षकों को कुशलतापूर्वक कैसे चिह्नित कर सकते हैं। दूसरे शब्दों में यह आकलन करने का कोई स्पष्ट तरीका नहीं है कि बोर्ड की वर्तमान कॉन्फ़िगरेशन किसी ऐसे व्यक्ति के समान है जिसे पहले किसी अन्य पथ के माध्यम से खोजा गया था। एक और समस्या यह है कि ग्राफ का आकार n (यह लगभग (n^2)!) के साथ इतनी तेज़ी से बढ़ता है कि यह केवल ब्रू-फोर्स अटैक के लिए उपयुक्त नहीं है क्योंकि पथों की संख्या ट्रैवर्स के लिए कम्प्यूटेशनल रूप से अक्षम हो जाती है।

इयान पेबेरी A Real-Time Algorithm for the (n^2 − 1) - Puzzle द्वारा यह पेपर एक साधारण लालची एल्गोरिदम का वर्णन करता है जो पहली पंक्ति को पूरा करके समाधान पर आता है, फिर पहला स्तंभ, फिर दूसरी पंक्ति ... यह लगभग तुरंत समाधान पर आता है, हालांकि समाधान इष्टतम से दूर है; अनिवार्य रूप से यह किसी भी कम्प्यूटेशनल मांसपेशियों का लाभ उठाए बिना किसी समस्या के कारण समस्या को हल करता है।

यह समस्या रुबिक के घन को हल करने के लिए निकटता से संबंधित है। सभी गेम का ग्राफ ब्रू फोर्स द्वारा हल करने के लिए बहुत बड़ा है, लेकिन एक साधारण सरल 7 कदम विधि है जिसका उपयोग किसी भी घनत्व को मानव शरीर द्वारा लगभग 1 ~ 2 मिनट में हल करने के लिए किया जा सकता है। यह पथ निश्चित रूप से गैर-इष्टतम है। उन पैटर्न को पहचानना सीखकर जो चाल के अनुक्रमों को परिभाषित करते हैं, गति को 17 seconds पर लाया जा सकता है। हालांकि, जिरी द्वारा यह उपलब्धि कुछ हद तक अतिमानवी है!

विधि पैराबेरी एक समय में केवल एक टाइल चालित करती है; एक कल्पना करता है कि जिरी की निपुणता को नियोजित करके और एक समय में कई टाइल्स को स्थानांतरित करके एल्गोरिदम को बेहतर बनाया जा सकता है। ऐसा नहीं होगा, जैसा कि पार्बेरी साबित होता है, n^3 से पथ की लंबाई को कम करें, लेकिन यह प्रमुख अवधि के गुणांक को कम करेगा।

संबंधित मुद्दे