2010-12-29 13 views
8

मैं गतिशील भूलभुलैया का एक खेल लिख रहा हूं जिसमें हर बार भूलभुलैया की संरचना बदल जाएगी (कुछ दरवाजे बंद हो जाएंगे और कुछ दरवाजे खुल जाएंगे। एचपी 4 में ट्रावाज़ार्ड की तरह कुछ)। क्या कोई मुझे बता सकता है कि इसका प्रतिनिधित्व करने के लिए कौन सी डेटा संरचना सबसे उपयुक्त होगी?डेटा संरचना एक भूलभुलैया का प्रतिनिधित्व करने के लिए

+1

1) आपने किन डेटा संरचनाओं पर विचार किया है? 2) लोगों को कभी भी आपके द्वारा किए गए सभी छोटे संक्षेपों को न मानें। एचपी 4 हैरी पॉटर श्रृंखला 'चौथी किताब के लिए बिल्कुल एक ज्ञात संक्षेप नहीं है। – DVK

उत्तर

11

क्या भूलभुलैया आयताकार ग्रिड होगी? कुछ और?

यह भी इस बात पर निर्भर करता है कि मानचित्र में कितनी उपयोगी जानकारी होगी (पास या ऑब्जेक्ट्स)।

यदि यह एक आयताकार ग्रिड है और अधिकांश ग्रिड वर्गों में कुछ शामिल होगा, तो एक अच्छी डेटा संरचना एक 2 डी सरणी (सरणी सरणी) है, जिसमें 1 पंक्ति का प्रतिनिधित्व करने वाले सरणी के प्रत्येक तत्व के साथ, 1 सेल का प्रतिनिधित्व करने वाले आंतरिक सरणी के प्रत्येक तत्व उस पंक्ति में, जो एक वस्तु है जिसमें उस सेल से संबंधित डेटा होता है (जो पड़ोसी कोशिकाओं को स्थानांतरित किया जा सकता है, सेल में क्या होता है, क्या इसमें कोई चरित्र है)।

हालांकि, अगर भूलभुलैया आयताकार नहीं है, या यदि बड़ी भूलभुलैया में अधिकांश कोशिकाओं में वास्तव में कोई उपयोगी नहीं होता है (जैसे गैर-पास करने योग्य ब्लॉक), तो एक अच्छी डेटा संरचना एक ग्राफ है।

ग्राफ़ का प्रत्येक वर्टेक्स एक सेल है जो पारगम्य है। किनारों से कोशिकाओं के जोड़े का प्रतिनिधित्व होता है जिन्हें आप स्थानांतरित कर सकते हैं (यदि आप केवल कुछ दरवाजे एक तरफ हैं तो आप इसे एक निर्देशित ग्राफ बना सकते हैं)। प्रत्येक vertex/सेल एक वस्तु है जिसमें उस सेल पर जानकारी होती है (उदाहरण के लिए भौतिक भूलभुलैया में इसका स्थान, आदि ...)।

सरणी-ऑफ-एरे संरचना लाभ यह है कि इसे आकर्षित करना बहुत आसान है, और प्रक्रिया के लिए काफी सीधे आगे बढ़ना (कोई भी चाल केवल इंडेक्स में/डी-क्रिएशन है)। दीवारों को जोड़ना/निकालना उतना ही आसान है जितना 2 पड़ोसी कोशिकाओं के सरणी तत्वों में डेटा बदलना।

ग्राफ़ संरचना लाभ यह है कि अगर भूलभुलैया पास बहुत दुर्लभ होती है तो यह बहुत कम जगह लेती है (उदाहरण के लिए फ़ील्ड का केवल 1/100 वां पास होता है); यह एकमात्र संरचना है जो यादृच्छिक (उदा। गैर-आयताकार-ग्रिड) ज्यामिति का प्रतिनिधित्व कर सकती है, और प्रसंस्करण काफी सरल है। दीवारों को जोड़ना/निकालना आसान है क्योंकि यह सिर्फ ग्राफ में किनारे जोड़ रहा है।

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