[이산수학] 그래프

그래프의 기본 개념을 알아보고 응용 문제인 최단 경로, 순회판매원, 그래프 탐색 문제 등을 고찰한다

그래프의 기본 개념

오일러에 의해 시작

쾨니히스베르크 다리 문제는 대표적인 그래프 문제

**그래프 G = ( V, E )**는 유한한 개수의 정점 또는 노드들의 집합인 V와 연결선 또는 에지라고 불리는 정점들의 쌍들의 집합인 E로 이루어진다

#1 방향 그래프

방향이 있는 그래프로 연결선을 화살표로 표시하여 방향을 나타내는 그래프

#2 방향이 없는 그래프

방향이 없는 그래프로 그래프의 특수한 형태

#3 트리

사이클이 존재하지 않는 그래프

루트라 불리는 특별한 노드가 한개 존재하고 루트로부터 다른 모든 노드로 가는 경로가 항상 유일하게 존재

루트로 들어오는 연결선이 없으므로 루트는 모든 트리의 출발점

그래프의 용어

#1 단순 그래프

한 쌍의 정점 사이에 많아도 하나의 연결선으로 이루어진 그래프

자기 자신으로의 연결선이 없는 그래프

#2 멀티 그래프

단순 그래프의 확장으로 한 쌍의 꼭지점 사이에 연결선의 개수 제한이 없는 일반적인 그래프

#3 부분 그래프

두개의 그래프에서 정점과 에지가 다른 한 그래프에 속할때 해당 그래프에 부분 그래프라고함

이때 정점의 개수만 같고 에지가 부분 집합일 경우 생성 부분 그래프라고 함

#4 그래프에서의 경로

단순 경로 : 경로가 같은 연결선을 두 번 포함하지 않는 경로

기본 경로 : 어떤 정점들도 두 번 만나지 않는 경로

사이클/순회 : 결로에서 종점과 시점이 일치하는 경오

단순 사이클 : 같은 연결선을 반복하여 방문하지 않는 사이클

기본 사이클 : 시작점을 제외한 어떠한 정점도 반복하여 방문하지 않는 사이클

#5 그래프에서 연결

연결 그래프 : 그래프의 모든 정점들이 연결되어 있는 그래프

강한 연결 그래프 : 그래프에서 모든 두 정점 a와 b에 대해서 a와 b, b와 a로의 경로가 존재하는 그래프

연결 요소 : 그래프에서 모든 정점들이 연결되어 있는 부분

그래프의 표현 방법

#1 인접 행렬

그래프 G = (V,E)에서 V=n일 때 G의 인접 행렬은 n*n 행렬 A로 나타내지며 각 원소는 정점이 있을 경우 1 없을 경우 0으로 표시한다

#2 인접 리스트

각 정점에 대해 포인터가 주어지고 그 점으로부터 연결된 정점들을 차례로 연결 리스트로 표시

같은 리스트 내에서 순서에 관계가 없음

특수 형태의 그래프

#1 오일러 경로

그래프에서 각 연결선을 단 한 번씩만 통과하는 경로

#2 오일러 순회

그래프에서 꼭지점은 여러 번 지날 수 있지만, 각 연결선을 단 한 번씩만 통과하는 순회

정점 v와 연결된 연결선의 개수를 정점 v의 차수

모든 정점들의 차수의 합 = 모든 연결선들의 개수의 2배

→ 각 연결선들의 연결된 정점에 의해 2번 계산

어떤 그래프 G가 오일러 경로를 가지기 위한 필요충분조건은

G가 연결 그래프이고 홀수 차수의 개수가 0 또는 2인 경우

어떤 그래프 G가 오일러 순회를 가지기 위한 필요충분조건은

G가 연결 그래프이고 모든 정점들이 짝수 개의 차수를 가지는 경우

#3 한붓그리기

그래프에서 연필을 떼지 않고 모든 변을 오직 한 번만 지나는 것을 한붓그리기라고 함

연결된 그래프에서 한붓그리기가 가능하려면 시작점과 끝점을 제외한 모든 꼭지점의 차수가 짝수여야함

#4 해밀턴 경로

그래프에서 모든 꼭지점을 오직 한 번씩만 지나지만 시작점으로 돌아오지 않는 경로

#5 해밀턴 순회

그래프에서 모든 꼭지점들을 오직 한 번씩만 지나는 순회

#6 가중 그래프

그래프 G의 각 연결선에 0보다 큰 수가 할당되었을때 이 값을 가중값이라고 하며

이와 같은 그래프를 가중 그래프라고 함

#7 평면 그래프

평면상에서 어떤한 연결선들도 서로 교차할 수 없도록 그려진 하나의 그래프

#8 오일러의 정리

연결된 평면 그래프에서 꼭지점의 수를 v, 연결선의 수를 e, 면의 수를 f라고 할 때

v - e + f = 2

#9 완전 그래프

그래프 G = ( V,E )의 모든 정점들의 쌍 사이에 연결선이 존재하면 이를 완전 그래프라고함

