그래프는 정점(Vertex)과 간선(Edge)으로 이루어진 자료구조로, 각 정점들은 간선으로 연결되어 있는 관계를 나타냅니다.
그래프(Graph)는 데이터 간의 관계를 표현하기 위한 자료구조입니다. 그래프 역시 비선형 구조이며, 트리의 일반적인 개념입니다. 트리도 일종의 그래프 중 하나에 속합니다.
그래프는 현실 세계의 다양한 상호 관계를 모델링하고 표현하는 데 사용됩니다. 그래프는 네트워크, 지도, 소셜 네트워크, 전자 회로 등 다양한 분야에서 활발하게 사용됩니다.
그래프 | 트리 | |
---|---|---|
정의 | 노드와 노드를 연결하는 간선으로 표현되는 자료구조 | 그래프의 한 종류로, 방향성이 있는 비순환 그래프 |
방향성 | 방향 / 무방향 둘 다 존재 | 방향 (하위 자식 노드 방향으로) |
사이클 | 순환 / 비순환 둘 다 존재 | 비순환 |
루트 노드 | 존재하지 않음 | 존재함 |
부모 / 자식 관계 | 존재하지 않음 | 존재함 |
1) 인접 행렬 (adjacency matrix)
N by N 행렬로 2차원 배열 또는 테이블로 이해하면된다.
2) 인접 리스트 (adjacency list)
adjacency list의 list는 링크드 리스트를 의미한다.
인접 행렬 VS 인접 리스트 비교
그래프는 일반적으로 인접 리스트(Adjacency List)나 인접 행렬(Adjacency Matrix)을 활용하여 표현할 수 있습니다. 자바스크립트에서는 객체를 사용하여 인접 리스트를 구현하는 것이 일반적입니다. 예를 들어, 다음은 무방향 그래프를 인접 리스트로 표현하는 예제
class Graph {
constructor() {
this.adjacencyList = new Map();
}
addVertex(vertex) {
this.adjacencyList.set(vertex, []);
}
addEdge(vertex1, vertex2) {
this.adjacencyList.get(vertex1).push(vertex2);
this.adjacencyList.get(vertex2).push(vertex1);
}
}
// 그래프 생성
const graph = new Graph();
// 정점 추가
graph.addVertex('A');
graph.addVertex('B');
graph.addVertex('C');
// 간선 추가
graph.addEdge('A', 'B');
graph.addEdge('B', 'C');