하나하나 다 탐색을 해야될경우 사용합니다. ( 순열, 조합 구현 )
def dfs_recursive(graph, start, visited = []):
## 데이터를 추가하는 명령어 / 재귀가 이루어짐
visited.append(start)
for node in graph[start]:
if node not in visited:
dfs_recursive(graph, node, visited)
return visited
최단경로(다익스트라, 플로이드)를 찾는데 활용합니다.
from collections import deque
def bfs(graph, start_node):
visit = list()
dq=deque()
dq.append(start_node)
while dq:
node = dq.popleft(0)
if node not in visit:
visit.append(node)
dq.append(graph[node])
return visit
저의 개인적인 경험으로(저는 BFS를 선호합니다) 대부분의 경우 DFS와 BFS 어느것을 선택해도 무방한 문제들이 많습니다
완전탐색 문제를 풀때 선호하고(대표적으로 조합 순열 구현)https://hstory0208.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EA%B9%8A%EC%9D%B4-%EC%9A%B0%EC%84%A0-%ED%83%90%EC%83%89DFS%EC%99%80-%EB%84%88%EB%B9%84-%EC%9A%B0%EC%84%A0-%ED%83%90%EC%83%89BFS
https://github.com/gyoogle/tech-interview-for-developer/blob/master/Algorithm/DFS%20%26%20BFS.md