[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 함수는 두 노드의 연결을 삭제합니다.

결론

그래프의 인접 행렬은 그래프를 효율적으로 표현하고 다양한 연산을 수행할 수 있는 강력한 자료구조입니다. 이를 활용하여 다양한 그래프 알고리즘 및 문제를 해결할 수 있습니다.


참고 문헌: