2009-03-09 17 views
8

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

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

मुझे अनुमान और सटीक समाधान दोनों में दिलचस्पी है।

संपादित करें: हाहा, हाँ, मुझे लगता है कि यह होमवर्क की तरह लगता है। दरअसल, यह नहीं है। मैं एक कार्यक्रम लिख रहा हूं जो बड़ी संख्या में कारों की स्थिति प्राप्त करता है और मैं उन्हें अपने संबंधित पार्किंग कक्षों में मैप करने की कोशिश कर रहा हूं। :)

+0

होमवर्क की तरह बदबू आ रही है। –

+0

कारों को पार्किंग कक्षों में मैप करना?हाहा सही है, अगर आपको कोई मदद चाहिए तो आपको या तो एक पूर्ण/अधिक व्यावहारिक स्पष्टीकरण देना चाहिए या साफ आना चाहिए, "होमवर्क" टैग स्वयं जोड़ें और अब तक जो कुछ भी किया है उसे स्केच करें। – MarkusQ

+2

मुझे खेद है, लेकिन यह होमवर्क नहीं है। अगर मेरे पास सीएस प्रमुख था और मैं एक उपयोगी एल्गोरिदम खुद को समझने में सक्षम था तो मैं SO पर नहीं पूछूंगा। – mafu

उत्तर

1

मेरे सिर के शीर्ष पर, स्थानिक प्रकार अनुकरण एनीलिंग के बाद।

अंतरिक्ष ग्रिड & सेट को स्थानिक कोशिकाओं में सेट करें।

परीक्षण कक्ष प्राप्त करने के लिए प्रत्येक सेल के भीतर ओ (एनएम) समस्या, फिर सेल पड़ोस के भीतर, और इसी तरह हल करें।

अंत में, अनुरूपित एनीलिंग के कई चक्र चलाएं, जिसमें आप यादृच्छिक रूप से मैचों को बदलते हैं, ताकि आस-पास की जगह का पता लग सके।

यह ह्युरिस्टिक है, आपको एक अच्छा जवाब मिल रहा है, हालांकि यह आवश्यक नहीं है, और प्रारंभिक ग्रिड प्रकार के कारण यह काफी कुशल होना चाहिए।

1

हालांकि मेरे पास वास्तव में आपके प्रश्न का उत्तर नहीं है, मैं निम्नलिखित विषयों को देखने का सुझाव दे सकता हूं। (मैं इस बारे में बहुत कम पता है, लेकिन स्टैक ओवरफ़्लो पर पहले से यह का सामना करना पड़ा।)

आशा है कि यह एक बिट में मदद करता है।

3

एक तरह से आप इस समस्या से संपर्क कर सकता है के इलाज के लिए किया जाता है शास्त्रीय काम समस्या के रूप में है: http://en.wikipedia.org/wiki/Assignment_problem

आप ग्राफ के कोने के रूप में अंक का इलाज है, और किनारों के वजन बिंदुओं के बीच दूरी है। क्योंकि सबसे तेजी से एल्गोरिदम मान लें कि आप अधिकतम मिलान (और अपने मामले में कम से कम नहीं) के लिए देख रहे हैं, और वज़न गैर नकारात्मक हैं, आप को फिर से परिभाषित कर सकते हैं वजन जैसे होने के लिए:

weight(A, B) = bigNumber- distance(A,B) 

जहां bigNumber बड़ा है आपकी सबसे लंबी दूरी की तुलना में।

स्पष्ट रूप से आप एक द्विपक्षीय ग्राफ के साथ समाप्त होते हैं। फिर आप अधिकतम भारित द्विपक्षीय मिलान के लिए मानक एल्गोरिदम का उपयोग करते हैं (वेब ​​पर बहुत सारे संसाधन, उदाहरण के लिए http://valis.cs.uiuc.edu/~sariel/teach/courses/473/notes/27_matchings_notes.pdf या अवलोकन के लिए विकिपीडिया: http://en.wikipedia.org/wiki/Perfect_matching#Maximum_bipartite_matchings) इस तरह आप ओ (एनएम अधिकतम (एन, एम)) एल्गोरिदम के साथ समाप्त हो जाएंगे , जहां एन और एम अंक के आपके सेट के आकार हैं।

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