2013-12-13 14 views
5

मैं edx.org पर जनता के लिए उपलब्ध सीएस 188 के माध्यम से जा रहा हूं। अभी मैं एक एक * सभी छर्रों खाने के लिए खोज के लिए एक अनुमानी विकसित करने के लिए जैसा कि यहाँ दिखाया है: Pacmanए * एल्गोरिदम स्वीकार्य के लिए मेरा उत्तराधिकारी क्यों नहीं है?

मेरे अनुमानी है कि मैं काम करेगा यकीन है, (दोनों स्वीकार्य और लगातार के रूप में) था इस तरह से चला गया:

  • अनुमानी संचायक ज बुलाया प्रारंभ 0
  • स्थिति को प्रारंभ pacman
  • की वर्तमान स्थिति होने के लिए, जबकि छर्रों नहीं खाया हो:
    • astar खोज का उपयोग कर (अनुमानी के रूप में मैनहट्टन दूरी) स्थिति से निकटतम गोली मिल
    • के लिए दूरी जोड़ने
    • सेट स्थिति छर्रों से गोली को निकालने गोली
की स्थिति होने के लिए

मैं पहले की गणना की दूरी को भी कैश करता हूं, इसलिए निकटतम गोली खोजने के लिए अस्थिर खोज तब नहीं की जाती है जब यह पहले से ही किसी राज्य की गणना में पहले किया जा चुका है। यह समस्या को बहुत जल्दी हल करने में सक्षम है, और परिणाम इष्टतम है।

जब मैं ऑटोग्रेडर में इस एल्गोरिदम का उपयोग करता हूं, तो यह स्वीकार्यता परीक्षण में विफल रहता है।

चिंता न करें, मैं समस्या का समाधान नहीं मांग रहा हूं, केवल मेरा वर्तमान समाधान स्वीकार्य क्यों नहीं है? जब मैं अपने सिर में तस्वीर में उदाहरण के माध्यम से जाता हूं तो ह्युरिस्टिक कभी भी लागत को अधिक महत्व नहीं देता है।

तो अगर कोई इसे समझने में सक्षम था, और आपके विचारों की बहुत सराहना की गई है तो कोई विचार है!

+0

बस यह सुनिश्चित करना - क्या आपकी दूरी की कार्य दीवारों के लिए सही ढंग से लेखांकन है? – Leeor

+4

** पूरी बात नहीं है ** केवल निकटतम गोली पाने के बजाय, ए-स्टार खोज होने का मतलब है? – Dukeling

+0

@ डकलिंग पूरी खोज ए * कैसे हो सकती है? खोज के लिए कोई एकल लक्ष्य नहीं है। @Zach: क्या आप समस्या या प्रश्न के सटीक विवरण को पोस्ट या लिंक कर सकते हैं? मैनहट्टन दूरी निश्चित रूप से स्वीकार्य होना चाहिए; हो सकता है कि आपके कोड में एक-एक-एक त्रुटि हो, तो ह्यूरिस्टिक वास्तविक लागत से अधिक है जब रास्ते में कोई बाधा नहीं है? –

उत्तर

11

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

आपका लालची हेरिस्टिक पहले जो भी गोली पीएसी-मैन के नजदीक है, वह संभवतः सबसे छोटी दूरी की तरफ नहीं हो सकता है, इसलिए इस मामले में यह इष्टतम लागत से अधिक लागत नहीं लौटा सकता है - यह लौटाता है एक संभावित समाधान की लागत जो इष्टतम नहीं हो सकती है।

+0

इसके लिए धन्यवाद। जिस उदाहरण का मैं उपयोग कर रहा था, वह मुझे समझने में मदद नहीं करता था कि यह स्वीकार्य नहीं था। यह सही समझ में आता है! – Zach

1

हेरिस्टिक स्थापित करने का तरीका यहां है जो आपकी समस्या के लिए व्यवहार्य है। सबसे पहले यदि आपका लक्ष्य न्यूनतम छत में सभी छर्रों को खाना है तो आपका समाधान इसके लिए एक व्यवहार्य समाधान प्राप्त करने के लिए बहुत लालची है। यहां आपके हेरिस्टिक को फिर से डिजाइन करने का तरीका है: -

लक्ष्य: न्यूनतम पथ लंबाई में सभी छर्रों को खाएं।

अनुमानी अनुमान:

1.> स्वतंत्र रूप से छर्रों को वर्तमान स्थिति से सभी कम से कम पथ की गणना करने के एक * का प्रयोग करें।

2।> लागत समारोह: (सभी अनवरोधित छर्रों का योग वर्तमान से सबसे छोटा रास्ता) * 2 + प्रारंभ स्थिति से कुल दूरी।

लागत कार्य ऊपरी सीमा है।

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

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