2011-11-16 7 views
7

हमारे पास कमजोर विश्वकोश है।एक ग्राफ को दृढ़ता से कनेक्ट करने के लिए रैखिक समय एल्गोरिदम

इसके अलावा हमें एक सेट ए दिया जाता है जिसमें जी के निचले हिस्से होते हैं जिसमें शून्य डिग्री होती है और एक सेट बी होता है जिसमें शून्य डिग्री होती है। (ए का आकार बी के आकार के बाद छोटा है)।

उस पर, हम यह भी जानते हैं कि यदि ए और बी में वस्तुओं का एक विशेष आदेश है (उदाहरण के लिए ए = ए 1, ए 2, ..., एम और बी = बी 1, बी 2, ..., बीएन) डीआईएफ ने एआई विज़िट द्वि (1≤ i ≤ मीटर) में शुरू किया।

क्या एक रैखिक समय एल्गोरिदम तैयार करना संभव है जिससे जी को यथासंभव कुछ किनारों के रूप में जोड़कर दृढ़ता से कनेक्ट किया जाता है?

+0

-> math.stackexchange.com? – Vlad

+0

"डीएफएस ने एआई विज़िट द्वि (1≤ i ≤ मीटर) शुरू किया" इसे प्राप्त न करें। क्या वहां (1) ए में दोहराए गए तत्व हैं और बी या खाली में खाली हैं (2) आपके ग्राफ में एक विशेष संपत्ति है, जो वर्टेक्स इन-डिग्री शून्य से शुरू होती है, हम आउट-डिग्री शून्य (3) का सख्ती से एक वर्टेक्स प्राप्त कर सकते हैं (उस मामले में अपनी व्याख्या दें)। –

उत्तर

4

आर्क्स जोड़े ख जे -> एक जे जे = 1 के लिए +1, ..., एम -1 और आर्क्स ख जे -> एक j = मी के लिए, ... , एन।

परिणामी ग्राफ़ दृढ़ता से जुड़ा हुआ है, क्योंकि एक और ख के दृढ़ता से जोड़ा आर्क्स से जुड़े हुए हैं और एक मैं से रास्तों मैं ख और के लिए प्रत्येक नोड एक्स, के लिए, वहाँ i, j इस तरह है कि मौजूद वहाँ मूल ग्राफ में i से x और मूल ग्राफ में x से b j से मूल ग्राफ़ में एक पथ मौजूद है।

हम कम आर्क्स उपयोग नहीं कर सकते, क्योंकि एक निवर्तमान चाप, ख में से प्रत्येक के लिए जोड़ा जाना चाहिए ..., ख n

+0

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

+0

@ बुद्धि की हवा मुझे वर्तमान प्रश्न शब्द में स्पष्ट रूप से एक परिकल्पना क्या साबित करनी चाहिए? – Per

+0

इस समाधान के साथ कोई समस्या हो सकती है। दो अंगूठियां, एक्स और वाई, और एक अलग बिंदु से बना ग्राफ पर विचार करें।एक्स से वाई और वाई से अलग बिंदु तक एक लिंक है। पृथक बिंदु सेट बी का एकमात्र सदस्य है। यह एक विश्वकोश ग्राफ के रूप में जुड़ा हुआ है, लेकिन दृढ़ता से कनेक्ट नहीं है, क्योंकि आप वाई से एक्स, या पृथक नोड से वाई तक नहीं प्राप्त कर सकते हैं क्योंकि ए के पास कोई तत्व नहीं है, आपका प्रस्ताव होगा कोई लिंक नहीं जोड़ें। – mcdowella

1

संपादित - के बाद कम से कम लिंक के साथ समाधान का उत्पादन नहीं करता:

आप रैखिक समय में http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm चला सकते हैं। मैं प्रस्ताव करता हूं कि आप ऐसा करते हैं और ध्यान दें कि "इसके किसी भी उत्तराधिकारी से पहले कोई दृढ़ता से जुड़े घटक की पहचान नहीं की जाएगी"। इसलिए ग्राफ के पहले दृढ़ता से घटक किसी भी अन्य घटकों का उत्तराधिकारी नहीं होना चाहिए। मेरा सुझाव है कि हर बार जब आप दृढ़ता से जुड़े घटक को उत्सर्जित करते हैं जिसमें कोई उत्तराधिकारी नहीं होता है, तो आप इसे इस पहले घटक से कनेक्ट करने वाला एक लिंक जोड़ते हैं। मेरा सुझाव है कि हर बार जब आप अनिवार्य रूप से तारजन एल्गोरिदम को गैर-रिकर्सिव कॉल के साथ मजबूत कनेक्ट() पर पुन: प्रारंभ करते हैं, तो पहले घटक को उस वर्टेक्स पर कनेक्ट करते हुए कनेक्ट करें जिसे आप पुनरारंभ कर रहे हैं।

इन लिंक के साथ आप पहले मजबूत घटक से दूसरे घटक, और हर दूसरे घटक से पहले मजबूत घटक तक प्राप्त कर सकते हैं। दुर्भाग्यवश यह आवश्यक रूप से कम से कम लिंक के साथ समाधान नहीं है - नीचे प्रति द्वारा दूसरी टिप्पणी देखें।

+0

कैसे आप कोई पूर्ववर्तियों के साथ एक घटक की तुलना में अधिक निपटेंगे? – Per

+0

मेरा इरादा यह है कि कोई पूर्ववर्ती वाले द्वितीयक घटक वे घटक होते हैं जिन पर तारजन एल्गोरिदम गैर-रिकर्सिव कॉल के साथ पुनरारंभ होता है, इसलिए उन्हें पहले घटक से लिंक मिलते हैं, और इससे पहुंचने योग्य होते हैं। उनके उत्तराधिकारी, या स्वयं, चक्र को पूरा करने वाले पहले घटक के लिंक प्राप्त करते हैं। हालांकि, चूंकि मैंने आपके उत्तर पर उठाए गए बिंदु गलत थे, शायद मैं यहां भी गलत हूं? – mcdowella

+0

अगर मैं अपने एल्गोरिथ्म सही ढंग से समझ है, तो ग्राफ़ {a1-> बी 1, a1-> बी 2, a2-> b2} को मजबूत घटक {a1} पहली उत्सर्जित, {बी 1} और {} b2 के बाद हो सकता है, तो बी 1 और बी 2 ए 1 ​​पर वापस लिंक प्राप्त करें। ए 1 और ए 2 को जोड़ने के लिए कुल 3 के लिए एक और लिंक की आवश्यकता होती है, बी 2-> ए 2, बी 2-> ए 1 को जोड़ने के लिए आवश्यक 2 बनाम। – Per

संबंधित मुद्दे