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

पता लगाएं कि क्या एक अप्रत्यक्ष ग्राफ में पायथन में दिए गए आकार का एक स्वतंत्र सेट है

मान लीजिए कि हमारे पास एक अप्रत्यक्ष ग्राफ दिया गया है; हमें यह जांचना है कि इसमें आकार का एक स्वतंत्र सेट है या नहीं। यदि आकार l का कोई स्वतंत्र सेट है तो हाँ लौटाएँ अन्यथा नहीं।

हमें यह ध्यान रखना होगा कि ग्राफ़ में एक स्वतंत्र समुच्चय को ऐसे शीर्षों के समुच्चय के रूप में परिभाषित किया जाता है जो एक दूसरे से सीधे नहीं जुड़े होते हैं।

इसलिए, यदि इनपुट L =4 जैसा है,

पता लगाएं कि क्या एक अप्रत्यक्ष ग्राफ में पायथन में दिए गए आकार का एक स्वतंत्र सेट है

तो आउटपुट हाँ होगा

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • फ़ंक्शन को परिभाषित करें is_valid() । यह ग्राफ लेगा, गिरफ्तार करें

  • मेरे लिए 0 से लेकर गिरफ्तारी के आकार तक, करें

    • j के लिए i + 1 से arr के आकार की श्रेणी में, करें

      • अगर ग्राफ़[arr[i], arr[j]] 1 के समान है, तो

        • झूठी वापसी

  • सही लौटें

  • फ़ंक्शन को हल करें () परिभाषित करें। यह ग्राफ, एआर, के, इंडेक्स, सोल लेगा

  • यदि k, 0 के समान है, तो

    • अगर is_valid(graph, arr) सच के समान है, तो

      • सोल [0] :=सच

      • वापसी

    • अन्यथा,

      • यदि अनुक्रमणिका>=k, तो

        • वापसी (समाधान (ग्राफ, एआर [इंडेक्स 0 से अंत तक] एक सूची को [इंडेक्स], के -1, इंडेक्स -1, सोल) के साथ संयोजित करें या हल करें (ग्राफ, एआर [इंडेक्स 0 से अंत तक], के, इंडेक्स- 1, सोल))

      • अन्यथा,

        • रिटर्न सॉल्व (ग्राफ, एआर [इंडेक्स 0 से अंत तक] एक सूची को [इंडेक्स], के -1, इंडेक्स -1, सोल के साथ संयोजित करें)

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

def is_valid(graph, arr):
   for i in range(len(arr)):
      for j in range(i + 1, len(arr)):
         if graph[arr[i]][arr[j]] == 1:
            return False
   return True
def solve(graph, arr, k, index, sol):
   if k == 0:
      if is_valid(graph, arr) == True:
         sol[0] = True
         return
      else:
         if index >= k:
            return (solve(graph, arr[:] + [index], k-1, index-1, sol) or solve(graph, arr[:], k, index-1, sol))
         else:
            return solve(graph, arr[:] + [index], k-1, index-1, sol)

graph = [
   [1, 1, 0, 0, 0],
   [1, 1, 1, 1, 1],
   [0, 1, 1, 0, 0],
   [0, 1, 0, 1, 0],
   [0, 1, 0, 0, 1]]
k = 4
arr = []
sol = [False]
solve(graph, arr[:], k, len(graph)-1, sol)
if sol[0]:
   print("Yes")
else:
   print("No")

इनपुट

[[1, 1, 0, 0, 0],
[1, 1, 1, 1, 1],
[0, 1, 1, 0, 0],
[0, 1, 0, 1, 0],
[0, 1, 0, 0, 1]],
4

आउटपुट

Yes

  1. यह पता लगाने के लिए कार्यक्रम कि क्या अप्रत्यक्ष ग्राफ में एक शीर्ष का पायथन में कम लागत वाला पथ है

    मान लीजिए, हमें एक भारित, अप्रत्यक्ष ग्राफ दिया गया है। हमें एक फ़ंक्शन क्वेरी को कार्यान्वित करना होगा जो इनपुट के रूप में दो शिखर और लागत सीमा लेता है और जांचता है कि इनपुट के रूप में दी गई लागत से कम लागत पथ मौजूद है या नहीं। यदि कोई पथ मौजूद है या अन्यथा, हम सही लौटते हैं, तो हम झूठे लौटते हैं।

  1. पायथन में दिए गए ग्राफ में विशेष प्रकार के सबग्राफ खोजने का कार्यक्रम

    मान लीजिए हमारे पास एक विशेष प्रकार का ग्राफ है जिसमें दो प्रकार के शीर्ष हैं जिन्हें सिर और पैर नाम दिया गया है। ग्राफ में केवल एक सिर होता है और k किनारे होते हैं जो सिर को प्रत्येक पैर से जोड़ते हैं। इसलिए, अगर हमें एक अप्रत्यक्ष, बिना भार वाला ग्राफ दिया जाता है; हमें इन विशेष प्रकार के आलेखों क

  1. ग्राफ़ में सबसे बड़े गुट के न्यूनतम आकार का पता लगाने का कार्यक्रम (पायथन)

    मान लीजिए कि हमें एक ग्राफ दिया गया है और ग्राफ में सबसे बड़े समूह का न्यूनतम आकार ज्ञात करने के लिए कहा गया है। ग्राफ़ का एक समूह एक ग्राफ़ का एक उपसमुच्चय होता है, जहाँ प्रत्येक शीर्ष जोड़े आसन्न होते हैं, अर्थात प्रत्येक जोड़े के बीच एक किनारा मौजूद होता है। एक ग्राफ में सबसे बड़ा गुट ढूँढना बहुप