반응형
그래프 용어 정리
경로 : 정점 A에서 B로 가는 경로
사이클 : 정점 A에서 다시 A로 돌아오는 경로
단순경로(사이클) : 같은 정점을 두 번 이상 방문하지 않는 경로(사이클)
차수 : 정점과 연결되어 있는 간선의 수
In-degree : 들어오는 간선의 수
Out-degree : 나가는 간선의 수
인접 행렬과 인접 리스트
1. 인접행렬 (Adjacency-matrix)
- 인접 행렬이란, 이름 그대로 그래프의 연결 관계를 행렬로 표현하여 이차원 배열로 나타내는 방식을 의미한다.
- 대각 성분을 기준으로 대칭인 성질을 갖는다.
- Adj_mat[i][j] : 노드i 에서 노드j로 가는 간선이 존재할 경우 1이고 아니면 0이다.
2. 인접 리스트 (Adjacency-list)
- 각 노드에 연결된 노드를 리스트로 포함하고 있다.
- 리스트는 크기를 동적으로 변경할 수 있는 배열이나(리스트) or 링크드 리스트를 사용한다. (파이썬)
[전체 노드의 개수가 V개, 간선의 개수가 E개라고 가정]
인접 행렬(Adjacency-matrix) | 인접 리스트(Adjacency-list) | |
공간 복잡도 | O(V*V) | O(E) => 간선의 개수에 비례 |
한 정점과 연결된 모든 간선 찾기 | O(V) => 1개의 행 만큼 들여다 봐야 함 | O(차수) => 연결된 간선의 개수 |
한 정점과 다른 정점 사이의 간선 찾기 | O(1) => 좌표만 확인 | O(차수)=> 연결된 간선에서 찾기 |
- 인접 리스트가 인접 행렬보다 공간을 적게 차지하고, 연결된 간선을 찾는 시간도 적게 걸린다.
반응형
'코딩 테스트 > 알고리즘' 카테고리의 다른 글
[알고리즘 파이썬] 다이나믹 프로그래밍 (0) | 2021.02.08 |
---|---|
[알고리즘 파이썬] input 속도 높이기 (0) | 2021.01.30 |
[알고리즘 파이썬] 위상 정렬 (0) | 2020.11.08 |
수식 표현 방법 (중위, 전위, 후위) (0) | 2020.07.25 |
Array List vs Linked List (0) | 2020.07.25 |