2011-05-24 10 views
5

यह व्यावहारिक प्रश्न के बजाय एक अकादमिक है। ट्रैवलिंग सेल्समैन प्रॉब्लम में, या किसी भी अन्य जिसमें न्यूनतम अनुकूलन ढूंढना शामिल है ... यदि कोई नक्शा/कम दृष्टिकोण का उपयोग कर रहा था, ऐसा लगता है कि वर्तमान न्यूनतम परिणाम के लिए कुछ साधनों को प्रसारित करने के लिए कुछ साधन होने का कुछ मूल्य होगा कम्प्यूटेशनल नोड्स किसी तरीके से जो उन्हें उस से अधिक गणनाओं को त्यागने की अनुमति देता है।यात्रा विक्रेता और मानचित्र/घटाएं: एबंडन चैनल

दूसरे शब्दों में यदि हम समस्या को मानचित्रित करते हैं तो हम प्रत्येक नोड को यह जानना चाहते हैं कि किसी पूर्ण आंशिक परिणाम को पूरा होने से पहले कब छोड़ना है, लेकिन जब यह पहले से ही किसी अन्य समाधान से अधिक हो गया है।

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

एक और दृष्टिकोण जो दिमाग में आता है, नोड्स को किसी प्रकार के चैनल, या मल्टीकास्ट या यहां तक ​​कि प्रसारित करने के लिए सक्रिय रूप से सब्सक्राइब किया जाएगा, जिससे वे अपने कम्प्यूटेशनल लूप से नए minimums को प्राप्त कर सकते हैं। उस मामले में वे बेहतर समाधान (उनके साथियों में से एक द्वारा) के अधिसूचित होने पर तुरंत खराब गणना को त्याग सकते हैं।

तो, मेरे सवाल कर रहे हैं:

  • इस अवधारणा को मौजूदा नक्शे के संबंध में कला के किसी भी शर्तों के अंतर्गत आती है/चर्चाओं
  • वर्तमान नक्शे से कुछ भी करें को कम/कम करने चौखटे सुविधाओं को इस का समर्थन करने के प्रदान करते हैं गतिशील प्रतिक्रिया की तरह?
  • क्या इस विचार के साथ कुछ दोष है ... कुछ कारण यह बेवकूफ है?

उत्तर

3

यह एक अच्छी थीम है, जिसमें उस साहित्य में इतना साहित्य नहीं है, जो पहले किया गया था। (जर्मन विकिपीडिया से इसे ले लिया)

:)

इसलिए हर TSP एक ग्राफ के रूप में व्यक्त किया जा सकता है, कि इस तरह संभवतः लग रहा है, तो यह काफी एक बुद्धिशीलता के बाद, बल्कि अपने सभी समस्याओं का उत्तर की तुलना में है

TSP graph

अब आप इस पर ग्राफ एल्गोरिदम चला सकते हैं। MapReduce का उपयोग ग्राफ प्रसंस्करण के लिए बहुत अच्छी तरह से किया जा सकता है, हालांकि इसमें बहुत अधिक उपर है।
आपको एक प्रतिमान की आवश्यकता है जिसे "संदेश पासिंग" कहा जाता है। इस पेपर में यहां वर्णित किया गया था: Paper
और मैंने ग्राफ अन्वेषण के संदर्भ में इसके बारे में ब्लॉग किया, यह काफी सरल बताता है कि यह कैसे काम करता है। My Blogpost

इस तरह से आप मैपर को कैसे बता सकते हैं कि वर्तमान न्यूनतम परिणाम क्या है (शायद केवल कशेरुक के लिए)।

दिमाग के पीछे सभी ज्ञान के साथ, लक्ष्य प्राप्त करने के लिए branch and bound एल्गोरिदम (जिसे आपने वर्णित किया) के बारे में सोचने के लिए यह बहुत मानक होना चाहिए। एक यादृच्छिक प्रारंभ vertex होने और हर आसन्न vertex के लिए शाखा की तरह। इससे प्रारंभिक वर्टेक्स (मानचित्र चरण) से प्राप्त होने वाली लागत के साथ इस आस-पास के प्रत्येक संदेश को संदेश भेजा जा सकता है। वर्टेक्स स्वयं ही इसकी लागत को अपडेट करता है यदि यह वर्तमान में संग्रहीत लागत (चरण कम करें) से कम है। प्रारंभ में यह अनंतता पर सेट किया जाना चाहिए।
आप इसे बार-बार कर रहे हैं जब तक कि आप फिर से शुरू कशेरुक तक नहीं पहुंच जाते (जाहिर है कि आप हर दूसरे के दौरे के बाद)। तो आपको किसी भी तरह से कशेरुक तक पहुंचने के लिए वर्तमान में सबसे अच्छा तरीका ट्रैक करना होगा, इसे कशेरुक में भी संग्रहीत किया जा सकता है। और हर अब और फिर आपको इस शाखा को बांधना होगा और शाखाओं को काटना होगा जो बहुत महंगा हैं, यह संदेशों को पढ़ने के बाद चरण को कम करने में किया जा सकता है। असल में यह MapReduce में ग्राफ एल्गोरिदम का एक मिश्रण है और एक प्रकार का सबसे छोटा रास्ता है।
ध्यान दें कि यह नोड्स के बीच इष्टतम तरीके से नहीं मिलेगा, यह अभी भी एक उदारवादी बात है। और आप सिर्फ एनपी-हार्ड समस्या को लंबित कर रहे हैं।

लेकिन एक छोटे से आत्म विज्ञापन फिर से, शायद आप यह पहले से ही ब्लॉग पोस्ट मैं लिंक करने के बाद में पढ़ा है, वहाँ MapReduce के लिए एक अमूर्त, ग्राफ प्रसंस्करण के इस प्रकार में जिस तरह से कम भूमि के ऊपर है कि मौजूद है। इसे BSP (Bulk synchonous parallel) कहा जाता है। यह संचार में और अधिक कंप्यूटिंग मॉडल में स्वतंत्र रूप से है। तो मुझे यकीन है कि यह MapReduce की तुलना में बसपा के साथ बहुत बेहतर कार्यान्वित किया जा सकता है। आप इन चैनलों को महसूस कर सकते हैं जिनके बारे में आपने बेहतर बात की है।

मैं वर्तमान कोड परियोजना जो बसपा के साथ इन एसएसएसपी समस्याओं को लक्षित करता है के एक ग्रीष्मकालीन में शामिल कर रहा हूँ। शायद आप visit if you're interested चाहते हैं। यह तब एक भाग समाधान हो सकता है, यह भी मेरे ब्लॉग में बहुत अच्छी तरह से वर्णित है। SSSP's in my blog

मैं कुछ प्रतिक्रिया सुनने के लिए उत्साहित कर रहा हूँ;)

1

ऐसा लगता है Storm लागू करता है कि मैं क्या करने की सोच रहा था। यह अनिवार्य रूप से एक कम्प्यूटेशनल टोपोलॉजी है (इस बारे में सोचें कि प्रत्येक गणना नोड विशिष्ट रेड्यूसर को कुंजी/हैशिंग फ़ंक्शन के आधार पर रूटिंग परिणाम कैसे हो सकता है)।

यह वही नहीं है जो मैंने वर्णित किया है, लेकिन यदि उपयोगी हो तो वर्तमान में बाध्यता (यानी स्थानीय इष्टतम जानकारी) को प्रसारित करने के लिए पर्याप्त कम विलंबता वाला तरीका हो सकता है, जो कि टोपोलॉजी में प्रत्येक नोड अपडेट/प्राप्त करने के लिए प्राप्त हो सकता है त्यागने के परिणाम।