SlideShare a Scribd company logo
1 of 16
Download to read offline
By POSTECH Computer Algorithm Team
그래프 탐색
이건규
Graph Search
POSTECH Computer Algorithm Team
Tree
우선순위 큐
상호 배타적 집합
크루스칼
프림
이번에 배울 알고리즘 그러하다
Graph
bfs
dfs
다익스트라
플로이드-워셜
오일러 트레일
해밀턴 경로
POSTECH Computer Algorithm Team
- 정점 Vertex의 집합 V, 간선 Edge의 집합 E로 구성 G(V,E)로 표현
- 가중치 Weight W가 포함될 수 도 있음 G(V,E,W)로 표현
그래프란? Graph
POSTECH Computer Algorithm Team
그래프 종류 종류는더많음
방향 그래프 이분 그래프 트리
POSTECH Computer Algorithm Team
- 차수(degree) : 한 node에 연결된 edge의 수
- 인접(adjacent) : 두 개의 node사이에 edge 존재 여부
- 보행(walk) : node와 edge가 교대로 나오는 열(sequence)이면서, 각 edge가 앞뒤의 node와 연결된 열
- 경로(path) : node가 중복되지 않는 walk
- 트레일(trail) : edge가 중복되지 않는 walk
- 닫힌 보행(closed walk) : 처음과 마지막의 node가 같은 walk
- 닫힌 경로(cycle) : 처음과 마지막의 node가 같은 simple path
- 닫힌 트레일(circuit) : 처음과 마지막의 node가 같은 trail
그래프 용어 용어
POSTECH Computer Algorithm Team
- 철도망 안전성 분석
- 소셜 네트워크 분석
- 인터넷 전송속도 계산
- 한 붓 그리기
- 환전
그래프 어따쓰냐? 그르게나
POSTECH Computer Algorithm Team
- 그래프의 정보로는, G(V,E)의 경우, 노드(node=vertex)의 수, 간선(edge)의 정보가 있다.
- 노드의 수는 int로 저장
- 간선의 정보는?
그래프 구현법
POSTECH Computer Algorithm Team
- 1번째로 간선의 정보를 이차원 배열을 통하여 저장 가능
- Adj[a][b] = (node a와 node b 사이의 간선이 존재 여부)
- 2번째 방법으로 2차원 vecto를 사용하여 저장
- Vector<vector<int> > adj -> adj[a]의 모든 원소는 node a와 연결된 노드의 번호
- G(v,e,w)
그래프 구현법 2
POSTECH Computer Algorithm Team
- 1번째로 간선의 정보를 이차원 배열을 통하여 저장 가능
- Adj[a][b] = (node a와 node b 사이의 간선의 가중치 )
- 2번째 방법으로 2차원 vecto를 사용하여 저장
- Vector<vector<pair<int,int> > > adj -> adj[a]의 모든 원소는 node a와 연결된 노드의 번호+가중치
- 2가지 방법의 차이는?
그래프 구현법 3
POSTECH Computer Algorithm Team
- Adj[a][b] = (node a와 node b 사이의 간선의 가중치)
- A,B 가 주어질 때, 두 노드 사이의 간선을 O(1) 시간으로 파악 가능
- N^2의 공간복잡도 가짐
- Vector<vector<pair<int,int> > > adj -> adj[a]의 모든 원소는 node a와 연결된 노드의 번호+가중치
- A,B가 주어져도 바로 파악 불가
- 총 간선의 수에 비례한 메모리 사용
그래프 구현법 4
POSTECH Computer Algorithm Team
- 그래프 G(V,E)와 임의의 node a가 주어질 때, a로 부터 차례대로 그래프의 node를 탐색하는 알고리즘
- Bfs : 너비 우선 탐색, 탐색하는 node와 a의 거리가 순차적으로 증가
- Dfs : 깊이 우선 탐색, 탐색하는 node와 a의 거리가 증감 반복
BFS DFS란? 탐색 알고리즘
POSTECH Computer Algorithm Team
BFS 모형
POSTECH Computer Algorithm Team
- Queue를 사용
- 시작 점을 queue에 push
- Queue가 빌 때까지 queue.front의 인접한 node중 방문하지 않는 node를 방문 -> queue에 push + 방문 기록
- Queue.front 탐색
- Queue.pop()
- 위 반복
- 시간 복잡도는?
- O(V+E)
BFS 구현 어떻게 할까여
POSTECH Computer Algorithm Team
DFS 모형
POSTECH Computer Algorithm Team
- 재귀함수 혹은 stack으로 구현
- 재귀함수 구현은 쉬우나 시간과 메모리가 오래 걸린다. Stack은 어려우나 성능이 좋다
- 재귀함수 : 인자로 현재 node와 인접 행렬, 방문 기록을 지님
- 현재 node를 방문, 탐색1
- 현재 node에서 갈 수 있고, 방문하지 않은 node를 인자로 함수 호출
- 현재 node 탐색2
- 시간 복잡도?
- O(V+E)
DFS 구현 어케하누
POSTECH Computer Algorithm Team
https://algospot.com/judge/problem/read/DICTIONARY 고대어 사전
https://algospot.com/judge/problem/read/GALLERY 감시 카메라
https://www.acmicpc.net/problem/7576 토마토
https://www.acmicpc.net/problem/7569 토마토마토
예시 문제 problem

