Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- 공 바꾸기 해석
- 해시 테이블 체이닝
- 백준 10813
- 그래프 방향성
- 그래프 활용예시
- 너비우선탐색 python
- 동적 프로그래밍
- 탐욕 알고리즘
- 백준
- 백준 풀이
- 코딩
- 그래프란
- hash function
- 그래프 양방향
- 공 바꾸기
- github기본 #github #브랜치 #CLI #CLI입문
- 깊이우선탐색 python
- 백준 공 바꾸기
- 공 넣기 해석
- 오픈 어드레싱
- 백준 공 넣기
- 공 넣기
- 그래프 무방향성
- 그래프 코드 구현
- 그래프 유형
- 깊이우선탐색 장단점
- 백준 10810
- 해시테이블
- 깊이우선탐색
- 너비우선탐색 장단점
Archives
- Today
- Total
Data Scientist(DS)
S532 Graph 본문
개념 정리
1) 그래프
- 그래프란?
- 노드와 엣지(간선)으로 이루어진 자료구조.

- 트리와 다른 점: 계층이 존재하지 않는다. (=루트노드 x)
- 장점: object간 관계를 표현할 때 유용하다. 예를 들어 SNS나 운송 시스템 같은 경우 적합하다.
- 그래프 코드 구현 시
인접행렬(Adjacency Matrix) 인접리스트 (Adjacency List) 두가지로 구현 가능하다.
- 인접행렬(Adjacency Matrix)
- 연결된 여부는 1로 (만약 가중치가 1보다 크면 1보다 큰 값으로) 연결되지 않으면 0으로 표현한다.
- 메모리 차지가 인접리스트보다 많다. 시간 복잡도 O(n^2) 차지.
- 노드간 엣지가 존재하는지 찾기 위해서 시간 복잡도가 O(1)으로 인접 리스트보다 좋다.
- 인접리스트 (Adjacency List)
- 딕셔너리 형태로 각 노드 (key로 표현)와 연결된 노드의 값을 value로 넣는다.
- 메모리 차지가 인접 리스트보다 좋다. 시간 복잡도 O(n+m) 차지. (m은 각 노드가 연결된 노드 수)
- 엣지 존재 여부의 시간 복잡도는 O(n)으로 인접 행렬보다 안 좋다.
- 인접행렬(Adjacency Matrix)
2) 그래프의 유형
- 방향성
- 한쪽 방향성(one-way)
- 양방향성(bidirectional)

한쪽 방향성(one-way) 방향성 그래프는 순서가 있으므로 마지막 노드(leaf node)가 존재한다.
양방향성(bidirectional)
- 무방향성
- 무방향성 (undirected)그래프는 상호 교환 관계이다.
화살표가 따로 없는 것을 확인 가능하다.
무방향성 (undirected)
- 무방향성 (undirected)그래프는 상호 교환 관계이다.
해야할 것
1) 그래프가 실제 활용되는 예시 찾아보기
2) 그래프로 코드 작성해보기
1) 최단거리 알고리즘, 네트워크 플로우, SNS, 포털 사이트 검색 엔진
2)
'''
그래프 경로 찾기 코드 구현 예시
connection_info = {
'A': ['B', 'C'],2
'B': ['C', 'D'],
'C': ['D'],
'D': ['C'],
'E': ['F'],
'F': ['C']
}
search_route(connection_info, 'B', 'D')
출력값:
['B', 'C', 'D']
'''
def search_route(connection_info, start_node, end_node, route=[]):
route = route + [start_node]
if start_node == end_node:
return None
if not connection_info.__contains__(start_node):
return None
for node in connection_info[start_node]:
if end_node in connection_info[node]:
route = route + [node] + [end_node]
return route
elif end_node not in node:
return None
else:
route = route + [node]
return route
'AI 부트캠프 > Computer Science' 카테고리의 다른 글
| S534 Dynamic Programming, Greedy Algorithm (0) | 2021.12.06 |
|---|---|
| S533 BFS, DFS (0) | 2021.12.06 |
| S531 Hash Table (0) | 2021.12.01 |