उत्क्रमणीय रूप में एक अप्रत्यक्ष ग्राफ के लिए डिग्राफ को बदलना


10

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

क्या कोई ऐसा करना जानता है या किसी संदर्भ का सुझाव दे सकता है? अग्रिम में धन्यवाद।


अपडेट: नीचे एड्रियन के उत्तर के बारे में। यह एक अच्छा शुरुआती बिंदु हो सकता है लेकिन मुझे नहीं लगता कि यह अपने वर्तमान रूप में काम करता है। यहाँ क्यों मुझे लगता है कि यह नहीं है की एक छवि है: यहाँ छवि विवरण दर्ज करें


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


1
मुझे लगता है कि यह सवाल बहुत व्यापक है। आपकी अड़चनें क्या हैं?
एड्रियन एन

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

मुझे लगता है कि आपको इस सवाल का उल्लेख करना चाहिए कि "समान ग्राफ़" से आपका क्या मतलब है। क्या आपका मतलब है कि कोने पर लेबल लगाए गए हैं, या कोने लंबवत हैं? क्या तुम्हारा मतलब है कि(V,E)दोनों के लिए समान है, या कि दो रेखांकन समरूप हैं? ऐसा लगता है जैसे आप बाद का मतलब है। क्या आप सुनिश्चित हैं कि आपके आवेदन में इसकी आवश्यकता है? यदि आपको लेबल को बनाए रखने की अनुमति है, तो समस्या आसान हो जाती है और एड्रियन के जवाब काम करता है (क्योंकि किनारे(3,4) किनारे के समान नहीं है (1,2))।
डीडब्ल्यू

2
कृपया अपने अपडेट को प्रश्न में शामिल करें। किसी भी समय, एसई पदों को इतिहास के बारे में सोचने के बिना ऊपर से नीचे पढ़ने योग्य होना चाहिए; यह अलग से संग्रहीत किया गया है।
राफेल

जवाबों:


6

प्रत्येक निर्देशित बढ़त के लिए e=(x,y), नए कोने जोड़ें v1e,,v5e और प्रतिस्थापित करें e किनारों के साथ xv1e, v1ev2e, v1ev3e, v3ev4e, v4ev5e, v3ey

डिकोड करने के लिए, प्रत्येक पत्ती (डिग्री -1 वर्टेक्स) जिसके पड़ोसी की डिग्री 2 है, होनी चाहिए v5e कुछ बढ़त के लिए e=(x,y); इसका पड़ोसी है v4e और के दूसरे पड़ोसी v4e है v3ev3e एक अद्वितीय पड़ोसी है जिसके पास दोनों डिग्री 3 है और एक पत्ती के निकट है: पड़ोसी है v1e और इसका पत्ता है v2e (अगर v1e दो पत्ती पड़ोसी है, एक होने के लिए मनमाने ढंग से उठाओ v2e)। का दूसरा पड़ोसीv1e है x और के दूसरे पड़ोसी v3e है y। निर्देशित किनारे को पुनर्स्थापित करें(x,y) और कोने हटाएं v1e,,v5e


7

डेविड रिचर्बी का जवाब (जिसे स्वीकार किया गया) अच्छा है।

मैंने एक साधारण उदाहरण डिग्राफ पर उनके निर्देशों का पालन किया, और आशा है कि यह किसी की मदद करेगा

डिग्राफ ए <-> बी, सी -> ए, बी -> सी

(मैंने इसे डेविड के जवाब पर एक टिप्पणी के रूप में पोस्ट किया होगा, लेकिन मेरे पास आवश्यक प्रतिष्ठा बिंदु नहीं हैं।)


1
मूल उत्तर के मुकाबले ग्राफिकल निरूपण एक बहुत बड़ा सुधार है। एक टिप्पणी के रूप में जवाब देने के लिए धन्यवाद।
ऑरेंजशेरबेट

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

2

एक निर्देशित ग्राफ परिवर्तित करने के लिए D एक अप्रत्यक्ष ग्राफ के लिए G एक निम्नलिखित करें:

  1. के नोड्स की संख्या D
  2. दो अप्रत्यक्ष रेखांकन बनाएँ G, G के रूप में एक ही शीर्ष पर सेट D
  3. हर किनारे के लिए u,v में D किनारे जोड़ें G अगर u<v, और किनारे जोड़ें G
  4. G का डिसऑर्डर यूनियन है G तथा G

जब असंतुष्ट संघ कर रहा है तो उसे पलटने के लिए ध्यान रखना चाहिए।

उदाहरण


