728x90

DFS 7

24.06.24 알고리즘

알고리즘DFS루트 노드 혹은 임의 노드에서 다음 브랜치로 넘어가기 전에, 해당 브랜치를 모두 탐색하는 방법스택 or 재귀함수를 통해 구현한다.모든경로를 방문해야 할 경우 사용에 적합하다.시간복잡도인접 행렬 : O(V^2)인접 리스트 : O(V+E)V(Vertex) : 정점, E(Edge) : 간선BFS루트 노드 또는 임의 노드에서 인접한 노드부터 먼저 탐색하는 방법큐를 통해 구현한다.최소 비용(즉, 모든 곳을 탐색하는 것보다 최소 비용이 우선일 때)에 적합하다.시간복잡도인접 행렬 : O(V^2)인접 리스트 : O(V+E)동적 계획법(Dynamic Programming)복잡한 문제를 간단한 여러 개의 문제로 나누어 푸는 방법이다.한 가지 문제에 대해서, 단 한 번만 풀도록 만들어주는 알고리즘이다.똑같은 연..

깊이 우선 탐색_DFS, 넓이 우선 탐색_BFS

DFS(Depth-First Search) 깊이 우선 탐색 알고리즘 특정한 경로를 탐색하다가 특정한 상황에서 최대한 깊숙이 들어가서 노드를 방문 한 후 다시 돌아가 다른 경로로 탐색하는 알고리즘 DFS는 스택 자료구조를 이용한다(보통 재귀함수를 이용해 DFS를 구현한다.) 동작과정 탐색 시작노드를 스택에 삽입 후 방문 처리를 한다. 스택의 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접노드를 스택에 넣고 방문처리를 한다. 방문하지 않은 인접노드가 없으면 최상단 노드를 꺼낸다. 2를 수행할 수 없을때까지 반복한다. def DFS(graph,v,visit): visited[v] = True print(v) for i in graph[v]: if not visited[i]: DFS(graph,i,vi..

728x90