नीचे दिए गए परिशिष्ट k(k−1) शर्तों को स्पष्ट करते हुए:
इसलिए, यदि आप अभिव्यक्ति की शर्तों की जांच करते हैं, तो आप कल्पना कर सकते हैं (जैसा कि सादृश्य है) टर्म सभी बाइनरी स्ट्रिंग्स की गणना है जिसमें 1 की पहली स्थिति में 1 है। दूसरे शब्दों में, हम बाइनरी स्ट्रिंग में प्रत्येक स्थिति का चयन करते हैं कि क्या समस्या में शहरों में से एक सही उपसमुच्चय पर हम विचार कर रहे हैं। तो, 5 शहरों के लिए, 10101 सबसेट {1,3,5} से मेल खाती है।(n−1k)kn
इस प्रकार, {1, ..., } के सभी उप-भागों में गणना करने के लिए , हम बस प्रत्येक बाइनरी सबसेट (यानी बाइनरी स्ट्रिंग्स के माध्यम से) का आकार = 2 (यानी आकार बाइनरी स्ट्रिंग्स की गिनती करते हैं, जिसमें दो 1 होते हैं) की गणना करते हैं, फिर आकार = 3, फिर आकार = 4, ... फिर आकार = एन। (ध्यान दें कि आकार = 1 सबसेट में केवल पहला शहर होना चाहिए, और इस तरह यह अपनी आंशिक दूरी की गणना करने के लिए अप्रासंगिक है, क्योंकि सबसेट में 1 -> अन्य सभी शहरों की दूरी -> 1 बिल्कुल 0. है।)nn
के साथ प्रत्येक सबसेट पर शहरों, हम अप करने के लिए विचार करने के लिए है उम्मीदवार इष्टतम, आंशिक पथ। विशेष रूप से, इष्टतम, कुल पथ दिए गए सबसेट के माध्यम से गर्भधारण कर सकता है और पहले शहर को छोड़कर, के शहरों में से किसी पर समाप्त हो सकता है। फिर, ऐसे प्रत्येक उम्मीदवार उप-पथ के लिए, हम उस बिंदु तक इष्टतम दौरे की गणना करते हैं, जो पिछले, आकार = उप-पथों में से किसी के साथ-साथ उस उप-पथ के लिए टर्मिनल शहर से दूरी से अधिक है। वर्तमान उम्मीदवार उप-पथ के लिए टर्मिनल शहर। यह ऐसी तुलना करता है जो हमें अवश्य करनी चाहिए। मेरे शब्द, और बीच विसंगतिkk−1k−1k−1(k−1)(k−2)(k−1)(k−2)k(k−1)लिंक किए गए विश्लेषण में शब्द एक उल्लेखनीय अंतर है (मैं एक अलग सीमा पर योग करूंगा, मेरी परिभाषा को देखते हुए उन्होंने किया था)। बहुत कम से कम, हालांकि, यह उस शब्द के द्विघात-क्रम जटिलता को चित्रित करना चाहिए।k
कितना दिलचस्प है - मैंने अभी कुछ मिनट पहले C ++ में इस सटीक एल्गोरिथ्म को कोडिंग किया था। (इसलिए शुद्ध सिद्धांत से स्पर्शरेखा को थोड़ा व्यावहारिक चर्चा में क्षमा करें। :))
इसमें समय और स्थान है - कम से कम मेरे कार्यान्वयन के तहत। व्यावहारिक रूप से हालांकि, जब आपकी अंतरिक्ष की आवश्यकताएं तेजी से बढ़ती हैं, तो वे समय की आवश्यकताओं की तुलना में अधिक दर्दनाक हो जाते हैं। उदाहरण के लिए, मेरे पीसी पर (4 जीबी रैम के साथ), मैं 24 शहरों के साथ उदाहरणों को हल कर सकता हूं - इससे अधिक कोई भी, और मैं मेमोरी से बाहर चला जाता हूं।O(2nn2)O(2nn)
बेशक, मैं सिर्फ एक बुरा प्रोग्रामर हो सकता हूं, और आप अभ्यास में मुझसे बेहतर कर सकते हैं। :)
संपादित करें: आपके प्रश्न के एक विवरण पर थोड़ा और विवरण: शब्द इस तथ्य से आता है कि आपको सबसे खराब स्थिति में, पिछले सबसेट से आंशिक, इष्टतम दूरी की गणना करें (वहां पर सबसे अधिक हैं) उनमें से ; ध्यान दें कि वर्तमान में आपके द्वारा जुड़े विश्लेषण में पर अभिव्यक्त किया गया है )। इसकी आवश्यकता होती है, फिर से सबसे खराब स्थिति में, तुलना कुल लिए आकार सबसेट के साथ की जाती है ।k(k−1)nknO(k)k−1O(k2)
इसके अलावा, अगर मेरी व्याख्या पर्याप्त नहीं थी, तो यहां वज़ीरानी ( पीडीएफ ) के कुछ अच्छे व्याख्यान नोट हैं । टीएसपी की चर्चा के लिए पी। 188 तक स्क्रॉल करें, जिसमें हेल्ड-कार्प का विश्लेषण भी शामिल है।