코딩테스트/알고리즘

파이선 DFS 설명 및 구현

메이져드컴싸 2022. 1. 13. 15:41

※ DFS란?

 

DFS.

 

Depth First Search

 

말그대로 깊이 우선 탐색

 

그래프에서 가장 깊은 부분을 먼저 탐색한다

 

 

※ DFS구현?

- DFS는 스택 or 재귀를 통해서 구현한다

=> 스택을 재귀로도 구현하니까 당연한말이다.

 

※ DFS 과정은?

 

1. 탐색을 시작할 노드를 스택에 삽입하고 방문 처리한다

2. 스택의 최상단 노드에 인접한 노드 중에 방문하지 않은 노드가 있으면 방문 처리하고 스택에 집어 넣는다

- 최상단 노드에 인접한 노드 중 방문하지 않는 노드가 없다면 스택에서 꺼낸다.

3. 더이상 2번을 수행할 수 없을 때까지 반복한다.

 

※ DFS 구현

def dfs(graph, v, visited):
	visited[v] = True
    print(v, ends=' ')
    
    for i in graph[v]:
    	if not visited[i]:
        	dfs(graph, i, visited)
            
graph = [
	[],
    [2,3,8],
    [1,7],
    [1,4,5],
    [3,5],
    [3,4],
    [7],
    [2,6,8],
    [1,7]
]

visited = [False]*9

dfs(graph,1,visited)