[javascript] 그래프 인접 행렬 (Graph Adjacency Matrix) 데이터 구조
그래프는 노드(node)와 간선(edge)으로 구성된 추상적인 자료 구조입니다. 그래프는 컴퓨터 과학 및 다양한 분야에서 네트워크와 관련된 문제를 풀 때 많이 사용됩니다. 그래프를 나타내는 방법 중 하나로 인접 행렬(Adjacency Matrix)이라는 방법이 있습니다. 이 방법은 노드와 간선의 연결 상태를 2차원 배열로 나타내는 방법입니다.
인접 행렬의 특징
인접 행렬은 그래프의 연결 상태를 나타내기 위해 2차원 배열을 사용합니다. 배열의 각 요소는 노드 사이의 연결 상태를 나타내며, 연결되어 있을 경우 1 또는 간선의 가중치 값이 저장됩니다. 반면, 노드 사이에 연결이 없는 경우에는 0으로 표시됩니다. 이러한 방식으로 모든 노드 간의 연결 상태를 나타낼 수 있습니다.
예시: 그래프 인접 행렬 구현
아래는 JavaScript를 사용하여 그래프의 인접 행렬을 표현하는 간단한 예시 코드입니다.
// 그래프의 크기
const size = 5;
// 인접 행렬 초기화
let adjacencyMatrix = Array.from(Array(size), () => new Array(size).fill(0));
// 간선 추가
function addEdge(matrix, start, end) {
matrix[start][end] = 1;
matrix[end][start] = 1; // 무방향 그래프일 경우
}
// 간선 삭제
function removeEdge(matrix, start, end) {
matrix[start][end] = 0;
matrix[end][start] = 0; // 무방향 그래프일 경우
}
위 코드에서 adjacencyMatrix
는 2차원 배열로, 노드 간 연결 상태를 나타냅니다. addEdge
함수는 두 노드를 연결하고, removeEdge
함수는 두 노드의 연결을 삭제합니다.
결론
그래프의 인접 행렬은 그래프를 효율적으로 표현하고 다양한 연산을 수행할 수 있는 강력한 자료구조입니다. 이를 활용하여 다양한 그래프 알고리즘 및 문제를 해결할 수 있습니다.
참고 문헌:
- Skiena, S. S. (2008). The Algorithm Design Manual.
- Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to Algorithms.