자격증/PCCP
[Graph] 그래프 표현법(인접행렬 & 인접리스트)
멍멍코
2024. 2. 29. 23:19
인접행렬
Graph: 정점과 정점을 연결하는 간선의 집합(정점과 간선의 집합)
a와 b가 연결되어 있을 때 아래와 같이 표시
graph[a][b]=1
graph[b][a]=1
정점의 개수가 n개면 n*n 배열을 선언해야 함
노드는 100개 밖에 안되는데 100*100 = 10,000을 접근해야 함
인접 행렬은 정점의 개수가 많아질수록 저장 공간이 낭비가 됨
인접 리스트
인접 행렬이 너무 많은 저장 공간을 낭비하기 때문에 인접 리스트 방식을 생각함 > 시간 복잡도, 공간 복잡도가 확 줄어듬
인접 리스트 구현
graph = [[] for _ in range(6)] # [] [] [] [] [] []
for a, b in edges:
graph[a].append(b)
graph[b].append(a)
3번 정점과 연결된 것을 찾기 위해서 아래와 같이 for문을 돌리면 됨 > 시간복잡도와 공간복잡도가 굉장히 줄어듬
for v in graph[3]:
print(v)