क्या शून्य को बढ़त के भार के रूप में अनुमति दी गई है, भारित ग्राफ में?


60

मैं एक स्क्रिप्ट लिखने की कोशिश कर रहा हूं जो यादृच्छिक रेखांकन उत्पन्न करता है और मुझे यह जानने की जरूरत है कि क्या भारित ग्राफ में एक किनारे का 0 मान हो सकता है।

वास्तव में यह समझ में आता है कि 0 को एक बढ़त के वजन के रूप में इस्तेमाल किया जा सकता है, लेकिन मैं पिछले कुछ दिनों में ग्राफ़ के साथ काम कर रहा हूं और मैंने इसका उदाहरण कभी नहीं देखा है।

यहाँ छवि विवरण दर्ज करें


28
यदि नकारात्मक मान "अनुमत" हैं, तो शून्य क्यों नहीं? :)
डेरेक 會 會 D

5
एक त्वरित उदाहरण के रूप में, यदि सकारात्मक भार एक नोड से दूसरे तक यात्रा करते समय शुद्ध ईंधन की खपत का प्रतिनिधित्व करता है, तो नकारात्मक भार नेट ईंधन भरने का प्रतिनिधित्व कर सकता है। एक शून्य भारित किनारा वह जगह है जहां ईंधन का खर्च ईंधन भरने के द्वारा बिल्कुल भरपाई किया जाता है।
JW

1
@DavidRicherby मेरा मानना ​​है कि असली सवाल यहाँ है, जैसे "एल्गोरिथ्म एक्स सही है वज़न शून्य किनारों की उपस्थिति में"। अन्यथा, संदर्भ क्या है? विवरण के आधार पर इसका उत्तर हां या नहीं हो सकता है। "एक सरणी में एक शून्य हो सकता है" जैसा प्रश्न सार्थक है।
जुहो

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

1
आप जो करना चाहते हैं उसके आधार पर, आपका वजन वास्तविक संख्या भी नहीं हो सकता है। उदाहरण के लिए, यदि आपका ग्राफ एक एसी सर्किट का प्रतिनिधित्व करता है, तो आपका वजन चरणबद्ध हो सकता है, और वे जटिल संख्याएं हैं।
user2357112

जवाबों:


165

किसके द्वारा अनुमति है ? कोई केंद्रीय ग्राफ़ प्रशासन नहीं है जो यह तय करता है कि आप क्या कर सकते हैं और क्या नहीं। आप किसी भी तरह से वस्तुओं को परिभाषित कर सकते हैं जो आपके लिए सुविधाजनक है, जब तक कि आप स्पष्ट नहीं हैं कि परिभाषा क्या है। यदि शून्य-भार वाले किनारे आपके लिए उपयोगी हैं, तो उनका उपयोग करें; बस सुनिश्चित करें कि आपके पाठक जानते हैं कि आप क्या कर रहे हैं।

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


1
यह ध्यान देने योग्य है कि कई ग्राफ़ एल्गोरिदम स्पष्ट रूप से निर्दिष्ट करते हैं कि वे नकारात्मक भार के साथ ग्राफ़ पर काम करते हैं या नहीं। मुझे लगता है कि यह स्पष्ट करता है कि संदर्भों के आधार पर भी नकारात्मक भार की अनुमति है।
मूविंग डक

6
@MooDDuck मुझे लगता है कि सवाल का बिंदु यह है, जबकि एल्गोरिदम वास्तव में अक्सर कहते हैं कि क्या वे नकारात्मक वजन के लिए काम करते हैं या नहीं, शून्य वजन शायद ही कभी उल्लेख किया जाता है। नकारात्मक भार शून्य से बहुत कम असामान्य हैं, इसलिए इस विशेष संदर्भ में, मुझे यकीन नहीं है कि उनका उल्लेख किया जाना चाहिए।
डेविड रिचरबी

13

ये संदर्भ पर निर्भर करता है। सामान्य तौर पर, शून्य के किनारों और यहां तक ​​कि नकारात्मक वजन की अनुमति दी जा सकती है। कुछ विशिष्ट मामलों में किनारे के वज़न को गैर-नकारात्मक या कड़ाई से सकारात्मक होने की आवश्यकता हो सकती है (उदाहरण के लिए, डायजेक्स्ट्रा के एल्गोरिथ्म को वज़न को गैर-ऋणात्मक होना आवश्यक है)।


क्या एक विशिष्ट प्रकार का ग्राफ है जो शून्य को मना करता है? और नकारात्मक या सकारात्मक मूल्यों की अनुमति देता है?
टैक्सेलो

9
"नॉन-जीरो एज वेटेड ग्राफ"।
टॉम वैन डेर ज़ैंडन

10
@Taxellool गणितीय वस्तुएं पत्थर में सेट नहीं हैं। निश्चित नामों वाली गणितीय वस्तुओं की कोई निश्चित सूची नहीं है जो आपके उपयोग की अनुमति है।
डेविड रिचरबी

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

5

