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

एक ग्राफ में बीएफएस का उपयोग करके नोड से पहुंचने योग्य सभी नोड्स को खोजने के लिए पायथन प्रोग्राम

जब एक पेड़ के सभी नोड्स का योग खोजने की आवश्यकता होती है, तो एक वर्ग बनाया जाता है, और इसमें रूट नोड सेट करने, पेड़ में तत्व जोड़ने, एक विशिष्ट तत्व की खोज करने और पेड़ के तत्वों को जोड़ने के तरीके होते हैं। राशि और इतने पर खोजें। इन विधियों तक पहुँचने और उनका उपयोग करने के लिए कक्षा का एक उदाहरण बनाया जा सकता है।

नीचे उसी का एक प्रदर्शन है -

उदाहरण

from collections import deque

def add_edge(v, w):

   global visited_node, adj
   adj[v].append(w)
   adj[w].append(v)

def BFS_operation(component_num, src):

   global visited_node, adj
   queue = deque()

   queue.append(src)

   visited_node[src] = 1
   reachableNodes = []

   while (len(queue) > 0):

      u = queue.popleft()
      reachableNodes.append(u)
      for itr in adj[u]:
         if (visited_node[itr] == 0):

            visited_node[itr] = 1
            queue.append(itr)

   return reachableNodes

def displayReachableNodes(m):

   for i in m:
      print(i, end = " ")
   print()

def findReachableNodes(my_list, n):

   global V, adj, visited_node

   a = []

   component_num = 0

   for i in range(n):
      u = my_list[i]

      if (visited_node[u] == 0):
         component_num += 1

      a = BFS_operation(component_num, u)

   print("The reachable nodes from ", u, " are")
   displayReachableNodes(a)

V = 7
adj = [[] for i in range(V + 1)]
visited_node = [0 for i in range(V + 1)]
add_edge(1, 2)
add_edge(2, 3)
add_edge(3, 4)
add_edge(3, 1)
add_edge(5, 6)
add_edge(5, 7)

my_list = [ 2, 4, 5, 7 ]

arr_len = len(my_list)
findReachableNodes(my_list, arr_len)

आउटपुट

The reachable nodes from 2 are
2 1 3 4
The reachable nodes from 4 are
2 1 3 4
The reachable nodes from 5 are
5 6 7
The reachable nodes from 7 are
5 6 7

स्पष्टीकरण

  • आवश्यक पैकेज आयात किए जाते हैं।

  • 'add_edge' नाम की एक विधि परिभाषित की गई है जो पेड़ में तत्वों को जोड़ने में मदद करती है।

  • 'बीएफएस_ऑपरेशन' विधि चौड़ाई पहले खोज दृष्टिकोण का उपयोग करके पेड़ को पार करने में मदद करती है।

  • 'डिस्प्ले रीचेबल नोड्स' नाम की एक विधि परिभाषित की गई है, जो उन नोड्स को प्रदर्शित करने में मदद करती है जिन तक एक विशिष्ट नोड से पहुंचा जा सकता है।

  • 'findReachableNodes' नाम की एक विधि परिभाषित की गई है, जो नोड्स के माध्यम से पुनरावृत्त होती है, और तत्वों पर 'BFS_operation' करती है।

  • 'add_edge' विधियाँ ग्राफ़ में नोड्स जोड़ती हैं।

  • कंसोल पर एक सूची परिभाषित और प्रदर्शित की जाती है।

  • विधि को कॉल किया जाता है और आउटपुट कंसोल पर प्रदर्शित होता है।


  1. पायथन का उपयोग करके सभी नोड्स तक पहुंचने के लिए न्यूनतम संख्या में कोने खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक निर्देशित चक्रीय ग्राफ है, जिसमें n कोने हैं और नोड्स 0 से n-1 तक गिने जाते हैं, ग्राफ को किनारे की सूची द्वारा दर्शाया जाता है, जहां किनारों [i] =(यू, वी) नोड यू से एक निर्देशित किनारे का प्रतिनिधित्व करता है। नोड वी। हमें शिखर का सबसे छोटा सेट ढूंढना है जिससे ग्राफ में सभ

  1. पायथन का उपयोग करके अच्छे लीफ नोड्स जोड़े की संख्या खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है। और दूसरा मान दूरी d. दो अलग-अलग लीफ नोड्स की एक जोड़ी को अच्छा कहा जाता है, जब इन दो नोड्स के बीच का सबसे छोटा रास्ता छोटा या दूरी d के समान होता है। तो, अगर इनपुट पसंद है और दूरी d =4, तो आउटपुट 2 होगा क्योंकि जोड़े (8,7) और (5,6) हैं क्योंकि उनकी पथ लं

  1. पायथन का उपयोग करके समान लेबल वाले उप-वृक्ष में नोड्स की संख्या खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास n नोड्स वाला एक रूटेड सामान्य ट्री है, जिसके नोड्स 0 से n-1 तक गिने जाते हैं। प्रत्येक नोड में लोअरकेस अंग्रेजी अक्षर वाला एक लेबल होता है। लेबल्स को लेबल एरे में इनपुट के रूप में दिया जाता है, जहां लेबल्स [i] में ith नोड के लिए लेबल होता है। पेड़ को किनारे की सूची द्वारा दर्श