More Related Content

What's hot (8)

DNN-Based Prediction Model for Spatial-Temporal Data
DNN-Based Prediction Model for Spatial-Temporal DataDNN-Based Prediction Model for Spatial-Temporal Data
DNN-Based Prediction Model for Spatial-Temporal Data
 
String algorithm
String algorithmString algorithm
String algorithm
 
다익스트라 최단 거리 알고리즘
다익스트라 최단 거리 알고리즘다익스트라 최단 거리 알고리즘
다익스트라 최단 거리 알고리즘
 
점, 선, 면
점, 선, 면점, 선, 면
점, 선, 면
 
MCMF
MCMFMCMF
MCMF
 
2021 2학기 정기 세미나 4주차
2021 2학기 정기 세미나 4주차2021 2학기 정기 세미나 4주차
2021 2학기 정기 세미나 4주차
 
그래프(Graph)와 그래프 알고리즘(단어사다리 문제 해결)
그래프(Graph)와 그래프 알고리즘(단어사다리 문제 해결)그래프(Graph)와 그래프 알고리즘(단어사다리 문제 해결)
그래프(Graph)와 그래프 알고리즘(단어사다리 문제 해결)
 
2021 2학기 정기 세미나 5주차
2021 2학기 정기 세미나 5주차2021 2학기 정기 세미나 5주차
2021 2학기 정기 세미나 5주차
 

