रेखांकन में जुड़वाँ जुड़ाव खोजना


22

चलो एक ग्राफ हो। एक वर्टेक्स x V के लिए , N ( x ) को G में x का पड़ोस (खुला) परिभाषित करें । यही कारण है, एन ( एक्स ) = { y वीG=(V,E)xVN(x)xG । दो कोने परिभाषित यू , वी में जी होने के लिएजुड़वाँअगर यू और वी पड़ोसियों के एक ही सेट, है कि है, अगर एन ( यू ) = एन ( v )N(x)={yV|{x,y}E}u,vGuvN(u)=N(v)

इनपुट के रूप में n कोने और m किनारों पर एक ग्राफ को देखते हुए , हम कितनी तेजी से G में जुड़वाँ की जोड़ी पा सकते हैं , अगर ऐसी जोड़ी मौजूद है?GnmG

हम जाँच सकते हैं कि क्या दो दिए गए कोने समय में जुड़वाँ हैं , उनके पड़ोस की तुलना करके। एक सीधा एल्गोरिथ्म जुड़वाँ को खोजने के लिए है इस प्रकार जाँचना है, प्रत्येक जोड़ी के लिए, चाहे वे जुड़वाँ हों। इसमें O ( n 3 ) समय लगता है (और जुड़वा बच्चों के सभी जोड़े भी मिलते हैं)। क्या ग्राफ़ में जुड़वाँ की एक जोड़ी है (यदि वहाँ मौजूद है) खोजने के लिए काफी तेज़ तरीका है? क्या साहित्य में कोई ज्ञात कार्य है जो इस समस्या को संबोधित करता है?O(n)O(n3)


आप पड़ोस में प्रवेश कर सकते हैं और उन्हें हैशटेबल में जोड़ सकते हैं। संबंधित: cstheory.stackexchange.com/q/3390/236
राडू ग्रिगोर

1
यह अभ्यास 2.17 यहाँ books.google.co.uk/…
Radu GRIGore

संपादित शक्तियों वाले किसी को जुड़वाँ की परिभाषा को ठीक करना चाहिए। (TheMachineCharmer के उत्तर, या मेरे द्वारा लिंक की गई पुस्तक की परिभाषा पर टिप्पणी देखें।)
रादू GRIGore

जवाबों:


21

एक ग्राफ में जुड़वाँ केवल आकार के मॉड्यूल हैं 2. एक ग्राफ का मॉड्यूलर अपघटन समय में पाया जा सकता है । मॉड्यूलर अपघटन वृक्ष स्पष्ट रूप से ग्राफ के सभी मॉड्यूल का प्रतिनिधित्व करता है और इसमें तीन प्रकार के आंतरिक नोड्स होते हैं: श्रृंखला, समानांतर और प्राइम नोड्स, और पत्तियों में व्यक्तिगत नोड होते हैं। कम से कम दो कोने का एक सेट एस वी एक मॉड्यूल यदि और केवल यदि यह पेड़ में कुछ नोड या एक श्रृंखला या एक समानांतर नोड के बच्चों में से कुछ सेट का मिलन है।O(n+m)SV

तो जुड़वां नोड्स की एक जोड़ी खोजने के लिए, यदि वे मौजूद हैं, तो हम समय में मॉड्यूलर अपघटन पेड़ का निर्माण कर सकते हैं । फिर पत्तियों को देखें, यदि किसी पत्ती के माता-पिता एक श्रृंखला या समानांतर नोड हैं तो उस नोड में कम से कम दो बच्चे होने चाहिए जो एक जुड़वां जोड़ी बनाते हैं। तो कुल चलने का समय रैखिक है।O(n+m)

http://en.wikipedia.org/wiki/Modular_decomposition


धन्यवाद, मुझे भी मॉड्यूलर अपघटन से परिचित कराने के लिए!
gphilip

12

समस्या यह निर्धारित करने के बराबर है कि ग्राफ़ मैट्रिक्स में दो समान पंक्तियाँ हैं। हम ग्राफ मैट्रिक्स की पंक्तियों पर त्रि का निर्माण कर सकते हैं। समय सारिणी O (n ^ 2) होगी


6
आसन्न सूचियों पर समान विचार O(m+n)
रादु GRIGore

अब मैं एक मक्खी को
नाक कर

2
इसे कुछ हद तक सामान्यीकृत किया जा सकता है। यदि हम समस्या को "दिए गए (जहाँ यहाँ f ( x ) : = N ( x ) ) के रूप में भिन्न x 1 , x 2 को खोजते हैं जैसे कि f ( x 1 ) = f ( x 2 ) " तब पूरी तरह से आदेश दिया के लिए वाई एक दृष्टिकोण का मूल्यांकन करना है ( एक्स ) प्रत्येक के लिए एक्स एक्सf:X>Yf(x):=N(x)x1x2f(x1)=f(x2)Yf(x)xXउन्हें क्रमबद्ध करें, और डुप्लिकेट के लिए सॉर्ट की गई सूची की जांच करें। तीनों प्रभावी रूप से मूलांक है।
पीटर टेलर

8

संपादित करें: @MikleB और @Travis द्वारा समाधान बहुत चालाक हैं। ओवरकिलिंग के जवाब के लिए क्षमा करें।


ऐसा लगता है कि EQU (यानी, NXOR) के साथ गुणा और AND के साथ गुणा करके, ग्राफ़ के आसन्न मैट्रिक्स A पर मैट्रिक्स गुणन समस्या को कम किया जा सकता है । तो अगर वहाँ ग्राफ में जुड़वां बच्चों की एक जोड़ी है, तो परिणामस्वरूप मैट्रिक्स एक एक टी पहचान मैट्रिक्स, और सूचकांक नहीं होगा ( मैं , जे ) जहां मूल्य एक मैं , जे शून्य नहीं है वास्तव में जुड़वां जोड़ी नोड्स हैं ।AAAT(i,j)ai,j

मेरे सबसे अच्छे ज्ञान के लिए आव्यूह गुणन समस्या में हल किया जा सकता के साथ समय अल्फा 2.376 द्वारा ताम्रकार-Winograd एल्गोरिथ्म । यदि व्यावहारिक समाधानों की आवश्यकता है, तो व्यवहार में अच्छी तरह से काम करने वाले किसी भी मैट्रिक्स गुणन एल्गोरिदम अच्छे हैं।O(nα)α2.376


बहुत बढ़िया यह काम करता है! : DI को लगता है कि यह केवल ऊपरी आधे का मूल्यांकन करने के लिए पर्याप्त होगा । तुम क्या सोचते हो? A2
प्रतीक देवघर

1
@ TheMachineCharmer: धन्यवाद :) हाँ, यदि ग्राफ़ अप्रत्यक्ष है।
हसीन-चिह चांग 張顯 '

हाँ। ठीक ठीक! :)
प्रतीक देवघर

5

इस साइट पर पागल प्रणाली के कारण मैं सीधे टिप्पणी नहीं कर सकता, लेकिन मेरे पास मौजूदा उत्तरों पर एक-दो टिप्पणियां हैं।

मैं सही करने के लिए यकीन है कि सिएन-चिह चांग के समाधान की जरूरत है कर रहा हूँ करने के लिए एक एक टीA2AAT

TheMachineCharmer का अवलोकन 4 सामने है (प्रति-उदाहरण: [0,0,1], [0,1,0], [0,1,1] में निर्धारक 0 लेकिन कोई जुड़वां नहीं है)। यदि जुड़वां मौजूद हैं, तो निर्धारक शून्य है।


मैं साथ कोई समस्या नहीं देखता हूं । कोई उदाहरण? btw, इस साइट पर सिस्टम पागल नहीं है! :)A2
प्रतीक देवघर

अप्रत्यक्ष रेखांकन के लिए काम करेगा (जिसके लिए A == A T ) लेकिन सामान्य रूप से निर्देशित रेखांकन के लिए नहीं। और XNOR को A की दो पंक्तियों की तुलना करने की आवश्यकता है, और मैट्रिक्स गुणन पहले मैट्रिक्स से दूसरी पंक्ति के एक स्तंभ से संचालित होता है। A2AAT
पीटर टेलर

