टीएसपी के लिए बेलमैन-हेल्ड-कार्प एल्गोरिथ्म की समय जटिलता, 2 लें


16

हाल ही में एक प्रश्न ने टीएसपी के लिए बेल्लमान और हेल्ड-कार्प के कारण स्वतंत्र रूप से शास्त्रीय प्रोग्रामिंग प्रोग्रामिंग एल्गोरिदम पर चर्चा की । एल्गोरिथ्म है सार्वभौमिक में चलाने के लिए सूचना दी O(2nn2) समय। हालाँकि, जैसा कि मेरे छात्रों में से एक ने हाल ही में कहा था, इस दौड़ने के समय को गणना के अनुचित तरीके से शक्तिशाली मॉडल की आवश्यकता हो सकती है।

यहाँ एल्गोरिथ्म का संक्षिप्त विवरण दिया गया है। इनपुट में एक सीधा ग्राफ G=(V,E) जिसमें वर्टिस और एक गैर-नकारात्मक लंबाई फ़ंक्शन । किसी भी कोने के लिए और , और किसी भी सबसेट: आर + रों टीn:ER+stX कोने कि शामिल नहीं कीs औरt , चलोL(s,X,t) से कम से कम Hamiltonian पथ की लंबाई को निरूपितs कोt प्रेरित subgraph मेंG[X{s,t}] । बेलमैन-हेल्ड-कार्प एल्गोरिथ्म निम्नलिखित पुनरावृत्ति पर आधारित है (या अर्थशास्त्री और नियंत्रण सिद्धांतकार इसे कॉल करना पसंद करते हैं, "बेलमैन का समीकरण"):

L(s,X,t)={(s,t)if X=minvX (L(s,X{v},v)+(v,t))otherwise

किसी शीर्ष के लिए , इष्टतम विक्रेता दौरे यात्रा की लंबाई है । क्योंकि पहला पैरामीटर सभी पुनरावर्ती कॉलों में स्थिर है, इसलिए अलग-अलग उपप्रोब्लेम्स में , और प्रत्येक उपप्रकार सबसे अन्य पर निर्भर करता है। इस प्रकार, गतिशील प्रोग्रामिंग एल्गोरिथ्म समय में चलता है ।एल ( रों , वी { रों } , एस ) रों Θ ( 2 n n ) n हे ( 2 n n 2 )sL(s,V{s},s)sΘ(2nn)nO(2nn2)

या करता है ?!

मानक पूर्णांक रैम मॉडल बिट्स के साथ पूर्णांकों के निरंतर-समय में हेरफेर की अनुमति देता है , लेकिन कम से कम अंकगणितीय और तार्किक संचालन के लिए, बड़े पूर्णांकों को शब्द-आकार के विखंडू में तोड़ा जाना चाहिए। (अन्यथा, अजीब चीजें हो सकती हैं।) क्या यह लंबे समय तक मेमोरी एड्रेस तक पहुंच का सच नहीं है? यदि एक एल्गोरिथ्म सुपरपोलीनोमियल स्पेस का उपयोग करता है, तो क्या यह मान लेना उचित है कि मेमोरी एक्सेस केवल निरंतर समय की आवश्यकता है?O(logn)

Bellman-हेल्ड-कार्प विशेष रूप से एल्गोरिथ्म के लिए, एल्गोरिथ्म सबसेट का वर्णन बदलना होगा सबसेट का वर्णन में एक्स { v } , प्रत्येक के लिए वी , उपयोग करने के लिए Memoization तालिका। यदि सबसेट को पूर्णांक द्वारा दर्शाया जाता है, तो इन पूर्णांकों को n बिट्स की आवश्यकता होती है और इसलिए इसे निरंतर समय में हेरफेर नहीं किया जा सकता है; यदि वे पूर्णांक द्वारा प्रतिनिधित्व नहीं करते हैं, तो उनका प्रतिनिधित्व सीधे संस्मरण तालिका में एक सूचकांक के रूप में उपयोग नहीं किया जा सकता है।Xएक्स{v}vn

तो: बेलमैन-हेल्ड-कार्प एल्गोरिथ्म का वास्तविक विषम समय क्या है?


आपकी "अजीब बातें" लिंक टूट गई है।
टायसन विलियम्स

मैंने लिंक ठीक कर दिया।
जेफ

जवाबों:


12

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

बेशक, अगर एस आपके पास वास्तव में स्मृति की मात्रा से अधिक है, तो आपका एल्गोरिथ्म बिल्कुल भी नहीं चलेगा। या, यह सूचना को मेमोरी में और उसके बाहर पेजिंग करके चलेगा और आपको रैम मॉडल के बजाय मेमोरी पदानुक्रम मॉडल का उपयोग करना चाहिए।


मैं इस विचार के लिए उपयोग किया जाता हूं कि मशीन मॉडल को इनपुट आकार पर निर्भर होना चाहिए , लेकिन मशीन मॉडल को एल्गोरिथ्म पर निर्भर रहने देने के बारे में थोड़ी बहुत चिंता है। क्या आप वास्तव में अपनी मशीन को PSPACE में किसी भी समस्या को निरंतर समय में हल करने देना चाहते हैं, जब तक आप पहले से ही घातीय स्थान का उपयोग कर रहे हैं? n
जेफ

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

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

8

फेडर वी। फोमिन और डाइटर्स क्रैट्स द्वारा हालिया पुस्तक में इस मुद्दे की चर्चा है " सटीक एक्सपोनेंशियल एल्गोरिदम " जहां वे यूनिट-कॉस्ट रैम मॉडल और लॉग-कॉस्ट रैम मॉडल ( - अधिकतम दूरी) में चलने का समय निर्दिष्ट करते हैं। शहरों और के बीच ( एन ) = हे * ( जी ( एन ) ) यदि ( एन ) = हे ( जी ( एन ) पी एल y ( एन ) ) ):डब्ल्यू(n)=हे*(जी(n))(n)=हे(जी(n)पीएलy(n))

और 2 n लॉग ऑनडब्ल्यू एन हे ( 1 ) (ध्यान दें, 2 n लॉग ऑनडब्ल्यू एन हे ( 1 ) हे * ( 2 n )) क्रमशः।हे*(2n)2nलॉगडब्ल्यूnहे(1)2nलॉगडब्ल्यूnहे(1)हे*(2n)


1
इसलिए वे बहुपद कारक को छिपाकर इस मुद्दे को चकमा देते हैं। मैं जानना चाहता हूं कि बहुपद कारक क्या है!
जेफ

3
वे मानते हैं कि बहुपद कारक (मेरी टिप्पणी में लिंक देखें)। n2
ऑलेक्ज़ेंडर बॉन्डारेंको 15
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.