Graph search

  • 1. By POSTECH Computer Algorithm Team 그래프 탐색 이건규 Graph Search
  • 2. POSTECH Computer Algorithm Team Tree 우선순위 큐 상호 배타적 집합 크루스칼 프림 이번에 배울 알고리즘 그러하다 Graph bfs dfs 다익스트라 플로이드-워셜 오일러 트레일 해밀턴 경로
  • 3. POSTECH Computer Algorithm Team - 정점 Vertex의 집합 V, 간선 Edge의 집합 E로 구성 G(V,E)로 표현 - 가중치 Weight W가 포함될 수 도 있음 G(V,E,W)로 표현 그래프란? Graph
  • 4. POSTECH Computer Algorithm Team 그래프 종류 종류는더많음 방향 그래프 이분 그래프 트리
  • 5. POSTECH Computer Algorithm Team - 차수(degree) : 한 node에 연결된 edge의 수 - 인접(adjacent) : 두 개의 node사이에 edge 존재 여부 - 보행(walk) : node와 edge가 교대로 나오는 열(sequence)이면서, 각 edge가 앞뒤의 node와 연결된 열 - 경로(path) : node가 중복되지 않는 walk - 트레일(trail) : edge가 중복되지 않는 walk - 닫힌 보행(closed walk) : 처음과 마지막의 node가 같은 walk - 닫힌 경로(cycle) : 처음과 마지막의 node가 같은 simple path - 닫힌 트레일(circuit) : 처음과 마지막의 node가 같은 trail 그래프 용어 용어
  • 6. POSTECH Computer Algorithm Team - 철도망 안전성 분석 - 소셜 네트워크 분석 - 인터넷 전송속도 계산 - 한 붓 그리기 - 환전 그래프 어따쓰냐? 그르게나
  • 7. POSTECH Computer Algorithm Team - 그래프의 정보로는, G(V,E)의 경우, 노드(node=vertex)의 수, 간선(edge)의 정보가 있다. - 노드의 수는 int로 저장 - 간선의 정보는? 그래프 구현법
  • 8. POSTECH Computer Algorithm Team - 1번째로 간선의 정보를 이차원 배열을 통하여 저장 가능 - Adj[a][b] = (node a와 node b 사이의 간선이 존재 여부) - 2번째 방법으로 2차원 vecto를 사용하여 저장 - Vector<vector<int> > adj -> adj[a]의 모든 원소는 node a와 연결된 노드의 번호 - G(v,e,w) 그래프 구현법 2
  • 9. POSTECH Computer Algorithm Team - 1번째로 간선의 정보를 이차원 배열을 통하여 저장 가능 - Adj[a][b] = (node a와 node b 사이의 간선의 가중치 ) - 2번째 방법으로 2차원 vecto를 사용하여 저장 - Vector<vector<pair<int,int> > > adj -> adj[a]의 모든 원소는 node a와 연결된 노드의 번호+가중치 - 2가지 방법의 차이는? 그래프 구현법 3
  • 10. POSTECH Computer Algorithm Team - Adj[a][b] = (node a와 node b 사이의 간선의 가중치) - A,B 가 주어질 때, 두 노드 사이의 간선을 O(1) 시간으로 파악 가능 - N^2의 공간복잡도 가짐 - Vector<vector<pair<int,int> > > adj -> adj[a]의 모든 원소는 node a와 연결된 노드의 번호+가중치 - A,B가 주어져도 바로 파악 불가 - 총 간선의 수에 비례한 메모리 사용 그래프 구현법 4
  • 11. POSTECH Computer Algorithm Team - 그래프 G(V,E)와 임의의 node a가 주어질 때, a로 부터 차례대로 그래프의 node를 탐색하는 알고리즘 - Bfs : 너비 우선 탐색, 탐색하는 node와 a의 거리가 순차적으로 증가 - Dfs : 깊이 우선 탐색, 탐색하는 node와 a의 거리가 증감 반복 BFS DFS란? 탐색 알고리즘
  • 12. POSTECH Computer Algorithm Team BFS 모형
  • 13. POSTECH Computer Algorithm Team - Queue를 사용 - 시작 점을 queue에 push - Queue가 빌 때까지 queue.front의 인접한 node중 방문하지 않는 node를 방문 -> queue에 push + 방문 기록 - Queue.front 탐색 - Queue.pop() - 위 반복 - 시간 복잡도는? - O(V+E) BFS 구현 어떻게 할까여
  • 14. POSTECH Computer Algorithm Team DFS 모형
  • 15. POSTECH Computer Algorithm Team - 재귀함수 혹은 stack으로 구현 - 재귀함수 구현은 쉬우나 시간과 메모리가 오래 걸린다. Stack은 어려우나 성능이 좋다 - 재귀함수 : 인자로 현재 node와 인접 행렬, 방문 기록을 지님 - 현재 node를 방문, 탐색1 - 현재 node에서 갈 수 있고, 방문하지 않은 node를 인자로 함수 호출 - 현재 node 탐색2 - 시간 복잡도? - O(V+E) DFS 구현 어케하누
  • 16. POSTECH Computer Algorithm Team https://algospot.com/judge/problem/read/DICTIONARY 고대어 사전 https://algospot.com/judge/problem/read/GALLERY 감시 카메라 https://www.acmicpc.net/problem/7576 토마토 https://www.acmicpc.net/problem/7569 토마토마토 예시 문제 problem