Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรม Python เพื่อค้นหาโหนดทั้งหมดที่เข้าถึงได้จากโหนดโดยใช้ BFS ใน Graph


เมื่อจำเป็นต้องค้นหาผลรวมของโหนดทั้งหมดของต้นไม้ คลาสจะถูกสร้างขึ้นและประกอบด้วยวิธีการตั้งค่าโหนดรูท เพิ่มองค์ประกอบให้กับต้นไม้ ค้นหาองค์ประกอบเฉพาะ และเพิ่มองค์ประกอบของต้นไม้ หาผลรวมและอื่น ๆ สามารถสร้างอินสแตนซ์ของคลาสเพื่อเข้าถึงและใช้เมธอดเหล่านี้ได้

ด้านล่างนี้เป็นการสาธิตสิ่งเดียวกัน -

ตัวอย่าง

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' ที่ช่วยเพิ่มองค์ประกอบให้กับทรี

  • วิธี "BFS_operation" ช่วยในการสำรวจต้นไม้โดยใช้วิธีการค้นหาแบบกว้างก่อน

  • มีการกำหนดวิธีการชื่อ 'displayReachableNodes' ที่ช่วยแสดงโหนดที่สามารถเข้าถึงได้จากโหนดเฉพาะ

  • มีการกำหนดวิธีการที่ชื่อ 'findReachableNodes' ซึ่งวนซ้ำผ่านโหนดและดำเนินการ 'BFS_operation' ในองค์ประกอบ

  • วิธีการ "add_edge" จะเพิ่มโหนดให้กับกราฟ

  • รายการถูกกำหนดและแสดงบนคอนโซล

  • มีการเรียกเมธอดและเอาต์พุตจะแสดงบนคอนโซล