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

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


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

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

ตัวอย่าง

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

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

      visited[v] = True

      temp.append(v)

      for i in self.adj[v]:
         if visited[i] == False:
            temp = self.DFS_Utililty(temp, i, visited)
      return temp

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

   def connected_components(self):
      visited = []
      conn_compnent = []
      for i in range(self.V):
         visited.append(False)
      for v in range(self.V):
         if visited[v] == False:
            temp = []
            conn_compnent.append(self.DFS_Utililty(temp, v, visited))
      return conn_compnent

my_instance = Graph_struct(5)
my_instance.add_edge(1, 0)
my_instance.add_edge(2, 3)
my_instance.add_edge(3, 0)
print("1-->0")
print("2-->3")
print("3-->0")
conn_comp = my_instance.connected_components()
print("The connected components are :")
print(conn_comp)

ผลลัพธ์

1-->0
2-->3
3-->0
The connected components are :
[[0, 1, 3, 2], [4]]

คำอธิบาย

  • มีการกำหนดคลาสชื่อ 'Graph_struct'

  • มีการกำหนดเมธอดชื่อ 'add_edge' ที่ช่วยเพิ่มองค์ประกอบให้กับทรี

  • มีการกำหนดวิธีการ 'DFS_Utility' ที่ช่วยสำรวจต้นไม้โดยใช้วิธีการค้นหาในเชิงลึกก่อน

  • มีการกำหนดเมธอดชื่อ 'connected_components' ที่ช่วยระบุโหนดที่เชื่อมต่อถึงกัน

  • มีการสร้างอินสแตนซ์ของคลาสและเรียกใช้เมธอด

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

  • ส่วนประกอบที่เชื่อมต่อจะแสดงเป็นเอาต์พุตบนคอนโซล