[자료구조] 그래프(DFS,BFS)
업데이트:
그래프
- 그래프는 자료구조의 일종이다.
- 정점 ( Node, Vertex ) 과 간선(Edge)으로 이루어져 있다.
- G=(V,E)로 나타낸다.
- 차수는 정점과 연결되어 있는 간선의 개수를 의미한다.
그래프의 표현
- 위와같은 그래프는 정점이 6개, 간선이 8개있다.
- 정점 : { 1, 2, 3, 4, 5, 6 }
- 간선 : { (1,2), (1,5), (2,3), (2,4), (2,5), (3,4), (4,5), (4,6) }
인접행렬
- 인접행렬은 정점의 개수를 V라고 했을 때, V x V 크기의 2차원 배열을 사용한다.
- A[i][j] = 1 ( i->j 간선이 있을때 ), 0 (없을때)
- 2차원 배열로 나타낸 A[i][j]
인접 리스트
- 리스트를 이용해서 구현한다.
- A[i] = i와 연결된 정점을 리스트로 포함하고 있다.
- 리스트는 크기를 동적으로 변경할 수 있어야 한다.
- 링크드 리스트나 길이를 동적으로 변경할 수 있는 배열을 사용한다.
- C++에서는 vector를 사용하면 된다.
- 예시
A[1] 2 5
A[2] 1 3 4 5
A[3] 2 4
A[4] 3 5 2 6
A[5] 1 2 4
A[6] 4
간선 리스트
- 간선을 모두 저장하고 있는 배열
- 각 간선의 앞 정점을 기준으로 개수를 센다
- 예시
댓글남기기