그래프
- “관계” 를 그래프로 추상화 하여 다룰 수 있음 (자료구조의 정의)
- 전기회로의 분석, 최단 거리 탐색, 프로젝트 계획, 스케줄링, 운송, 컴퓨터 네트워크 시뮬레이션 등등
그래프의 정의
- 그래프 G는 하나 이상의 정점(혹은 노드) 을 포함하는 집합 V 와 두 정점의 쌍으로 구성되는 간선을 포함하는 집합 E의 순서 쌍으로 정의함
- 그래프 G = (V ,E)
그래프의 정의 - 정점과 간선
V = {a,b,c,d} (정점의 집합)
E = {1,2,3,4,5,6,7} (간선의 집합)
G = (V,E) = ({a,b,c,d} , {1,2,3,4,5,6,7}) (정점과 간선의 합)
그래프 용어의 정의
- 간선은 두 정점을 연결하는 선
- 그래프는 연결(간선)에 방향성이 없는 무방향 그래프와 방향성을 갖는 방향 그래프가 있음
- 무방향 그래프는 간선의 방향성이 없음
- 방향 그래프는 간선의 방향성이 있음
- 무방향 그래프의 간선은 실선으로 나타내고
- 방향 그래프의 간선은 화살표로 나타냄
- 간선은 두 정점 쌍으로 나타냄
- 무방향 그래프일 때는 정점 쌍이 순서를 나타낼 필요가 없으므로 어떤 간선이 두 정점 v1,v2를 잇는 것이라면 {v1,v2} 로 나타냄
- 방향 그래프의 간선은 순서 쌍 (v1,v2) 로 표시함
그래프 연결 - 방향 무방향 혼합 그래프
- 방향 그래프
G(b) = (V,E) , V = {v1,v2} , E = {(v1 , v2)}
G(e) = (V,E)
V = {v1,v2,v3,v4},
E = {(v1,v2) , (v,2,v4) , (v2,v3) , (v4,v3) , (v3,v1)}
- 무방향 그래프
G(f) = (V,E),
V = {v1,v2,v3,v4,v5} ,
E = {{v1,v2} , {v1,v3} , {v2,v3} , {v2,v4} , {v3,v4}}
- 혼합 그래프
G(d) = (V,E),
V = {v1,v2,v3,v4} ,
E = {(v2 ,v1) , (v2,v3) , {v2,v4} , {v1,v3} , (v4,v3)}
다중 그래프
- 다중 그래프 : 두 정점을 잇는 간선이 여러 개인 그래프
- 방향 다중 그래프 : 방향성을 갖는 간선으로 이루어진 다중 그래프
- 무방향 다중 그래프 : 방향성이 없는 간선으로 이루어진 다중 그래프
가중 그래프
- 가중 그래프 : 간선이 가중치를 갖는 그래프
그래프의 성질
- n개의 정점을 갖는 무방향 그래프에서 v1 != vj 인 서로 다른 무순서 쌍 {vi , vj} 의 최대 개수
→ nC2 = 2/n(n-1)
- n개의 정점을 갖는 방향 그래프에서 v1 != vj 인 서로 다른 순서 쌍 (vi , vj) 의 최대 개수
→ nP2 = n(n-1)
- 완전 그래프 : 모든 정점들이 간선으로 서로 연결된 그래프
- 완전 그래프인 (만일 정점의 수를 n이라고 하면) 무방향 그래프의 간선 개수
→ 2/n(n-1)
- 두 정점 vi 와 vj 가 서로 인접한다.
- 독립 정점 : 다른 어떤 정점과도 인접하지 않은 정점
- 널(null) 그래프 : 독립 정점만으로 구성한 그래프이며, 간선 집합E는 공집합임
- 경로(path) : 임의의 두 정점을 연결하는 어떤 간선의 끝 정점(해당 간선의 머리) 에서 그 간선의 시작 정점(해당 간선의 꼬리) 으로 이어지는 간선의 연속(열)
- 무방향 그래프 G에 대해 E(G) 에 속하는 순서 없는 간선 {vp,v1},{v1,v2} … {vn-1 , vn} , {vn,vq} 가 있을때, 그래프 G의 정점 vp에서 vq 까지의 경로는 정점 vp…vq 들의 연속을 말함
- 만일 G가 방향 그래프인 경우 정점 vp에 대해서 정점 vq 까지의 경로는 E(G)에 속하는 순서 있는 간선들 (vp,v1), (v1,v2) … (vn-1,vn),(vn,vq) 로 구성
- 특별한 언급이 없는 경우 정점 vp 에서 정점 vq 까지 경로는 vp,v1,…,vn,vq 와 같은 경로상의 간선을 구성하는 정점 순서열로 표시
- 경로 길이 : 경로에 있는 간선의 수
- 단순 경로 : 경로 상에 있는 모든 정점이 서로 다른 경로
- 기본 경로 경로 상에 있는 모든 간선이 서로 다른 경로
방향 그래프
- 그래프의 정점 v2 에서 출발하여 정점 v4 에서 끝나는 경로 중에서 단순 경로
- 사이클 : 출발점과 도착점이 동일한 단순 경로
- 사이클 그래프 : 사이클이 있는 그래프
그래프 이론에서 사용하는 용어 정리
- 방향 그래프에서
→ 진입 차수 : 주어진 정점으로 향한 간선의 개수
→ 진출 차수 : 주어진 정점에서 시작하는 간선의 개수
→ 정점의 차수 : 진출 차수와 진입 차수의 합
- 무방향 그래프에서
→ 차수 : 정점에 연결된 간선들의 개수
- 루프 : 간선의 시작점과 끝점이 같은 정점인 길이가 1인 경로
- 무사이클 그래프 : 사이클이 없는 그래프 혹은 트리
추상자료형
그래프의 추상 자료형
- 객체의 정의 : 정점과 간선의 유한 집합
연산 | 내용 |
Graph Creat() | 그래프 생성 |
Destroy(Graph) | 그래프 기억 장소 반납 |
Graph Copy_Tree(Graph) | 그래프 복사 |
InsertVertex() | 그래프에 정점 삽입 |
InsertEdge() | 그래프에 간선 추가 |
DeleteVertex() | 정점 삭제 |
DeleteEdge() | 간선 삭제 |
Search() | 정점 탐색 |
IsAdjacent() | 인접 정점 여부 확인 |
ExistPath() | 경로가 존재하는지 확인 |
PathLength() | 경로 길이 계산 |
BFS() | 너비 우선 탐색 |
DFS() | 깊이 우선 탐색 |
그래프의 표현 방법
그래프의 두 가지 표현 방법
- 인접 행렬
- 인접 리스트
그래프 탐색
그래프 탐색이란 ?
- 그래프에서 특정 정점을 찾는 연산
- 그래프 G = (V,E) 와 V(G) 에 있는 정점이 v 가 주어졌을 때, 정점 v 에 도달할 때 까지 G의 정점을 방문하는 연산
→ 만일 그래프 내에 정점이 v가 없다면, 그래프 의 모든 정점을 방문한 후 종료
- 그래프 탐색 (순회) :
→ 깊은 우선탐색 (DFS) 과 너비 우선 탐색(BFS) 두 가지 방법이 있음
깊이 우선 탐색
- 시작 : 출발점 v 를 방문
- 다음으로 v에 인접하고 아직 방문하지 않은 정점 w를 선택하여 w를 출발점으로 다시 깊이 우선 탐색 ( 인접하고 아직 방문하지 않은 정점을 선택 )
- 위 두 과정을 모든 정점을 한 번씩 방문할 때 까지 반복
- 만약 인접한 모든 정점들이 이미 방문한 정점인 경우 가장 최근 방문했던 정점 중, 방문하지 않은 정점w를 가진 정점을 선택하여 정점w로 부터 다시 깊이 우선 탐색 시작
→ 스택을 사용하여 가장 최근에 선택의 지점에 있던 정점을 찾아냄
- 방문하지 않은 정점이 없으면 탐색을 종료
728x90
'KNOU > 요약정리' 카테고리의 다른 글
[데이터베이스시스템] 데이터베이스 모델링 (0) | 2024.05.25 |
---|---|
[데이터베이스시스템] 데이터 베이스의 이해 (0) | 2024.05.25 |
[자료구조] 멀티웨이 탐색트리(2) (0) | 2023.12.02 |
[자료구조] 멀티웨이 탐색 트리(1) (0) | 2023.12.02 |
[자료구조] BS,Splay,AVL,BB (0) | 2023.12.02 |
댓글