■ 의의
현실 세계의 사물이나 추상적인 개념 간의 '연결 관계'를 표현
트리와 굉장히 유사한데 트리보다 약간 넓은 개념으로 보면 됨. 트리가 약간 그래프의 일종이라고 보는게 좀 더 정확할듯.
■ 구성
(1) 정점 (Vertex) : 데이터를 표현 (사물, 개념 등)
(2) 간선 (Edge) : 정점들을 연결하는데 사용
[사용 예시]
1. 소셜 네트워크 관계도
2. 지하철 노선도
3. 최적 길 판단
4. 다수 간의 호감도 등
■ 종류
(1) 가중치 그래프 (Weighted Graph)
정점과 정점 사이를 잇는 간선에 가중치(비용)가 주어진 그래프를 뜻한다.
(2) 방향 그래프 (Directed Graph)
정점과 정점 사이를 잇는 간선에 방향이 주어진 그래프를 뜻한다.
■ 표현 방법
(1) 인접 리스트 : 서로 연결되어 있는 애들만 데이터를 넣어주고 이중 벡터로 관리한다. 이를 이용해 연결되어 있는지 확인할려면 해당 버텍스를 담고있는 벡터 컨테이너에 접근 후 순회해야한다.
(2) 인접 행렬 : 연결 여부를 나타내는 정점 목록을 행렬(matrix) 형태로 관리한다. 메모리 소모는 심하지만, 빠른 접근이 가능하다
■ 순회 (traversal) 방법
모든 정점을 방문하는 작업이다. 그래프의 정점들은 트리와 달리 양방향일 수 있다. 그렇기에 탐색 중 자기 자신으로 돌아올 가능성이 있기에 동일한 정점이 다시 처리되지 않도록 정점을 방문(vistied) 후 혹은 발견 (discovered) 후 표시를 해줘 중복 방문을 회피한다.
대표적으로 DFS, BFS 두 가지 방법이 있다.
'Computer Science > Data Structure' 카테고리의 다른 글
[자료구조] 이진탐색트리 (Binary Search Tree) (0) | 2024.03.29 |
---|---|
[자료구조] 우선 순위 큐 (Priority Queue) (0) | 2024.03.25 |
[자료구조] 순환적, 반복적 피보나치 수열 구현 및 성능 비교, 순환문과 반복문 비교, 하노이탑 (0) | 2024.02.03 |
[자료구조] 자료구조의 이해와 자료 표현 (수치 및 진수) (1) | 2024.01.21 |