सिस्टम क्रेजी नहीं हो सकता है, लेकिन शायद फर्स्ट टाइम पोस्टर के प्रति संवेदनशील। आप जवाब दे सकते हैं लेकिन टिप्पणी नहीं कर सकते ... लेकिन आपकी टिप्पणियां पोस्टिंग को सही ठहराने के लिए पर्याप्त IMHO थीं। एक बार जब आप अधिक प्रतिष्ठा का निर्माण कर लेते हैं, तो मुझे लगता है कि आप सिस्टम को बहुत अधिक नशे की लत पाएंगे।
हार्डमैथ

3
जवाब देने में सक्षम है लेकिन टिप्पणी करने में पागल है। यह नए उपयोगकर्ताओं को गलत जगह पर मददगार या जवाब नहीं देने के बीच चुनने के लिए मजबूर करता है।
पीटर टेलर

3

यह धागा काफी पुराना है; हालांकि, किसी को भी सबसे सुरुचिपूर्ण और सरल दृष्टिकोण पर हिट नहीं लगता है। लेक्सोग्राफिक रूप से O (n + m) समय में आसन्न सूची को सॉर्ट करें (फिर अहो, हॉपक्रॉफ्ट, उलेमन, 74 'देखें) डुप्लिकेट की जांच करें। आप मॉड्यूलर अपघटन का उपयोग कर सकते हैं, लेकिन यह कुल ओवरकिल है।


2

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

यह एल्गोरिथ्म झूठे जुड़वा बच्चों के समतुल्य वर्गों को खोजता है। एल्गोरिथ्म एक कुशल प्रक्रिया पर निर्भर करता है जो एक विभाजन को परिष्कृत करता है। एक सेट Sऔर एक विभाजन दिया P = {X1, ..., Xn}refine(P, S) = {X1 ^ S, X1 - S, X2 ^ S, X2 - S, ..., Xn ^ S, Xn - S}^सेट चौराहे और -सेट अंतर को दर्शाता है । यदि इसे और अधिक परिष्कृत नहीं किया जा सकता है तो एक विभाजन स्थिर है। इस प्रक्रिया में समय लगता है O (| S |) (विभाजन शोधन पर विकिपीडिया का लेख देखें), इसलिए यह तेज़ है।

Algorithm:

P = {V} // initial partition consists of the vertex set
for every vertex v:
    P = refine(P, N(v)) // refine with the open neighborhood of v

कुल समय हे (| V | + | ई |) | यह भी कार्यक्रम के लिए सरल है।


1

कुछ अवलोकन जो मदद कर सकते हैं

  1. a,bVabcdcN(a)dN(b)

  2. |N(a)||N(b)|ab

  3. bN(a)ab

  4. यदि जुड़वाँ मौजूद हैं, तो आसन्न मैट्रिक्स का निर्धारक शून्य है।

फैंसी विचार:

  1. ऊंचाई के साथ एक पूर्ण बाइनरी ट्री बनाएं = | V |
  2. फिर आसन्न मैट्रिक्स की एक पंक्ति पढ़ना शुरू करें।
  3. यदि आपका सामना 0 है तो बाएं ले जाएं अन्यथा दाएं लें।
  4. जब आप एक पत्ती की दुकान पर पहुँचते हैं, तो आप अपना वर्टिक्स वहाँ जमा करते हैं।
  5. सभी पंक्तियों के लिए ऐसा करें। तो, अंत में प्रत्येक पत्ती में पड़ोसी होंगे।

हफ़मैन संपीड़न एल्गोरिथ्म से प्रेरित होकर चोरी ! :)


2
ab

1
N(a)b=N(b)a
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.