자료 구조와 알고리즘
정점이 100만 개, 간선이 300만 개 정도인 도로망처럼 정점 수에 비해 간선이 적은(희소한) 그래프를 메모리에 저장하는 방법으로 적절한 것은?
- A인접 행렬. 두 정점 사이에 간선이 있는지를 O(1)로 조사할 수 있고, 기억 영역도 가장 적게 든다
- B인접 리스트. 기억 영역은 정점 수와 간선 수의 합에 비례하며, 어떤 정점에서 나가는 간선을 차례로 따라가는 데 적합하다
- C인접 행렬. 기억 영역은 간선 수에만 비례한다
정답과 해설 보기
정답: B. 인접 리스트. 기억 영역은 정점 수와 간선 수의 합에 비례하며, 어떤 정점에서 나가는 간선을 차례로 따라가는 데 적합하다
인접 행렬은 정점 수 V에 대해 V×V의 표를 사용하므로, 100만 정점에서는 10¹²개의 원소가 필요하며 원소 하나를 1비트로 해도 약 125 GB가 됩니다. 인접 리스트는 각 정점에 이어진 정점만 나열하므로 기억 영역은 O(V + E)이며, 이 예라면 수백만 건 정도로 충분합니다. 인접 행렬은 간선의 유무를 O(1)로 조사할 수 있는 이점이 있어, 간선이 많은(밀집한) 그래프나 정점이 적은 그래프에 적합합니다. 너비 우선 탐색이나 다익스트라 알고리즘처럼 정점에서 나가는 간선을 차례로 따라가는 처리에서는 인접 리스트가 더 효율적으로 동작합니다.