क्या एक अप्रत्यक्ष ग्राफ़ में घटकों पर नज़र रखने के लिए एक ऑनलाइन-एल्गोरिदम है?


12

संकट

मेरे पास एक अप्रत्यक्ष ग्राफ है (बहु-किनारों के साथ), जो समय के साथ बदल जाएगा, नोड्स और किनारों को डाला और हटाया जा सकता है। ग्राफ के प्रत्येक संशोधन पर, मुझे इस ग्राफ के जुड़े घटकों को अद्यतन करना होगा।

गुण

अतिरिक्त गुण यह है कि किसी भी दो घटकों को कभी भी फिर से जोड़ा नहीं जाएगा। जाहिर है, ग्राफ में एक मनमानी राशि के चक्र हो सकते हैं (अन्यथा समाधान तुच्छ होगा)। यदि एक किनारे वाले में एक नोड n नहीं है , तो वह उस नोड को कभी नहीं अपनाएगा। हालांकि, अगर एन , यह कर सकते हैं करने के लिए बदल n nnn

दृष्टिकोण

मेरे पास अब तक दो संभावित दृष्टिकोण हैं, लेकिन जैसा कि आप देखेंगे कि वे भयानक हैं:

धीमा राज्य-कम

मैं हर बार संशोधित तत्व (ओं) से शुरू होने वाले ग्राफ को खोज (dfs / bfs) कर सकता हूं। यह स्थान को संरक्षित करता है, लेकिन प्रत्येक संशोधन के लिए हमारे पास O (n + m) धीमा है।

स्टेटफुल फास्ट (-एआर) (?) दृष्टिकोण

मैं प्रत्येक नोड के लिए सभी संभव रास्तों को सभी संभव नोड्स में संग्रहीत कर सकता हूं, लेकिन अगर मैं इसे सही ढंग से देखता हूं, तो यह O (n ^ 4) मेमोरी लेगा। लेकिन मुझे यकीन नहीं है कि रनटाइम सुधार कैसे होता है (यदि कोई एक है, क्योंकि मुझे एक ही घटक में प्रत्येक नोड के लिए जानकारी को अप-टू-डे रखना है)।

सवाल

क्या आपके पास कोई संकेत है, मैं उस समस्या के बारे में अधिक कैसे सीख सकता हूं या शायद कुछ एल्गोरिदम मैं बना सकता हूं?

ध्यान दें

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


यदि मैंने आपके पिछले दो वाक्यों को "गुण" में पढ़ा है, तो ऐसा लगता है कि आप केवल डिक्रिमेंटल समस्या में रुचि रखते हैं। यदि ऐसा है, तो थोरुप के काम को डिक्रिमेंटल डायनेमिक कनेक्टिविटी पर जांचना सुनिश्चित करें। (आप जेफई के संकेत के माध्यम से प्रशस्ति पत्र पा सकते हैं, जो समस्या के पूरी तरह से गतिशील संस्करण के लिए हैं।)
मावरिक वू

@Maverick वू: हमेशा नए किनारे / नोड हो सकते हैं। मुझे लगता है कि अंतिम संपत्ति बहुत मजबूत नहीं है, बिल्कुल इसी कारण से। क्या यह अभी भी गिरावट के रूप में योग्य है?
बिटमैस्क

उफ़, मुझे नहीं पता कि मैं पहले वाक्य को कैसे भूल गया ... नीचे "उत्तर" देखें।
मैवरिक वू

जवाबों:


17

कई डेटा संरचनाएं हैं जो पॉलीग्लारिदमिक समय में किनारे सम्मिलन, किनारे हटाने और कनेक्टिविटी प्रश्नों (ये दोनों एक ही जुड़े घटक में हैं?) का समर्थन करती हैं।


यह भयानक लगता है, एक बार जब मैं कागजात के माध्यम से कर रहा हूँ, मैं सबसे अधिक संभावना यह स्वीकार करेंगे।
बिटमैक्स

6

मुझे लगता है कि आप कनेक्टेड घटक अपघटन के लिए गतिशील ग्राफ़ एल्गोरिथ्म को क्या कहते हैं, इसके लिए आप देख रहे हैं। होल्म, डी लिक्टेनबर्ग और थोरुप [HLT01] द्वारा एल्गोरिथ्म ने प्रत्येक किनारे के अद्यतन पर पॉलीग्लारिथमिक समय को संशोधित किया है। जब से मैंने पिछली बार समस्या को देखा है, तब से यह लंबे समय से है, इसलिए संभवत: हाल ही में प्रगति हुई है।

[HLT01] जैकब होल्म, क्रिस्टियन डी लिक्टेनबर्ग और मिकेल थोरुप। पॉली-लॉगरिदमिक नियतात्मकता पूरी तरह से गतिशील एल्गोरिदम कनेक्टिविटी के लिए, न्यूनतम फैले हुए पेड़, 2-किनारे, और द्विविभाजन। एसीएम की पत्रिका , 48 (4): 723–760, जुलाई 2001। http://doi.acm.org/10.1145/502090.502095


जिंक्स। तुम मुझे एक कोक देना।
जेफ

@ जेफ: मैं उस खेल के बारे में नहीं जानता था । लेकिन नियमों के अनुसार, मैंने गेम नहीं खोया है (मैं सिर्फ "जिनक्सड" राज्य में हूं), इसलिए मैं आपको एक कोक का एहसान नहीं मानता जब तक कि मैं आगे नहीं बोलता ... ओह, एक पल रुको।
त्सुयोशी इतो

यदि आप केवल प्रतिष्ठा के बिंदुओं पर व्यापार कर सकते हैं :)
सुरेश वेंकट

5

(अभी के लिए मुझे केवल कनेक्टिविटी प्रश्नों से चिपके रहने दें, जो दुर्भाग्य से आपके आवेदन के लिए पर्याप्त नहीं हो सकते हैं।)

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

AFAIK, सीएस सिद्धांत समुदाय केवल सामान्य रेखांकन के लिए शीर्ष अद्यतन को देखना शुरू कर रहा है। FOCS 2008 में Chan, Pătraşcu, और Roditty द्वारा इस पर एक ग्राउंड-ब्रेकिंग कार्य किया गया था। इस लिंक को हाल ही में (Sept 2010) संशोधन और संदर्भ के लिए देखें।


आप क्यों सोचते हैं कि होल्म एट। अल। दृष्टिकोण मेरी समस्या के लिए काम नहीं करता है? मैं इसे अपनाने जा रहा था।
बिटमस्क

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

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