그래프
그래프는 수학, 컴퓨터 과학, 그리고 네트워크 이론 등 다양한 분야에서 사용되는 추상적인 자료 구조이자 모델이다. 그래프는 객체(정점 또는 노드)와 이들 객체 간의 관계(간선 또는 에지)를 나타내는 데 사용된다.
정의 및 기본 요소:
- 정점 (Vertex/Node): 그래프를 구성하는 기본 단위로, 객체를 나타낸다. 정점은 이름을 가질 수 있으며, 데이터를 저장할 수도 있다.
- 간선 (Edge): 두 정점 간의 관계를 나타낸다. 간선은 방향이 있을 수도 (방향 그래프) 없을 수도 (무방향 그래프) 있다. 간선은 가중치를 가질 수도 있는데, 이는 두 정점 간의 연결 강도 또는 거리를 나타낸다.
그래프의 종류:
- 무방향 그래프 (Undirected Graph): 간선에 방향이 없는 그래프. 두 정점 사이를 양방향으로 이동할 수 있다.
- 방향 그래프 (Directed Graph): 간선에 방향이 있는 그래프. 한 방향으로만 이동할 수 있다.
- 가중 그래프 (Weighted Graph): 간선에 가중치가 부여된 그래프.
- 부분 그래프 (Sub Graph): 그래프의 일부 정점과 간선으로 이루어진 그래프
- 완전 그래프 (Complete Graph): 그래프 내 모든 정점쌍이 간선으로 연결된 그래프
- 연결 그래프 (Connected Graph): 그래프 내 모든 정점 쌍이 경로로 연결된 그래프
- 트리 (Tree): 사이클이 없는 연결 그래프.
- 사이클 (Cycle): 시작 정점과 끝 정점이 같은 경로.
그래프의 표현:
- 인접 행렬 (Adjacency Matrix): 정점 간의 연결 관계를 행렬 형태로 표현한다.
- 인접 리스트 (Adjacency List): 각 정점에 연결된 다른 정점들의 목록을 리스트 형태로 표현한다.
그래프의 활용:
그래프는 다양한 문제 해결에 활용된다.
- 소셜 네트워크 분석: 사람들 간의 관계를 그래프로 표현하여 분석.
- 지도 및 경로 탐색: 도시 간의 도로망을 그래프로 표현하여 최단 경로를 찾음.
- 컴퓨터 네트워크: 컴퓨터 간의 연결을 그래프로 표현하여 네트워크 트래픽을 관리.
- 웹 검색: 웹 페이지 간의 링크를 그래프로 표현하여 검색 엔진의 동작을 최적화.
- 데이터베이스: 데이터베이스 개체 간의 관계를 표현.
그래프 관련 알고리즘:
- 너비 우선 탐색 (BFS): 시작 정점으로부터 가까운 정점부터 차례대로 탐색하는 알고리즘.
- 깊이 우선 탐색 (DFS): 시작 정점으로부터 깊게 탐색하는 알고리즘.
- 최단 경로 알고리즘 (Dijkstra, Bellman-Ford, Floyd-Warshall): 두 정점 간의 최단 경로를 찾는 알고리즘.
- 최소 신장 트리 알고리즘 (Kruskal, Prim): 그래프 내의 모든 정점을 연결하는 최소 가중치 간선들의 집합을 찾는 알고리즘.
그래프 이론은 계속 발전하고 있으며, 다양한 분야에서 새로운 응용이 발견되고 있다.