Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình Python để tìm tất cả các thành phần được kết nối bằng cách sử dụng BFS trong một đồ thị vô hướng

Khi được yêu cầu tìm tổng tất cả các nút của cây, một lớp sẽ được tạo và nó chứa các phương thức để đặt nút gốc, thêm các phần tử vào cây, tìm kiếm một phần tử cụ thể và thêm các phần tử của cây vào tìm tổng và như vậy. Một phiên bản của lớp có thể được tạo để truy cập và sử dụng các phương thức này.

Dưới đây là một minh chứng về điều tương tự -

Ví dụ

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)

Đầu ra

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

Giải thích

  • Một lớp có tên là ‘Graph_ architects’ được xác định với phương thức ‘_init_’.

  • Một phương thức có tên là ‘DFS_Utility’ được định nghĩa để giúp thực hiện việc duyệt theo độ sâu đầu tiên trên các phần tử của biểu đồ.

  • Một phương pháp khác có tên là ‘add_edge’ được xác định để giúp thêm các nút vào biểu đồ.

  • Một phương pháp khác có tên là ‘find_connected_components’ được định nghĩa để giúp xác định các nút được kết nối với một nút cụ thể.

  • Một phiên bản của ‘Graph_ Structure’ được tạo.

  • Các phần tử được thêm vào nó bằng phương thức ‘add_edge’.

  • Nó được hiển thị trên bảng điều khiển.

  • ‘Find_connected_components’ được gọi và đầu ra được hiển thị trên bảng điều khiển.