→ 각 꼭지점이 다른 모든 꼭지점들과 연결되는 그래프

n개의 정점을 가진 완전 그래프의 연결선의 개수 = n * ( n-1 ) / 2

#10 정규 그래프

그래프 G = ( V,E )의 모든 꼭지점의 차수가 k이면 G를 k차 정규 그래프라고함

#11 이분 그래프 / 완전 이분 그래프

그래프 G = ( V,E )에서 V가 두 부분 집합 X와 Y = V - X로 나누어져 각 연결선이 X 내의 정점과 Y 내의 정점의 쌍으로 연결되면 그래프 G를 이분 그래프 라고 함

이때 X 내의 모든 정점들과 Y 내의 모든 정점들 사이에 연결선이 존재하면 G를 완전 이분 그래프라고함

#12 방향 비사이클 그래프

사이클이 없는 방향 그래프를 뜻함

트리보다는 일반적이나 임의의 방향 그래프보다는 제한적

그래프 응용

#1 최단 경로

가장 짧은 거리의 경로를 찾는 문제를 최단 경로 문제

주어진 방향 그래프에서 경로의 시작점을 출발점이라하며 목적지를 도착점

주어진 연결선의 길이는 0 이상인 경우를 가정

→ 다익스트라 알고리즘으로 풀이

#2 다익스트라 알고리즘

주어진 방향 그래프 G = ( V,E )에서 v = {1,2,3,…,n}이고 점 {1}이 출발점이라고 가정

점 i에서 j로 가는 거리를 C[i,j]로 나타내는데 만약 i에서 j로 가는 경로가 없으면 거리는 무한대

D[i]는 출발점에서 현재점에 이르는 가장 짧은 거리를 나타냄

#3 해밀턴 순회 응용

순회 판매원 문제 → 총 거리가 최소가 되는 경로

최소 경로가 최적의 경로라고 할 수 있음

최근접 이웃 방법을 통하여 최소값이 아니더라도 근사값을 구할 수 있음

그래프 탐색

#1 깊이 우선 탐색 ( Depth First Search )

깊이 우선 탐색은 먼저 시작점 v부터 방문

v에 인접한 정점 중에서 방문하지 않은 정점 방문하고 다시 w로부터 탐색을 시작

어떤 정점 u를 방문하고 u에 인접한 모든 정점들을 이미 방문한 경우에는 그 전에 마지막으로 방문한 정점으로 되돌아가서 위의 과정 반복

모든 정점을 탐색 후 종료

→ 스택으로 재귀 알고리즘 구현

#2 너비 우선 탐색 ( Breadth First Search )

너비 우선 탐색은 먼저 시작점 v부터 방문

v에 인접한 정점들을 차례대로 방문

더 이상 방문할 정점이 없는 경우 다시 v에 인접한 정점 가운데 맨 처음으로 방문한 정점과 인접한 정점들을 차례로 방문

모든 정점을 탐색 후 종료

→ 큐로 재귀 알고리즘 구현

그래프 색칠 문제

어떤 주어진 그래프 G에 대해 인접한 어느 두 영역도 같은 색이 안되도록 각 정점에 색을 칠하는 문제 ⇒ 그래프 G의 색칠 문제

이 때 필요한 최소한의 색의 수를 G의 색칠 수라고함

모든 평면 그래프는 네 가지 색으로 색칠이 가능

2023.07.03 - [Computer Science/Data Structure & Algorithm] - 그래프 알고리즘 (1) - BFS, DFS, 다익스트라 알고리즘

 

그래프 알고리즘 (1) - BFS, DFS, 다익스트라 알고리즘

0. 들어가며 그래프는 정점의 집합과 정점들을 서로 잇는 에지의 집합으로 구성 그래프는 매우 유연한 자료구조 객체와 객체 사이의 관계를 표현 두 정점 사이에 여러 엣지를 가지기도 하고 하

gkgktkdwl.tistory.com

2023.07.04 - [Computer Science/Data Structure & Algorithm] - 그래프 알고리즘(2) - 벨만포드, 존슨, 코사리주 알고리즘

 

그래프 알고리즘(2) - 벨만포드, 존슨, 코사리주 알고리즘

1. 최단 경로 문제 다시 살펴보기 다익스트라 알고리즘은 성능 면에서 우수하나, 모든 그래프에 적용 불가능 그래프에 음수 가중치가 있을 경우 최적의 경로를 찾지 못하는 경우 발생 2. 벨만-포

gkgktkdwl.tistory.com

그래프의 이해를 통해 여러 가지 그래프를 볼 수 있으며 문제 해결에 큰 도움을 얻을 수 있음

'Computer Science > Discrete Mathematics' 카테고리의 다른 글

[이산수학] 순열, 이산적 확률, 재귀적 관계  (1) 2023.08.14
[이산수학] 트리  (2) 2023.08.13
[이산수학] 함수  (0) 2023.08.09
[이산수학] 관계  (0) 2023.08.08
[이산수학] 증명론  (0) 2023.08.07