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

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


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

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

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

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

इनपुट: ग्राफ का आसन्नता मैट्रिक्स। 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 आउटपुट: दृढ़ता से जुड़े घटक: 4 3 1 2 0 

एल्गोरिदम

findComponent(u, disc, low, stack, stackItemFlag)

इनपुट: प्रारंभ नोड, खोज समय, low, disc शीर्ष के खोज समय को रखेगा, और low उप-ट्री के बारे में जानकारी रखेगा। शीर्षों को रखने के लिए स्टैक और एक अन्य फ्लैग सरणी जो ट्रैक करे कि कौन सा नोड स्टैक में है।

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

शुरू     time := 0       //time का मान अगले फ़ंक्शन कॉल के लिए आरंभ नहीं होगा     disc[u] := time+1 और low[u] := time + 1 सेट करें     time := time + 1     u को स्टैक में पुश करें     stackItemFalg[u] := सच     u के साथ आसन्न सभी शीर्ष v के लिए, करें       यदि v खोजा नहीं गया है, तो         fincComponent(v, disc, low, stack, stackItemFalg)         low[u] = low[u] और low[v] का न्यूनतम       अन्यथा यदि stackItemFalg[v] सच है, तो         low[u] := low[u] और disc[v] का न्यूनतम     किया     poppedItem := 0     यदि low[u] = disc[u], तो       जब तक u स्टैक के शीर्ष पर नहीं है, करें         poppedItem := स्टैक का शीर्ष         poppedItem प्रदर्शित करें         stackItemFlag[poppedItem] := गलत         स्टैक से आइटम पॉप करें       किया         poppedItem := स्टैक का शीर्ष         poppedItem प्रदर्शित करें         stackItemFlag[poppedItem] := गलत         स्टैक से आइटम पॉप करें अंत

strongConComponent(graph)

इनपुट: दिया गया ग्राफ।

आउटपुट: सभी दृढ़ता से जुड़े घटक।

शुरू     प्रारंभ में disc सरणी में सभी आइटम्स को अनखोजा सेट करें     low में सभी तत्वों को φ और चिह्नित करें कि कोई आइटम स्टैक में संग्रहीत नहीं है     ग्राफ में सभी नोड i के लिए, करें       यदि disc[i] अनखोजा है, तो         findComponent(i, disc, low, stack, stackItemFlag) अंत

उदाहरण

#include<iostream> #include<stack> #define NODE 5 using namespace std;           int graph[NODE][NODE] = {     {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) {     return (a

आउटपुट

4 3 1 2 0

  1. CSMA/CD के लिए बैक-ऑफ एल्गोरिदम CSMA/CD के लिए बैक-ऑफ एल्गोरिदम

    बैक ऑफ एल्गोरिदम कॉलिजन रिज़ॉल्यूशन के लिए उपयोग किया जाने वाला एक एल्गोरिदम है। यह इस तरह काम करता है,जब यह कॉलिजन होता है, तो दोनों डिवाइस सिग्नल को फिर से ट्रांसमिट करने से पहले एक रैंडम समय तक प्रतीक्षा करते हैं, वे तब तक कोशिश करते रहते हैं जब तक डेटा सफलतापूर्वक ट्रांसफर नहीं हो जाता। इसे बैक

  1. C++ में अनसाइन्ड इंटीजर के लिए रीस्टोरिंग डिवीजन एल्गोरिथम C++ में अनसाइन्ड इंटीजर के लिए रीस्टोरिंग डिवीजन एल्गोरिथम

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

  1. डिस्ट्रिब्यूटेड शेयर्ड मेमोरी लागू करने के लिए एल्गोरिदम डिस्ट्रिब्यूटेड शेयर्ड मेमोरी लागू करने के लिए एल्गोरिदम

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