2008-11-02 13 views
8

मैं एल्गोरिदम की तलाश करने के लिए कहां जाऊंगा जो इनपुट के 2 या ग्रिड को इनपुट के रूप में 0 या 1 लेते हैं और फिर इसमें सभी संभावित गैर-ओवरलैपिंग आयतों को पहचानते हैं?छोटे वर्गों से बने बड़े क्षेत्र में बड़े क्षेत्र में विभाजित क्षेत्र को कैसे विभाजित किया जाए?

एक और अधिक व्यावहारिक व्याख्या: मैं एक ग्रिड है कि वर्गों के एक नंबर का प्रतिनिधित्व करती है ड्राइंग रहा हूँ, और मैं, संभव के रूप में आयतों में के रूप में कई आसन्न वर्गों गठबंधन करने के लिए एक रास्ता खोजने के लिए इच्छा आदेश समय में कटौती करने के लिए प्रत्येक वर्ग के माध्यम से साइकिल चलाने पर और इसे चित्रित करने पर खर्च किया।

अधिकतम दक्षता की आवश्यकता नहीं है, गति अधिक महत्वपूर्ण है।

परिशिष्ट: स्पष्ट रूप से जो मैं खोज रहा हूं वह टेस्सेलेशन नामक तकनीक है। अब मुझे केवल इस विशिष्ट मामले के लिए एक अच्छा विवरण खोजने की जरूरत है।

परिशिष्ट 2: "1" वर्गों की सीमा अनियमित होगी और कुछ मामलों में भी कनेक्ट नहीं है, क्योंकि "1" वर्गों का वितरण पूरी तरह से यादृच्छिक होगा। मुझे इन अनियमित आकारों की पहचान करने और नियमित आयताकारों में विभाजित करने की आवश्यकता है।

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

+0

"अधिकतम क्षमता की जरूरत नहीं है, गति है ज़्यादा ज़रूरी।" - हुह? मुझे लगता है कि आपका मतलब है "मैं पूर्ण आयताकारों की पूर्ण न्यूनतम संख्या नहीं चाहता हूं, केवल कुछ ऐसा जो एक अच्छा अनुमान लगाता है, जल्दी से ..."? –

+0

ओह, और क्या आपने साबित किया है कि प्रत्येक वर्ग के माध्यम से साइकिल चलाना आपकी प्रदर्शन बाधा है? –

+0

अनुमान के संबंध में, हाँ, वह। मैं मूल रूप से सबसे संतुलित समाधान की तलाश कर रहा हूं, जहां तक ​​प्रभावशीलता बनाम गति बढ़ जाती है। इसके अलावा, हाँ, मुझे 100% यकीन है कि साइक्लिंग बाधा के कारण ओपनजीएल की तुलना में बहुत धीमी है। – Mithaldu

उत्तर

1

मैंने ओपनजीएल के साथ 3 डी बॉक्स के त्वरित और गंदे वोक्सेल विज़ुअलाइज़ेशन के लिए कुछ ऐसा किया है।

मैंने शीर्ष बाएं बॉक्स से शुरू किया और खाली/भरे ध्वज को संग्रहीत किया। तब मैंने आयताकार को दाईं ओर विस्तारित करने की कोशिश की जब तक कि मैं एक अलग ध्वज के साथ एक बॉक्स हिट नहीं करता। मैंने नीचे की दिशा में वही किया।

आयत खींचें, अगर यह भरा हुआ है।

xxxx 1111 
xxxx 1111 
xxxx 1111 

2222 3333 
2222 3333 
2222 3333 
+0

यूप, यही वह है जो मैं तब तक करूँगा जब तक कि कोई और बेहतर समाधान न करे। :) – Mithaldu

0

तो आप 'ऑन' वर्गों की आयताकार सीमा की तलाश में हैं?
क्या आप आंतरिक या बाहरी बाध्य चाहते हैं?
यानी। सीमा के पास केवल 'ऑन' वर्ग हैं या क्या आप चाहते हैं कि आयत समूह में सभी 'ऑन' वर्गों को शामिल करे?

+0

परिशिष्ट के रूप में जोड़ा गया स्पष्टीकरण 3. मुझे इसे स्पष्ट करने में मदद करने के लिए धन्यवाद। :) – Mithaldu

1

जैसा कि आप वर्गों की न्यूनतम संख्या की तलाश नहीं कर रहे हैं, मैं एक समझौता का उपयोग करने का सुझाव दूंगा जो अभी भी आपके एल्गोरिदम को सरल रखता है।

आपके डेटा पर सबसे अच्छा समाधान क्या निर्भर करता है, लेकिन एक साधारण विकल्प केवल एक पंक्ति के साथ बक्से एकत्र करना है। अर्थात:

0 0 1 1 1 0 0 0 1 1 1 1 0 

जिसके परिणामस्वरूप:

skip 2 
draw 3 
skip 3 
draw 4 
skip 1 

यह (यानी आप तेज़ी से अपने बक्से का निर्माण कर सकते) कैशिंग के किसी भी आवश्यकता के बिना बॉक्स आकर्षित करने के लिए कॉल की संख्या कम हो जाएगा।

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

+0

हां, यह वही है जो मैं ढूंढ रहा हूं। मैंने पहले से ही इसे 1-आयामी करने के बारे में सोचा था, लेकिन उम्मीद थी कि किसी और ने पहले से ही 2 आयामों में इसे कैसे किया जाए, इस बारे में सोचने में समय बिताया था। – Mithaldu

2

एक अधिक से अधिक खोजने पर this article from Dr Dobb's Portal पर एक नज़र डालें:

अगर वहाँ बक्से शेष रहे हैं, recursivly जो सही, नीचे और नीचे सही कह रहे हैं पिछले आयत से प्रेरित तीनों शेष आयत, के लिए प्रक्रिया को दोहराने आपकी स्थिति में आयताकार। यह बेहद कुशल एल्गोरिदम की एक बहुत ही विस्तृत चर्चा है, और मुझे लगता है कि इसे दोहराने से संभवतः आपकी समस्या का समाधान होगा।

0

मैं एक ऐसी ही समस्या को हल करने के लिए किया था, मेरे एल्गोरिथ्म दांतेदार सरणियों का समर्थन करता है, मैं भारी परीक्षण किया है और यह टिप्पणी की है, लेकिन यह जोएल में जाना के सुझाव की तुलना में धीमी है है https://stackoverflow.com/a/13802336

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