टारजन के एल्गोरिथम का उपयोग निर्देशित ग्राफ के दृढ़ता से जुड़े घटकों को खोजने के लिए किया जाता है। इस एल्गोरिथम को लागू करने के लिए इसे केवल एक 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