그래프(Graph) 표현
그래프의 표현 방법에는 인접 행렬, 인접 리스트, 인접 배열이 존재합니다.
인접 행렬(adjacency matrix) 방법
간선 (i, j)가 존재하면 원소(i, j) = 1을 저장하며 그렇지 않으면 원소(i, j) = 0이 됩니다.
정점의 총 개수가 N이라고 할 때 인접 행렬은 N X N 행렬입니다.
무방향 그래프의 경우 대각선 행렬을 중심으로 대칭적이지만 방향 그래프의 경우 반드시 대칭적이지 않고 비대칭일 수도 있습니다.
또한 가중치가 있는 그래프의 경우 원소(i, j)는 1 대신에 가중치를 저장합니다.
인접 리스트(adjacency list) 방법
정점의 총 개수가 N이라고 할 때 각 정점에 인접한 정점들을 N개의 연결리스트로 표현한 방법입니다.
i번째 리스트는 정점 i에 인접한 정점들을 리스트로 연결해 놓은 것입니다.
또한 가중치가 있는 그래프의 경우 리스트에 가중치도 저장합니다.
(무방향 그래프인 경우 하나의 간선 당 노드가 2개씩 생기며, 방향 그래프인 경우 하나의 간선 당 노드가 1개씩 생깁니다)
인접 배열(adjacency array) 방법
정점의 총 개수가 N이라고 할 때 N개의 연결 배열로 표현합니다.
i번째 배열은 정점 i에 인접한 정점들의 집합을 나타냅니다.
또한 가중치가 있는 그래프의 경우 리스트에 가중치도 저장합니다.
'컴퓨터공학 💻 > 자료구조' 카테고리의 다른 글
[자료구조] 그래프 (Graph) 정의 (0) | 2021.06.10 |
---|---|
[자료구조] 우선순위 큐 응용 : 힙 정렬(heap sort), 머신 스케줄링(Machine Scheduling) (0) | 2021.06.10 |
[자료구조] 우선순위 큐 (priority queue), 히프의 삽입과 삭제 (0) | 2021.06.02 |
[자료구조] 이진 탐색 트리 - 탐색, 삽입, 삭제 연산 (3) | 2021.05.31 |
[자료구조] 스레드 이진 트리(threaded binary tree) (0) | 2021.05.22 |