एक "बड़ा क्षेत्र" जो pacman और भूत पर के बारे में स्वतंत्र रूप से स्थानांतरित कर सकते हैं - - तुम सिर्फ पिक्सल के एक ग्रिड है तो कम से कम पथ आसान है - भूत और pacman के बीच एक सीधी रेखा।
लेकिन "कम से कम पथ" निरपवाद रूप से मतलब है कि हम एक ग्राफ सिद्धांत समस्या को हल करने की कोशिश कर रहे हैं। (मैं आदि रेखांकन के ज्ञान, कुछ ग्राफ सिद्धांत, adj संभालने हूँ। मेट्रिसेस,!)
उपरोक्त मामले में, एक ग्राफ पर एक नोड होने के लिए प्रत्येक पिक्सेल पर विचार करें। प्रत्येक नोड एक किनारे से अपने पड़ोसियों से जुड़ा है, और प्रत्येक किनारे बराबर "वजन" है ( "ऊपर" पर नोड के लिए आगे बढ़ नहीं नोड "नीचे" में जाने की तुलना में धीमी है)।
तो आप इस है: ( "*" = नोड "-, /, \, |" = धार)
*-*-*
|\|/|
*-*-* ... (etc)
|/|\|
*-*-*
अगर Pacman केंद्र में है, यह बहुत आसानी से किसी भी अन्य नोड के लिए स्थानांतरित कर सकते हैं।
कुछ वास्तविकता के अधिक करीब इस हो सकता है:
*-*-*
| | |
*-*-* ... (etc)
| | |
*-*-*
अब, pacman तिरछे स्थानांतरित नहीं कर सकते। निचले-दाएं कोने के केंद्र से जाने के लिए 2 "हॉप्स" के बजाय एक आवश्यकता है।
प्रगति जारी रखने के लिए:
*-*-*-*
| | | |
| | | |
| | | |
*-*-*-*
| | | |
*-*-*-*
अब, शीर्ष पर एक नोड के लिए बीच में एक नोड से जाने के लिए, आप 3 हॉप्स की जरूरत है। हालांकि, ले जाने के लिए की ओर नीचे केवल 1 हॉप लेता है।
यह एक ग्राफ में किसी भी खेल बोर्ड सेटअप अनुवाद करने के लिए आसान होगा। प्रत्येक "चौराहे" एक नोड है। दो चौराहों के बीच पथ बढ़त है, और उस पथ की लंबाई है कि बढ़त का वजन है।
प्रवेश करें*। एक ग्राफ (एक adjency मैट्रिक्स या नोड्स की एक सूची का उपयोग करें) का निर्माण करके, आप कम से कम पथ को खोजने के लिए एक * एल्गोरिथ्म का उपयोग कर सकते हैं। अन्य एल्गोरिदम डिज्कस्ट्रा के शामिल हैं। और बहुत सारे! लेकिन पहले आप कैसे आप बी (भूत) नोड के लिए नोड ए (pacman) से जाना चाहते हैं के साथ एक ग्राफ है, और फिर खिलौना के मामले में आपकी समस्या को फ्रेम करने के लिए की जरूरत है।
उम्मीद है की वो मदद करदे!