<<이산수학 5주차>>
1. 그래프소개
2. 부분그래프
3. 연결그래프
4. 이동경로
5. 최단경로찾기
---------------------------------------------------------------------------------
① 그래프 모델링
: 주어진 문제를 그래프로 표현하여 해결
(정점과 정점을 잇는 간선으로 표현)
주요 구성 요소
- 정점(꼭짓점)
- 간선(모서리)
G = (V,E)
V = {1,2,3,4,5,6}
E = {{1,2}, {1,5}, {2,3}, {2,5}, {3,4}, {4,5}, {4,6}}
// 집합으로 나타내면 '연결'이 되어 있음.
// 순서쌍으로 연결되어 있으면 '방향' 그래프로 표현 가능
다중 간선 : 두 정점을 연결하는 간선의 수가 두 개 이상인 경우
(루프 : 자기에서 자기에게로 오는 간선)
다중간선과 루프가 있으면 집합을 표현할 때, 그래프의 수학적 정의가 불편해짐
따라서 우리는 단순 그래프(다중 간선 X, 루프 X)를 사용하여 표현한다.
인접 vs 근접 // 두 용어의 차이점 이해하기
- 인접 : 이웃 관계
정점이 기준
- 근접 : 붙어있는 관계
간선이 기준
인접행렬
- nxn 대칭 행렬(n은 정점 수)
- 각 칸에 정점 사이에 연결된 간선의 수
- 0-1 행렬 >> 단순 그래프
- 정수 행렬 >> 그 외 그래프
근접 행렬
- 정점이 n, 간선이 m
- nxm 행렬
- 각 칸에 간선의 근접 연결
정점의 이웃과 차수
- 이웃 : 정점과 인접한 정점 >> v의 이웃을 N(v)
- 차수 : 각 정점에 연결된 간선의 수 >> v의 차수를 deg(v)
// 루프는 2로 카운트한다.
(ex)
N(a) = {c,d} / N(c) = {a,b,d}
N({a,c}) = {a,b,c,d}
★차수의 성질★
// 그래프의 성질을 나타냄
- 모든 정점의 차수 합은 짝수
- 홀수 차수를 갖는 정점은 짝수개
- 모든 정점의 차수 합은 = 간선 *2 //핸드쉐이킹 정리
- 루프는 2개로 카운트
단순그래프 유형
// 루프 또는 다중 간선이 없음
1. 완전 그래프(Complete Graph)
: 모든 정점(n)이 연결되어 있음
K_n으로 표시
완전 그래프의 간선수는 n*(n-1)/2 이다.)
(불완전 그래프는 모든 정점들 연결 X.)
★(ex. K5)
2. 정규 그래프
: 모든 정점의 차수(k)가 같은 그래프이다.
if G=(V,E) is k-regular일 때, K*|V| = 2*|E| 이다.
★(ex. 피터슨(peterson)의 3-regular // 선들이 겹치지 않고는 만들어질 수 없는 그래프)
3. 이분할 그래프(Bipartite Graph)
: "이분 그래프"
정점들을 두 그룹으로 나눌 수 있음. 같은 집합에 속한 애들끼리 간선이 연결 X
두 색으로 모든 정점을 색칠할 수 있다.
4. 완전 이분할 그래프
: 각 정점은 다른 집합의 모든 정점들과 연결된다.
K_m,n으로 표시
간선의 수 = m*n
★(ex. K_3,3 // 선들이 꼬이거나 겹치지 않고는 만들어질 수 없는 그래프)
② 부분 그래프
: 원본 그래프의 일부분 //그래프가 모두 필요한 것이 아니기 때문에 일부분만 추출
G' = (V', E')
유도된 그래프? >> 숙제
정점 또한 부분그래프가 될 수 있다. && 자기 자신 또한 부분 그래프가 될 수 있다.
1. 신장 부분 그래프
// Spanning Subgraph
: 원본 그래프가 존재한다면, 간선은 부분집합이되 모든 정점을 반영함. // 정점 유지
(신장 트리)
>> 신장 부분 그래프 보다 더 제약적. 모든 정점을 갖고 있으면서, 간선의 수가 정점보다 -1이다.
>> 순환이 존재하지 X
③ 연결 그래프
: 정점에서 다른 '모든' 정점으로의 경로가 존재하는 그래프
(그렇지 않으면, 비연결 그래프)
>> 정점의 수가 n인 연결그래프, 최소 n-1개의 간선이 존재
(연결 요소)
// 연결된 덩어리
- C(G)로 표기 , C(G)는 끊어진 부분 그래프 수
(ex. C(G)=1이면 모든 정점들이 연결되어 있음)
C(G) 계산 알고리즘
G=(V, E)
while V ≠ 공집합
연결된 모든 간선들을 제거
c += 1
return c
④ 그래프에서의 움직임
이동경로 : 방문한 정점과 간선의 '시퀀스'로 표현함.
시작과 끝은 정점이며, 길이는 방문한 간선의 수
(단순 그래프이면, 정점만으로 표시해도 된다.)
때로는 제한을 둘 경우도 있음
- 정점의 반복 허용 X
- 간선의 반복 허용 X
- 시작과 끝 정점이 동일해야함.
(용어 설명 // 이동형태)
워크? 제한 없음
트레일? 중복간선 X
서킷? 중복간선 X, 시작과 끝 정점 동일
패스? 중복정점 X
사이클? 중복정점 X, 시작과 끝 정점 동일
1) 오일러 circuit
: 모든 간선을 오직 한 번만 방문하고, 시작점으로 되돌아옴.
"중복 정점 허용"
>> 모든 정점의 차수는 짝수
2) 오일러 trail
: 모든 간선을 오직 한번만 방문하고, 시작점으로 되돌아오지 않아도 됨
>> 홀수 차수의 정점이 2개 존재
(홀수 차수 정점에서 시작해서 차수가 홀수인 다른 정점에서 종료됨)
쾨니스베르그 다리 문제
모든 정점의 차수가 홀수이므로 오일러 circuit 존재 X
다리 2개를 더 연결해주니 모든 정점의 차수가 짝수가 되고 오일러 circuit이 존재하게 된다.
- 오일러 circuit의 활용
: 제설차 운행 시, 모든 도로를 한번만 방문하고 출발점으로 되돌아오기
- 오일러 trail의 활용
: 전시장의 모든 문을 한번만 통과하고 나올 수 있는가?
3) 해밀턴 사이클
: 모든 정점을 한번만 통과해서 출발점으로 돌아온다.
(모든 간선을 통과하지 않아도 된다.)
4) 해밀턴 패스
시작점과 끝점이 다르지만 모든 정점을 한 번만 방문한다.
- 해밀턴 cycle의 활용
: 우체통 방문 경로, 모든 우체통을 한번만 돌고 출발점으로 되돌아오기
해밀턴 사이클 vs 오일러 서킷
⑤ 최단 경로 찾기
"가중치 그래프(weighted Graph)"
G = (V, E, f) // f : E->N
(예제)
V={a,b,c,d,e,z}
E={(a,b),(a,d), ... (e,z)}
f((a,b))=4 ) // 가중치는 거리, 시간, 비용 등
다익스트라 "최단 경로 알고리즘" >> 네비
-------
(알고리즘)
for i=1 to n 모든 가중치가 양수 값
L(vi) = 무한
L(a)=0 // 처음 시작 지점이므로 0을 둔다.
S := 공집합 // 처음 S의 집합은 공집합
while z !∈ S
...
L(z)를 반환함. // z길이까지의 가중치
-------
"폴로이드 알고리즘"
최단 경로(최단 비용)
모든 정점 간의 최단 비용을 구해준다.
'학교 공부 > 이산수학' 카테고리의 다른 글
[이산수학] 방향그래프, 그래프 탐색과 구현 (0) | 2020.05.06 |
---|---|
[이산수학] 외판원문제(TSP문제)와 그래프 동형 (0) | 2020.05.06 |
[이산수학] 관계의 정의와 성질 (0) | 2020.05.06 |
[이산수학] 알고리즘 유형(탐색, 정렬, 패턴매칭, 최적화) (0) | 2020.05.06 |
[이산수학] 오퍼레이션 (암시적 정의/명시적 정의) (0) | 2020.05.06 |
댓글