डिज्स्कट्र्स के एल्गोरिदम ने ट्रैवलिंग सेल्समैन समस्या पर लागू किया


13

मैं एक नौसिखिया (कम्प्यूटेशनल जटिलता सिद्धांत के लिए कुल नौसिखिया) और मेरे पास एक सवाल है।

चलिए बताते हैं कि हमारे पास 'ट्रैवलिंग सेल्समैन प्रॉब्लम' है, क्या दीजकस्ट्रा के एल्गोरिदम के निम्नलिखित एप्लिकेशन इसे हल करेंगे?

एक शुरुआती बिंदु से हम दो बिंदुओं के बीच सबसे छोटी दूरी की गणना करते हैं। हम बिंदु पर जाते हैं। हम स्रोत बिंदु को हटाते हैं। फिर हम वर्तमान बिंदु से अगले सबसे छोटी दूरी बिंदु और इतने पर गणना करते हैं ...

जब हम अगले उपलब्ध सबसे कम दूरी के बिंदु को आगे बढ़ाते हैं तो हर कदम हम ग्राफ को छोटा कर देते हैं। जब तक हम सभी बिंदुओं पर नहीं जाते।

क्या इससे ट्रैवल सेल्समैन की समस्या हल हो जाएगी।


3
ध्यान दें कि टीएसपी एनपी-पूर्ण है और डिक्स्ट्रा के एल्गोरिथ्म में बहुपद रनटाइम है। आप जो प्रस्ताव देते हैं वह पी = एनपी के अगले-तुच्छ समाधान होगा? प्रश्न, इसलिए यह संभावना नहीं है कि आपका दृष्टिकोण काम करता है। इस तरह का तर्क केवल एक विधर्मी है, मन!
राफेल

जवाबों:


24

दिज्क्स्ट्रा का एल्गोरिथ्म एक छोटा रास्ता पेड़ देता है, जिसमें एक शुरुआती शीर्ष से दूसरे शिखर तक का सबसे छोटा रास्ता होता है, लेकिन जरूरी नहीं कि दूसरे कोने के बीच का सबसे छोटा रास्ता, या सबसे छोटा रास्ता जो सभी कोने तक जाता हो।

यहां एक काउंटर उदाहरण है जहां आपके द्वारा वर्णित लालची एल्गोरिथ्म काम नहीं करेगा:

जवाबी उदाहरण

से शुरू , लालची एल्गोरिथ्म मार्ग का चयन करेंगे , लेकिन सबसे छोटा मार्ग शुरू करने और में समाप्त है । चूंकि टीएसपी मार्ग को लंबवत दोहराने की अनुमति नहीं है, एक बार लालची एल्गोरिथ्म , इसे सबसे लंबे किनारे लेने के लिए मजबूर किया जाता है, प्रारंभिक शहर में वापस जाने के लिए।[ एक , , , , एक ] एक [ एक , , , , एक ] एक , , , , एक[,,सी,,][,,,सी,],,सी,,


8

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

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

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

तथ्य की बात के रूप में, मुझे यह बता देना चाहिए कि चूंकि इस दृष्टिकोण का सुझाव दिया गया था कि इस समस्या के इष्टतम सीमा को प्राप्त करने के लिए इस क्षेत्र में बहुत प्रगति नहीं हुई है, इसलिए मैं इसे दहनशील खोज के क्षेत्र में एक गर्म प्रश्न मानता हूं।

उम्मीद है की यह मदद करेगा,


2

मुझे नहीं पता कि यहां किसी ने भी यह नहीं देखा कि दिज्क्स्ट्रा के एल्गोरिथ्म का अनुप्रयोग इस मामले में पूरी तरह से अनावश्यक होगा? आप इस लालची एल्गोरिथ्म को केवल निकटतम नोड का चयन करके कार्यान्वित कर सकते हैं, जिसे एप्रीओरी कहा जाता है। डिक्स्ट्रा का एल्गोरिथ्म रास्तों की खोज के लिए उपयोग किया जाता है, लेकिन आप केवल हर बार एक ही कदम उठा रहे हैं। यह स्पष्ट रूप से टीएसपी के लिए इष्टतम समाधान नहीं ढूंढता है, लेकिन कई बहुत अच्छे दृष्टिकोण इसे भी नहीं पाते हैं। टीएसपी के लिए सभी इष्टतम समाधान खोजक बहुत कम्प्यूटेशनल रूप से मांग कर रहे हैं।


1

जवाब नहीं है, कि टीएसपी समस्या को हल करने का एक अच्छा तरीका नहीं है। एक अच्छा काउंटर उदाहरण है, जहां सभी बिंदु एक पंक्ति में हैं, जैसे निम्नलिखित:

--5 ------------------ 3 ----- 1--0 --- 2 ---------- 4

डिज्स्कट्रेट के एल्गोरिदम का उपयोग करते हुए, खराब सेल्समैन को बिंदु 0 पर शुरू किया जाएगा, पहले 1 से 2 फिर 2 से 3 एक्ट। जो इष्टतम नहीं है।

उम्मीद है की वो मदद करदे। स्टीवन एस। स्कीना उत्कृष्ट पुस्तक में पहले अध्याय पर एक नज़र डालें, जिसे "द अल्गोरिथम डिज़ाइन" कहा जाता है, इस उदाहरण को और विस्तार से बताता है।

टीएसपी समस्या दो बिंदुओं के बीच सबसे छोटा रास्ता नहीं ढूंढ रही है, लेकिन उन सभी बिंदुओं के बीच एक मार्ग बना रही है जो इष्टतम हैं। जब आपके पास इष्टतम मार्ग है, तो आप मार्ग में प्रत्येक बिंदुओं के बीच सबसे छोटा रास्ता खोजने के लिए डायजेस्क्राट का उपयोग कर सकते हैं।


2
दिज्क्स्त्र एक एकल स्रोत सबसे छोटा पथ एल्गोरिथम है, लेकिन यह सेल्समैन को 0 पर शुरू नहीं करेगा, और न ही यह एक मार्ग लौटाएगा। यह सिर्फ सबसे छोटा रास्ता पेड़ देता है, जिसमें दिए गए स्रोत शीर्ष से प्रत्येक शीर्ष पर सबसे छोटा रास्ता होता है।
जो

परंपरागत रूप से, TSP समस्या [ en.wikipedia.org/wiki/… ] "शहरों और उनकी जोड़ीदार दूरियों की एक सूची को देखते हुए, कार्य सबसे कम संभव मार्ग को खोजने के लिए है जो प्रत्येक शहर में एक बार ठीक से जाता है और मूल शहर में लौटता है। " तकनीकी रूप से उन आवश्यकताओं को एक पथ पर संतुष्ट करना संभव नहीं है - आपको या तो शुरुआती शहर में नहीं लौटना चाहिए, या शहरों को दोहराना चाहिए।
जो

हालांकि, एक रास्ते पर, अगर हम उन बाधाओं में से किसी में भी आराम करते हैं, तो समस्या तुच्छ है।
जो

निश्चित रूप से, दिक्जस्ट्रा 0. पर सेल्समैन की शुरुआत नहीं करेगा। लेकिन मूल प्रश्न में प्रस्तावित एल्गोरिथ्म ने स्टार्ट वर्टेक्स को निर्दिष्ट नहीं किया; इसलिए, प्रस्तावित एल्गोरिथ्म खराब विक्रेता को 0. पर शुरू करने के लिए मजबूर कर सकता है , इसलिए यह उत्तर सही है।
जेफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.