일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- tcping
- ojdbc
- mysql
- Database
- 스프링부트
- restapi
- install
- Maven
- Oracle11g
- development
- 스프링부트 #springboot #project #Intellij
- oracle
- HATEOAS
- apache
- springboot
- SpringInitializer
- springboot #controller #jsp
- postman
- 웹개발
- undefined
- RESTful
- Web
- SpringSecurity
- Developer
- 스프링시큐리티
- Tomcat #SpringFramework
- sqldeveloper
- mssql
- 환경변수
- IntelliJ
Archives
- Today
- Total
여백에 도장 찍기
DFS (깊이 우선 탐색) 본문
DFS(Depth-First Search), 깊이 우선 탐색은 이름 그대로 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다.
DFS는 스택(Stack) 자료구조를 이용한다.
탐색 과정
1. 탐색 시작 노드를 스택에 삽입하고 방문 처리 한다.
2. 스택의 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접 노드를 스택에 넣고 방문 처리를 한다.
방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼낸다.
3. 2번 과정을 더 이상 수행할 수 없을 때까지 반복.
DFS는 스택을 이용하는 알고리즘이기 때문에 실제 구현은 재귀 함수를 이용했을 때 간결한 구현이 가능.
DFS - JAVA 구현
// 깊이 우선 탐색
public class dfs {
private static int[][] graph = {{}, {2,3,8}, {1,7}, {1,4,5}, {3,5}, {3,4}, {7}, {2,6,8},{1,7}};
private static boolean[] visited = {false, false, false, false, false, false, false, false, false, false};
public static void dfs(int[][] graph, int v, boolean[] visited){
visited[v] = true;
System.out.println(v+" ");
for(int a : graph[v]){
if(!visited[a])
dfs(graph, a, visited);
}
}
public static void main(String[] args) {
dfs(graph, 1, visited);
}
}
Comments