Friday, 15 July 2011

algorithm - does DFS and BFS in O(n+m) change? -


हमें पता है कि एक ओ (n + m) समाधान (डीएफएस या बीएफएस) है अगर s से t का एक असत्य आलेखित आलेख G से n vertexes और के साथ पथ है या नहीं, मी किनारों ... यह एक आसन्न सूची के माध्यम से लागू किया जाएगा

अगर मैं अपने प्रोग्राम को एडजेंसी मैट्रिक्स के साथ कार्यान्वित करता हूं, तो क्या रनटाइम प्रभावित होगा? क्या यह एक अच्छा या बुरा विकल्प है?

संपादित करें: मुझे समय की जटिलता की गणना, इस तरह से, किसी भी विचार की आवश्यकता है?

कोड> एम प्रकार की लाइनें ab दर्शाती है कि शीर्ष a और शीर्षांक b के बीच का किनारा होता है। अब आप एक संगत मैट्रिक्स एम [] [] ऐसे एम [i] [j] = 1 लेते हैं, अगर i के बीच का किनारा है और j अन्यथा एम [i] [j] = 0 (जैसा कि ग्राफ को मैट्रिक्स को अधोरेखित किया जाएगा सममित होगा, इस प्रकार आप केवल ऊपरी / निचले आधे मैट्रिक्स को कम करने की स्मृति को संग्रहीत कर सकते हैं आधा )। अब आपको मैट्रिक्स लेना होगा और उसे 0 (सभी कक्षों) के लिए प्रारंभ करना होगा और किनारों के निशान एम [ए] [बी] = एम [बी] [ए] = 1 को स्कैन करते समय होगा। अब प्रारंभिक भाग ओ (एन ^ 2) है। किनारों को स्कैन और अंकन करना ओ (मी) है। अब बीएफएस / डीएफएस रूटीन को देखते हैं। जब आप एक नोड पर होते हैं, तो आप अपने सभी अनोखे कोने को देखने की कोशिश करते हैं। अब कहें कि हम शीर्ष <पड़ने वाले पड़ोसियों को जानना चाहते हैं a , आपको के लिए (int i = 0; i & lt; n; i ++) करना होगा यदि (एम [ए] [i] = = 1) (0 आधारित अनुक्रमण मानते हुए) अब यह प्रत्येक शीर्ष के लिए किया जाना चाहिए और इस तरह नियमित की जटिलता बन जाती है O (n ^ 2) भले ही m & lt; (N * (n-1)) / 2 (कोई भी किनारों और छोरों m के साथ सरल ग्राफ मान सकते हैं अधिकतम (n * (n-1)) / 2 )। इस प्रकार आपकी जटिलता पूरी हो जाती है O (n ^ 2) तो निकटता मैट्रिक्स का उपयोग क्या होता है? अच्छी तरह से डीएफएस / बीएफएस सिर्फ एक बड़ा एल्गोरिथ्म का हिस्सा हो सकता है, आपके एल्गोरिथ्म को यह भी बता सकता है कि क्या नोड a और b के बीच बढ़त है, जिस पर निकटता मैट्रिक्स ओ (1) समय लेता है इस प्रकार चाहे निकटता सूची या निकटता मैट्रिक्स चुनना वास्तव में आपके एल्गोरिथम पर निर्भर करता है (जैसे अधिकतम स्मृति जिसे आप ले सकते हैं, डीएफएस / बीएफएस रूटीन जैसी चीजों के लिए समय की जटिलता या दो कोने से जुड़ा आदि)। आशा है कि मैंने आपकी क्वेरी का जवाब दिया।


No comments:

Post a Comment