रेखांकन चक्र चक्र - सरल स्पष्टीकरण


9

क्या कुछ कृपया मुझे यह समझने में मदद कर सकते हैं कि आम शब्दों में ग्राफ में चक्र कैसे खोजे जा सकते हैं?

मैंने अन्य प्रश्नों को पढ़ा है, जैसे कि यह एक और विकिपीडिया पृष्ठों में से कुछ, लेकिन वे गणितीय शब्दजाल में जल्दी से उतरते प्रतीत होते हैं।

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

मुझे यकीन है कि यह एक सुलझी हुई समस्या है, यह अच्छा होगा यदि इसे सरल शब्दों में समझाया जा सके।

-ace

जवाबों:


6

सबसे आसान तरीका है कि मैं आम आदमी की शर्तों में ग्राफ चक्र को स्पष्ट करने के बारे में सोच सकता हूं, कुछ इस तरह है:

  • पहले, मुझे लगता है कि आप एक ग्राफ क्या है, और क्या नोड्स और किनारों की मूल बातें जानते हैं। यह उदाहरण मानता है कि आपके पास एक ग्राफ़ है जिसमें सभी किनारे केवल एक तरफ़ा हैं।
  • अपना ग्राफ बनाएं, और शुरुआती बिंदु के रूप में एक नोड चुनें।
  • किसी प्रकार का एक कंटेनर ऑब्जेक्ट बनाएं (एक सूची या हैश सबसे अच्छा काम करेगा)। इसे "विज़िट" कहें।
  • एक दूसरा कंटेनर ऑब्जेक्ट बनाएं (एक कतार यहां आदर्श होगी) और इसे "ओपन" कहें।
  • ओपन लिस्ट में शुरुआती नोड जोड़ें।
  • ओपन सूची खाली न होने पर दोहराएं:
    • ओपन से पहला आइटम निकालें और इसे करेंट कहें
    • यदि करंट विजिट में मौजूद है, तो आपके पास एक चक्र है।
    • यदि नहीं, तो करंट को विज़ि‍टेड में जोड़ें, और फिर सभी नोड्स जोड़ें जो करंट अपने आउटबाउंड किनारों से ओपन तक पहुंच सकता है।
  • यदि ओपन खाली है और कोई साइकिल नहीं मिली है, तो आपके पास कोई साइकिल नहीं है। (कम से कम शुरुआती बिंदु से आने वाले सेट में नहीं, जो जरूरी नहीं कि आपके ग्राफ की संपूर्णता हो अगर आपके ग्राफ में द्वीप हों।)

0

मूल रूप से, आप ग्राफ पर पहले एक चौड़ाई खोज करते हैं और हैशमैप का उपयोग करके आपके द्वारा देखे गए नोड्स का ट्रैक रखते हैं।

किसी भी समय, यदि आप एक नोड का सामना करते हैं जो पहले से ही दौरा किया गया है (हैशमैप में मौजूद है), तो आप जानते हैं कि ग्राफ में एक चक्र है।

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