Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

무방향 그래프에서 DFS를 사용하여 연결된 모든 구성 요소를 찾는 Python 프로그램

<시간/>

무방향 그래프에서 깊이 우선 탐색을 사용하여 연결된 모든 구성 요소를 찾아야 하는 경우 값을 초기화하고, 깊이 우선 탐색을 수행하고, 연결된 구성 요소를 찾고, 그래프에 노드를 추가하는 등의 메서드가 포함된 클래스가 정의됩니다. 클래스의 인스턴스를 생성하고 메서드에 액세스하고 작업을 수행할 수 있습니다.

아래는 동일한 데모입니다 -

예시

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'라는 메서드가 정의되어 있습니다.

  • 클래스의 인스턴스가 생성되고 메서드가 호출됩니다.

  • 노드가 콘솔에 표시됩니다.

  • 연결된 구성 요소는 콘솔에 출력으로 표시됩니다.