300x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 구글 킥스타트
- 코딩테스트
- DFS
- 순열
- PYTHON
- google coding competition
- 운영체제
- 파이썬
- dp
- BFS
- 프로그래머스
- kick start
- 코딩 테스트
- 킥스타트
- OS
- 리눅스
- CSS
- 동적프로그래밍
- 코딩
- 딥러닝
- linux
- nlp
- 그래프
- AI
- 네트워크
- 브루트포스
- 알고리즘
- 백준
- 동적 프로그래밍
- 프로그래밍
Archives
- Today
- Total
오뚝이개발자
[자료구조 및 알고리즘] CH7. Graph 본문
728x90
300x250
그래프란?
- finite set of vertex(V)와 edge(E)로 이루어진 것 - graph G : (V,E)
Edge(간선)란?
- 집합 E는 VxV의 subset이다.
- 일종의 relation이라 볼 수 있다.
directed graph(digraph) vs. undirected graph
- 그래프에서 방향성이 중요한지의 여부에 따라 구분
path란?
- 그래프에서 node의 sequence다. 단, 각 노드를 연결하는 edge가 있어야 함
Connected graph vs. Disconnected graph
- connected graph : 모든 노드 사이에 path가 존재(disconnected는 그 반대)
- disconnected graph는 여러 개의 connected component로 구성
그래프에서 cycle이란?
- 마지막 노드와 시작 노드가 같은 path
- cycle이 존재하면 그 그래프는 cyclic, 존재하지 않으면 acyclic이라 함
그래프 표현법(Graph representation) 두 가지
- Adjacency matrix 이용(인접행렬) : 그래프를 2차 행렬(A)로 표현
- 장점 : 구현이 간단하고 두 노드가 연결되어있는지를 행렬 원소에 바로 접근해 알 수 있다.
- 단점 : O(n^2)의 메모리 소모
- Adjacency list 이용(인접리스트) : 그래프를 linked list로 표현.
- 장점 : 메모리 절약
- 단점 : 특정 노드가 연결되어있는지를 파악하기 위해 최대 O(n) 시간이 소요될 수 있다.
그래프의 degree
- 노드 x의 degree : x와 연결된 edge 갯수
- indegree : x로 들어오는 edge 갯수
- outdegree : x로부터 나가는 edge 갯수
Graph traversal(그래프 탐색)의 두 가지 방법 - 그래프를 탐색해 연결성(Connectivity) 조사
- DFS - 재귀 또는 스택으로 구현
- BFS - 큐로 구현
DFS, BFS 실습
- DFS
m.blog.naver.com/ndb796/221230945092
- BFS
m.blog.naver.com/ndb796/221230944971
728x90
300x250
'CS 기초 > 자료구조 및 알고리즘' 카테고리의 다른 글
[자료구조 및 알고리즘] CH9. Sorting and Searching (0) | 2020.10.26 |
---|---|
[자료구조 및 알고리즘] CH8. Algorithm analysis (0) | 2020.10.26 |
[자료구조 및 알고리즘] CH6. Tree (0) | 2020.10.23 |
[자료구조 및 알고리즘] CH5. Map and Hash table (0) | 2020.10.22 |
[자료구조 및 알고리즘] CH4. Stack and Queue (0) | 2020.10.22 |
Comments