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

โปรแกรม Python เพื่อค้นหาส่วนประกอบที่เชื่อมต่อทั้งหมดโดยใช้ BFS ในกราฟที่ไม่ได้บอกทิศทาง


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

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

ตัวอย่าง

class Graph_structure:

   def __init__(self, V):
      self.V = V
      self.adj = [[] for i in range(V)]

   def DFS_Utility(self, temp, v, visited):

      visited[v] = True

      temp.append(v)

      for i in self.adj[v]:
         if visited[i] == False:

            temp = self.DFS_Utility(temp, i, visited)
      return temp

   def add_edge(self, v, w):
      self.adj[v].append(w)
      self.adj[w].append(v)

   def find_connected_components(self):
      visited = []
      connected_comp = []
      for i in range(self.V):
         visited.append(False)
      for v in range(self.V):
         if visited[v] == False:
            temp = []
            connected_comp.append(self.DFS_Utility(temp, v, visited))
      return connected_comp

my_instance = Graph_structure(6)
my_instance.add_edge(1, 0)
my_instance.add_edge(2, 3)
my_instance.add_edge(3, 4)
my_instance.add_edge(5, 0)
print("There are 6 edges. They are : ")
print("1-->0")
print("2-->3")
print("3-->4")
print("5-->0")

connected_comp = my_instance.find_connected_components()
print("The connected components are...")
print(connected_comp)

ผลลัพธ์

There are 6 edges. They are :
1-->0
2-->3
3-->4
5-->0
The connected components are...
[[0, 1, 5], [2, 3, 4]]

คำอธิบาย

  • มีการกำหนดคลาสชื่อ 'Graph_structure' ด้วยเมธอด '_init_'

  • มีการกำหนดเมธอดที่ชื่อว่า 'DFS_Utility' ซึ่งช่วยในการสำรวจความลึกครั้งแรกบนองค์ประกอบของกราฟ

  • มีการกำหนดวิธีการอื่นที่เรียกว่า "add_edge" ซึ่งช่วยเพิ่มโหนดให้กับกราฟ

  • มีการกำหนดวิธีการอื่นที่ชื่อว่า 'find_connected_components' ที่ช่วยระบุโหนดที่เชื่อมต่อกับโหนดเฉพาะ

  • อินสแตนซ์ของ "โครงสร้าง Graph_" ถูกสร้างขึ้น

  • เพิ่มองค์ประกอบเข้าไปโดยใช้วิธี "add_edge"

  • จะแสดงบนคอนโซล

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