मैं बेतरतीब ढंग से बंधे हुए ऊंचाई वाले पेड़ों को कैसे उत्पन्न कर सकता हूं?


9

जिस परियोजना पर मैं काम कर रहा हूं, उसके लिए मुझे यादृच्छिक ऊंचाई वाले पेड़ों को बांधना चाहिए।

मूल रूप से मैं निम्नलिखित कार्य करता हूं: 1) एक फैले हुए पेड़ को उत्पन्न करता है 2) व्यवहार्यता की जांच करें, यदि संभव हो तो इसे रखें।

1) एक न्यूनतम फैले हुए पेड़ से शुरू (प्राइम या क्रुस्ल) मैं एक गैर-मौजूदा किनारे जोड़ता हूं और यह एक चक्र बनाता है, मैं इस चक्र का पता लगाता हूं और इस चक्र के किनारों में से एक को हटा देता हूं जो मुझे एक नया फैले हुए पेड़ देता है और मैं इसके साथ जारी रखता हूं एक नई धार जोड़कर इस फैले हुए पेड़ ...

2) मान लीजिए कि एक विशेष शीर्ष है vcenter। हर वार के लिएvसे पथ की लंबाई v सेवा Vcenter तब कम होना चाहिए δ, कहाँ पे δ दिया गया पैरामीटर है।

क्या ऐसा करने का कोई बेहतर (चालाक) तरीका है?

पीएस मैं अन्य बाधा (मेरी गलती) निर्दिष्ट करना भूल गया: कोने की डिग्री भी बाध्य होनी चाहिए।


मुझे यकीन नहीं है कि मुझे यह अधिकार मिलेगा। पहले चरण में, क्या आप किनारे को केवल यादृच्छिक रूप से हटाते हैं या ताकि पेड़ की ऊंचाई कम हो जाए (संभवतः)?
सच्चा

मैं बेतरतीब ढंग से किनारों को जोड़ता हूं और हटाता हूं।
अरमान

क्या आप इसके बजाय पेड़ों पर फैले यादृच्छिक सबसे छोटे रास्ते का नमूना ले सकते हैं ? यह चीजों को सरल
बनाता है

क्या किनारों पर आपकी कोई कीमत है? क्या आप ऊंचाई वाले एक विशाल वृक्ष की तलाश कर रहे हैंδऔर न्यूनतम लागत? जैसा कि @pboothe ने लिखा है, आप BFS का उपयोग कर सकते हैं और यह बात है। एकमात्र समस्या यह है कि BFS बहुत अधिक मेमोरी का उपयोग करता है। यदि आप लागतों के बारे में परवाह करते हैं, तो आप यूक्लिडियन न्यूनतम फैले हुए पेड़ों के लिए विकिपीडिया में एल्गोरिदम की कोशिश कर सकते हैं ( en.wikipedia.org/wiki/Euclidean_minimum_spanning_tree )। इसका समय चल रहा हैO(nlogn) साथ में O(n)जगह का।
मार्कोस विलग्रा

तो आपकी समस्या में तीन बंधी हुई मात्राएँ हैं: पेड़ की ऊँचाई, प्रत्येक शिखर की डिग्री और v_center से दूरी, क्या यह सही है? बस बंधी हुई डिग्री बाधा ही समस्या को एनपी-कठिन बनाती है, लेकिन मुझे लगता है कि आप एक ऐसी विधि की तलाश कर रहे हैं जो संभवत: एक समाधान का उत्पादन करने की संभावना है और एक सटीक एल्गोरिदम नहीं है।
जगदीश

जवाबों:


7

मैं कुछ साल पहले पेड़ों पर फैले बाउंड-डेप पर काम कर रहा था, वे वास्तव में दिलचस्प हैं। मेरे कुछ सहकर्मी मैसेज पास करने वाले एल्गोरिदम के साथ आए, जिन्होंने बहुत अच्छा काम किया, लेकिन मुझे उनका कोई भी कोड उपलब्ध नहीं है। हमने इसे यहाँ एक भौतिकी शैली में लिखा है: http://iopscience.iop.org/1742-5468/2009/12/P12010/ । उन्होंने मुझे बताया है कि यह डिग्री सीमा के साथ भी काम करता है, हालांकि यह पेपर में नहीं आया।

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

बड़ा सवाल यह है कि चेन को चलाने के लिए आपको कितनी देर चाहिए। चूँकि अधिक से अधिक 2 डिग्री पर फैले पेड़ हैमिल्टनियन मार्ग है, इसलिए आपको ग्राफ के आकार में किसी भी सामान्य सीमा के विस्तार की उम्मीद करनी चाहिए। लेकिन हो सकता है कि आप जिस ग्राफ में रुचि रखते हैं वह किसी तरह से विशेष हो।


2
अधिक जानकारी, एक फिल्म प्लस: healthyalgorithms.wordpress.com/2010/12/23/…
अब्राहम फ्लैक्समैन

3

यदि आपकी समस्या समान रूप से एक सेट से एक फैले हुए पेड़ का नमूना है S, कहाँ पे S अधिक से अधिक ऊँचाई के सभी फैले पेड़ों का समूह है h, कुछ इनपुट के लिए h, तो आपकी रणनीति काम करती है (यानी, एक यादृच्छिक फैले हुए पेड़ का नमूना लें और जांचें कि क्या यह सबसे अधिक है h)।

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

इसके अलावा, इस फैले हुए पेड़ को सीधे बंधे हुए ऊँचाई के साथ उत्पन्न करने का एक तरीका हो सकता है। लेकिन मैंने ऐसे एल्गोरिदम के बारे में कभी नहीं सुना है।


1

चौड़ाई-पहली खोज का उपयोग करें! ग्राफ में प्रत्येक शीर्ष से एक बीएफएस करें, छोटी ऊंचाई का परिणामी पेड़ चुनें। एक बीएफएस हमेशा रूट से हर दूसरे शीर्ष पर सबसे कम हॉप्स के साथ रास्ता ढूंढता है।


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

फिर आपकी समस्या लगभग निश्चित रूप से डिग्री की कमी वाले स्पैनिंग ट्री से एनपीसी कम है - en.wikipedia.org/wiki/Degree-constrained_spanning_tree
पीटर बूटे डिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.