अन्य उत्तरों के अनुसार, आप शून्य-भार वाले किनारों के साथ भारित ग्राफ़ पर विचार करने के लिए पूरी तरह से स्वतंत्र हैं (या विचार से बाहर रखा गया है)।

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

विशेष रूप से, एक मल्टीग्राफ एक ग्राफ होता है जो (एक साधारण ग्राफ के विपरीत ) एक ही जोड़ी के नोड्स के बीच कई किनारों की अनुमति देता है। जबकि, एक सरल ग्राफ में, नोड्स की कोई भी जोड़ी हमेशा 0 या 1 किनारों से जुड़ी होती है, मल्टीग्राफ में नोड्स की एक जोड़ी 0, 1, 2, 3 या उससे अधिक से कनेक्ट हो सकती है (लेकिन हमेशा एक गैर-नकारात्मक पूर्णांक संख्या ) किनारों।

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

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


6
भारित रेखांकन "आम तौर पर" बहुत अधिक आपके क्षेत्र पर निर्भर करता है। जब मैं सबसे छोटे रास्तों को खोजने के लिए ग्राफ के रूप में एक रोड नेटवर्क का मॉडल तैयार करता हूं, तो वज़न दूरियों का प्रतिनिधित्व करता है, मैं चौराहों के बीच कई सड़कों से शुरू नहीं करता और फिर भिन्नात्मक सड़कों का परिचय देता हूं।
adrianN

3
@adrianN हालांकि इस तरह के एक ग्राफ में एक किनारे की अनुपस्थिति एक अनंत संबद्ध मूल्य से मेल खाती है और शून्य नहीं है।
कोड इनचैटोस

0

कैंब्रिज यूके में सड़क प्रणाली के एक ग्राफ के बारे में सोचें, नोट साइकिल चालकों और कार चालकों के बीच साझा किए जाते हैं, इसलिए अधिकांश किनारे हैं। ऐसा करने से डेटा को बनाए रखने की लागत कम हो जाती है।

अब अगर हम सेकंड में यात्रा के समय के रूप में किनारे के वजन को परिभाषित करते हैं, तो सफाई से प्रत्येक किनारे में दो वजन होंगे, एक बाइक के लिए कार के लिए। कुछ वज़न अनंत होंगे क्योंकि चक्र के तरीकों पर कारों की अनुमति नहीं है।

अब दो सड़क जंक्शनों पर विचार करें जो एक-दूसरे के बहुत करीब हैं, वे केवल कुछ पोस्टों द्वारा सीरेटेड हैं जो कार चालकों को रोकते हैं। (उदाहरण के लिए एक क्रॉस रोड, जहां कार ड्राइव केवल बाएं मुड़ सकती है, लेकिन साइकिल चालक किसी भी दिशा में जा सकते हैं।) फिर हमें कार चालकों से अनंत भार और साइकिल चालकों के लिए 0 वजन के साथ कुछ किनारे मिलते हैं।

(स्पष्ट रूप से ग्राफ़ को फिर से संसाधित किया जा सकता है, सबसे अच्छा मार्ग बनाने से पहले, साइकिल चालकों के मार्ग के लिए एक सरल ग्राफ़ बनाने के लिए।)


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

@DavidRicherby, बस उस समय को कम मान लें तो 1 सेकंड दर्ज नहीं किया जाता है।
इयान रिंगरोज ने

0

ऐसा लगता है कि आप ग्राफ़ के दो अलग-अलग पहलुओं की कोशिश करने और प्रतिनिधित्व करने के लिए वजन का उपयोग कर रहे हैं। पहला यह है कि क्या वास्तव में ग्राफ में एक प्रतिनिधित्व योग्य (खींचा हुआ) छोर है, और दूसरा यह वास्तविक वजन है।

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

अनिवार्य रूप से आपको किनारे की उपस्थिति का प्रतिनिधित्व करने का एक और तरीका चाहिए होगा (यह मानते हुए कि आपको वास्तव में इसकी आवश्यकता है, और बस वजन का एक एन ^ 2 सरणी नहीं बना सकता है, लेकिन फिर आप यह तय करने की जरूरत के जाल में पड़ जाते हैं कि लूप के बारे में क्या करना है। पीछे के किनारे ...)


मुझे यकीन नहीं है कि यह वास्तव में सवाल का जवाब देता है। सवाल इस बारे में है कि क्या ग्राफ़ में शून्य-वजन वाले किनारे हो सकते हैं; आपका जवाब ज्यादातर इस बारे में है कि कोई कैसे शून्य-भार वाले किनारों के साथ ग्राफ़ के लिए डेटा संरचना को लागू कर सकता है।
डेविड रिचेर्बी

@DavidRicherby, Close; यह (मेरा उत्तर) इस बारे में अधिक था कि प्रश्न क्यों और कैसे आया (या हो सकता है) अस्तित्व में आया - एक XYProplem मुद्दा। अक्सर इस बारे में तर्कसंगत होने में सक्षम होने के कारण कि यह पहली बार में एक मुद्दा था, यह देखने में बहुत मदद कर सकता है कि समाधान सही उत्तर कैसे है और न कि केवल कुछ 'ठगना'
फिलिप ओकले
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.