Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> प्रोग्रामिंग

मजबूत रूप से जुड़े घटकों के लिए टार्जन का एल्गोरिदम


टारजन के एल्गोरिथम का उपयोग निर्देशित ग्राफ के दृढ़ता से जुड़े घटकों को खोजने के लिए किया जाता है। इस एल्गोरिथम को लागू करने के लिए इसे केवल एक DFS ट्रैवर्सल की आवश्यकता है।

मजबूत रूप से जुड़े घटकों के लिए टार्जन का एल्गोरिदम

डीएफएस ट्रैवर्सल का उपयोग करके हम जंगल के डीएफएस पेड़ को ढूंढ सकते हैं। DFS ट्री से, दृढ़ता से जुड़े हुए घटक पाए जाते हैं। जब इस तरह के उप-वृक्ष की जड़ मिल जाती है तो हम पूरे उप-वृक्ष को प्रदर्शित कर सकते हैं। वह सबट्री दृढ़ता से जुड़ा एक घटक है।

इनपुट और आउटपुट

इनपुट:ग्राफ़ का एडजेंसी मैट्रिक्स। 

एल्गोरिदम

findComponent(u, डिस्क, लो, स्टैक, स्टैकआइटमफ्लैग)

इनपुट: स्टार्ट नोड, डिस्कवरी टाइम, लो, डिस्क वर्टेक्स के डिस्कवरी टाइम को होल्ड करेगा, और लो सबट्री के बारे में जानकारी रखेगा। स्टैक में कौन सा नोड है, इसे ट्रैक करने के लिए वर्टिस और एक अन्य फ़्लैग ऐरे को होल्ड करने के लिए स्टैक।

आउटपुट: एससीसी प्रदर्शित करें।

प्रारंभ समय:=0//अगले फ़ंक्शन कॉल सेट डिस्क के लिए समय का मूल्य प्रारंभ नहीं किया जाएगा [यू]:=समय + 1 और कम [यू]:=समय + 1 समय:=समय + 1 पुश यू स्टैक में स्टैकइटैम फाल्ग [यू]:=सभी वर्टेक्स वी के लिए सच है जो यू के निकट है, अगर वी की खोज नहीं की जाती है, तो फिनककंपोनेंट (वी, डिस्क, लो, स्टैक, स्टैकइटम फाल्ग) कम [यू] =कम से कम [यू] और कम [वी] और अगर स्टैकइटम फाल्ग [वी] सच है, तो कम [यू]:=कम से कम [यू] और डिस्क [वी] किया गया poppedItem:=0 अगर कम [यू] =डिस्क [यू], तो जबकि आप स्टैक टॉप में नहीं हैं, poppedItem करें:=स्टैक डिस्प्ले का शीर्ष poppedItem stackItemFlag [poppedItem]:=स्टैक किए गए पॉप से ​​गलत पॉप आइटम:=स्टैक डिस्प्ले का शीर्ष poppedItem stackItemFlag [poppedItem]:=स्टैकएंड से गलत पॉप आइटम  पूर्व> 

strongConComponent(graph)

इनपुट &,माइनस; दिया गया ग्राफ़.

आउटपुट - सभी मजबूती से जुड़े हुए घटक।

प्रारंभ में डिस्क सरणी में सभी आइटम्स को कम से तक के सभी तत्वों के लिए अनदेखा करने के लिए सेट करें और ग्राफ़ में सभी नोड i के लिए स्टैक में कोई आइटम संग्रहीत नहीं है चिह्नित करें, यदि डिस्क [i] अनदेखा है, तो ढूंढें कॉम्पोनेंट ( i, डिस्क, लो, स्टैक, स्टैकआइटमफ्लैग)एंड

उदाहरण

#शामिल करें#शामिल करें<स्टैक>#नेमस्पेस एसटीडी का उपयोग करके नोड 5 परिभाषित करें; इंट ग्राफ [नोड] [नोड] ={ {0, 0, 1, 1, 0}, {1, 0, 0, 0, 0}, {0, 1, 0, 0, 0}, {0, 0 , 0, 0, 1}, {0, 0, 0, 0, 0}}; int min(int a, int b) {रिटर्न (a&stk, bool stkItem[]) { स्थिर इंट टाइम =0; डिस्क [यू] =कम [यू] =++ समय; // प्रारंभिक रूप से खोज समय और कम मूल्य 1 stk.push (u) है; stkItem [यू] =सच; // स्टैक में यू के रूप में ध्वजांकित करें (int v =0; v  stk; for(int i =0; i 

आउटपुट

431 2 0

  1. सीएसएमए/सीडी के लिए बैक-ऑफ एल्गोरिदम

    बैक ऑफ एल्गोरिथम टकराव समाधान के लिए उपयोग किया जाने वाला एक एल्गोरिदम है। यह काम करता है, जब यह टकराव होता है, तो दोनों डिवाइस सिग्नल को फिर से भेजने से पहले यादृच्छिक समय की प्रतीक्षा करते हैं, वे तब तक प्रयास करते रहते हैं जब तक कि डेटा सफलतापूर्वक स्थानांतरित नहीं हो जाता। इसे बैक ऑफ कहा जाता ह

  1. सी ++ में अहस्ताक्षरित पूर्णांक के लिए डिवीजन एल्गोरिदम बहाल करना

    एक विभाजन एल्गोरिथ्म का उपयोग करके एक अहस्ताक्षरित पूर्णांक को विभाजित करने पर चर्चा करें। कुछ डिवीजन एल्गोरिदम कागज पर लागू होते हैं, और अन्य डिजिटल सर्किट पर लागू होते हैं। डिवीजन एल्गोरिदम दो प्रकार के होते हैं:स्लो डिवीजन एल्गोरिथम और फास्ट डिवीजन एल्गोरिथम। स्लो डिविजन एल्गोरिथम में रिस्टोरिंग,

  1. वितरित साझा मेमोरी को लागू करने के लिए एल्गोरिदम

    साझा स्मृति मेमोरी ब्लॉक है जिसे एक से अधिक प्रोग्राम द्वारा एक्सेस किया जा सकता है। एक साझा स्मृति अवधारणा का उपयोग संचार का एक तरीका प्रदान करने और कम अनावश्यक स्मृति प्रबंधन प्रदान करने के लिए किया जाता है। वितरित साझा मेमोरी DSM . के रूप में संक्षिप्त वितरित प्रणालियों में साझा स्मृति अवधारणा क