यह एक अच्छा प्रयास है और यह उन पंक्तियों के साथ है जो मेरे पास एक उत्तर के लिए थे, लेकिन यह काम नहीं करता है क्योंकि उलटा अद्वितीय नहीं है। उदाहरण के लिए, ग्राफ़ O <-> OOO को ग्राफ़ OO OO OO OO में बदल दिया जाएगा, लेकिन तब यह उत्तरार्द्ध भी निर्देशित ग्राफ़ O-> O O-> OOO से आ सकता था, इसलिए यह प्रक्रिया प्रतिवर्ती नहीं है।
रात

मैंने इसे स्पष्ट करने के लिए एक चित्र जोड़ा।
एड्रियन एन

-1

पहचान समारोह के बारे में क्या? यानी हर डिग्राफ को एक अप्रत्यक्ष, द्विदलीय ग्राफ के समान आकार के विभाजन और इसके विपरीत देखा जा सकता है।


मुझे लगता है कि आप डिग्राफ कोड करने के लिए मतलब है G=(V,E) ग्राफ के साथ (V×{0,1},{(u,0,v,1)(u,v)E})। यह काम नहीं करता है, क्योंकि यह द्विदिश किनारों से सामना नहीं कर सकता है और, यदिG सभी किनारों को उलटने का परिणाम है G, फिर G तथा Gआइसोमोर्फिक एन्कोडिंग है लेकिन जरूरी नहीं कि खुद आइसोमॉर्फिक हो।
डेविड रिचेर्बी

-1

यहाँ इस पर एक छुरा है:

अप्रत्यक्ष ग्राफ़ में अतिरिक्त कोने के साथ दिशा की जानकारी बदलें। दूसरे शब्दों में, दिशा की जानकारी को "एनकोड" करने के लिए अप्रत्यक्ष ग्राफ़ में अतिरिक्त कोने का उपयोग करें। उदाहरण के लिए, कम से कम एक किनारे वाले प्रत्येक निर्देशित शीर्ष के लिए, 1 + "आवक" किनारों की संख्या के बराबर अप्रत्यक्ष वर्धमान जोड़ें। शून्य किनारों वाली ऊर्ध्वाधर अपरिवर्तित रहती हैं।

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

मुझे लगता है कि मुश्किल हिस्सा माइन्सवेपर खेलने की तरह है :-) चित्रा जहां बम (आने वाले किनारों) को प्रत्येक वर्ग (वर्टेक्स) के लिए आसन्न बमों की संख्या दी गई है।


"निर्देशित शीर्ष" क्या है? किसी भी मामले में, यह विशिष्ट रूप से डिकोडेबल नहीं है। मान लीजिए कि एक शीर्षxइसके साथ डिग्री -1 वर्टीकल का एक गुच्छा होता है, साथ ही अन्य डिग्री के कोने का एक गुच्छा होता है। आप कैसे बताएंगे कि उनमें से कितने डिग्री 1 के कोने से आने वाले किनारों का प्रतिनिधित्व करते हैं और कितने इन-डिग्री की कोडिंग कर रहे हैंx? किसी भी मामले में, माइनस्वीपर को हल करना एनपी-हार्ड है, समाधान हमेशा अद्वितीय नहीं होता है और यह स्पष्ट नहीं है कि यह तब हल किया जा सकता है जब वर्गों को जरूरी रूप से एक अच्छे ग्रिड में व्यवस्थित नहीं किया जाता है।
डेविड रिचीर्बी

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

जब मैंने पहली बार इसे पढ़ा था, तब भी मैं आपके समाधान को नहीं समझ पाया था, लेकिन मैं देखता हूं कि यह अब कैसे काम करता है। चतुर!
हारून

चलो xमूल ग्राफ में एक शीर्ष बिंदु हो, जिसमें कोई आवक न हो और एक आउटगोइंग एज हो। कोडित ग्राफ़ में,xएक शिखर के रूप में दिखाई देता है, जिसमें से एक किनारे निकलता है। आप किस तरह के डिग्री -1 वर्टेक्स की तरह से डिग्री -1 वर्टेक्स की तरह से अलग करते हैं जो इन-डिग्री कोड करते हैं?
डेविड रिचेर्बी

मुझे लगता है कि अब यह "माइन्सवेपर-मूट" है, लेकिन मेरा विचार निर्देशित बढ़त लेना था (x,y) और इसे करने के लिए परिवर्तित (x0,x),(x,y),(y,y0) तथा (y,y1)। इसलिएx दो किनारे होंगे, न कि 1. किसी भी शीर्ष पर जिसकी केवल 1 धार है, डिग्री-कोडिंग है। y दो डिग्री-कोडिंग वर्टिकल हैं, 1. की एक डिग्री का संकेत है। इस में बस उदाहरण के लिए, डिकोडिंग आसान है क्योंकि हम जानते हैं कि केवल दो कोने हैं, और उनके पास क्रमशः 0 और 1 की डिग्री है, इस प्रकार (x,y)
आरोन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.