[javascript] 그래프 (Graph) 데이터 구조
그래프는 노드와 엣지로 이루어진 비선형 데이터 구조입니다. 노드는 데이터를 나타내고, 엣지는 노드들 간의 관계를 나타냅니다. 그래프는 다양한 분야에서 활발하게 활용되며, 특히 네트워크, 지리정보시스템, 소셜 네트워크 등에서 사용됩니다.
그래프의 종류
- 무방향 그래프 (Undirected Graph): 엣지에 방향이 없는 그래프입니다. 두 노드 사이의 연결 관계만을 나타냅니다.
- 방향 그래프 (Directed Graph): 엣지에 방향이 있는 그래프로, 노드 A에서 노드 B로의 방향성을 가집니다.
- 가중 그래프 (Weighted Graph): 엣지에 가중치가 할당된 그래프로, 각 엣지에는 가중치가 존재합니다.
- 이중 그래프 (Bipartite Graph): 노드가 두 그룹으로 나뉘어지며, 각 엣지는 한 그룹의 노드와 다른 그룹의 노드 사이를 연결합니다.
그래프의 표현 방법
그래프는 다양한 방식으로 구현될 수 있습니다. 일반적으로 아래와 같은 방식으로 표현됩니다.
- 인접 리스트 (Adjacency List): 각 노드마다 해당 노드와 인접한 노드들의 리스트를 가지는 방법입니다.
- 인접 행렬 (Adjacency Matrix): 2차원 배열을 사용하여 각 엣지의 존재 여부를 나타내는 방법입니다.
그래프의 연산
그래프는 다양한 연산을 수행할 수 있습니다. 대표적인 연산으로는 노드 추가, 엣지 추가, 엣지 삭제, 인접한 노드 찾기, 최단 경로 찾기 등이 있습니다.
그래프는 매우 유연하고 다양한 문제에 적용 가능한 데이터 구조이며, 효율적인 알고리즘을 통해 다양한 문제를 해결할 수 있습니다.