반응형
근사 알고리즘
1. 기본 개념
튜링 기계
- 컴퓨터의 이론적 모델
- 구성 요소 → 테이프, 기호, 헤드, 상태, 규칙
- 무한한 길이의 테이프, 유한한 개수의 기호와 상태, 상태와 기호에 따른 헤드의 동작을 정해둔 규칙
- 현재 상태와 읽은 기호에 따라 헤드가 테이프의 기호를 쓰거나 좌우로 이동
결정론적 튜링 기계
- 테이프의 위치를 바꾸거나 쓰인 기호를 바꿀 때 한 가지 상태로만 변경 가능
- 순차 처리 컴퓨터와 비슷
비결정론적 튜링 기계
- 하나 이상의 상태로 바뀔 수 있거나 혹은 바뀔 상태가 없을 수 있음
- 연산 결과가 상황에 따라 달라질 수 있는 연산을 수행
- 병럴 처리 컴퓨터와 비슷
다항 시간 알고리즘
- 알고리즘 수행 시간이 입력 크기 n에 대한 다항식으로 표현
- O(1), O(logn), O(n^2) 등등..
- O(2^n)같은 경우는 다항 시간 알고리즘이 아닌 지수 시간 알고리즘
난이도에 따른 문제 분류
- 쉬운 문제(tractable)
- 결정론적 튜링 기계를 이용한 다항 시간 알고리즘이 존재하는 문제
- 어려운 문제(intractable)
- 결정론적 튜링 기계를 이용한 다항 시간 알고리즘의 존재 여부를 알 수 없는 문제
형태에 따른 분류
- 판정 문제(decision)
- 예 또는 아니오 중 하나의 답으로 요구하는 형태의 문제
- 최적화 문제(optimization)
- 최솟값 또는 최댓값을 구하는 형태의 문제
클래스 P
- 결정론적 튜링 기계를 이용하여 다항 시간에 해결할 수 있는 모든 판정 문제의 집합
- 쉬운 문제의 판정 문제 버전을 원소로 갖는 집합
- 예: 주어진 그래프에서 정점 a에서 e까지의 최단 거리가 10보다 작은가?
클래스 NP
- 비결정론적 튜링 기계를 이용하여 다항 시간에 해결할 수 있는 모든 판정 문제의 집합
- 예: 최단 경로 문제의 판정 문제 버전
- 예: 외판원 문제의 판정 문제 버전
클래스 P와 클래스 NP의 관계
- 클래스 P는 클래스 NP에 포함됨
- 클래스 P와 클래스 NP가 같다는것은 증명되지 않음
문제 A가 문제 B로 변환 된다
- 문제 A의 입력과 출력을 문제 B의 입력과 출력으로 바꿀 수 있고, 문제 B를 해결하는 알고리즘을 적용함으로써 문제 A를 풀 수 있다.
- 다항식 시간 변환 → 입력과 출력의 형태를 바꾸는데 다항 시간이 소요
2. NP-완전 문제
완전 문제
- 어떤 부류에 속하는 모든 문제가 그 부류에 속하는 어떤 문제 R로 다항식 시간 변환이 가능하다면 문제 R을 그 부류의 완전 문제라고 함
- R은 해당 부류의 모든 문제를 대표하는 문제
- 완전 문제 R을 다항 시간에 해결할 수 있다면 그 부류의 다른 모든 문제도 결국 다항 시간에 해결 가능
NP-완전 문제
클래스 NP에 속하는 모든 문제가 주어진 어떤 문제 A로 다항식 시간 변환되고, 문제 A가 클래스 NP에 속하는 경우, 문제 A를 NP-완전 문제라고 함
- 이 문제를 푸는 알고리즘이 존재하는지, 존재하지 않는지도 증명되지 않음
하드 문제
- 어떤 부류에 속하는 모든 문제가 어떤 문제 R로 다항식 시간 변환이 가능하면 문제 R을 그 부류의 하드 문제라고 함 → 어떤 부류 R이 해당 부류에 속한다는 조건이 없음
- 해당 부류에 속하는 어떤 문제보다 풀기 어렵거나 비슷한 정도로 풀기 힘든 문제
NP-하드 문제
- 클래스 NP에 속하는 하드 문제
NP-완전 문제와 NP-하드 문제의 관계
- 모든 NP완전 문제는 NP하드 문제
- 모든 NP하드 문제가 NP완전문제는 아니다.
NP-완전 문제의 종류
외판원 문제(TSP: traveling salesman problem)
- 여러 도시와 도시 간의 이동이 필요한 비용이 주어진 경우, 비용 R 이하로 모든 도시를 한 번씩만 방문하고 처음 도시로 돌아오는 방법이 존재하는지 판정하는 문제
0/1 배낭 문제
- 물체를 쪼갤 수 없는 배낭 문제
CNF 만족성 문제
- 정규곱형으로 주어진 논리식의 리터럴들에 참 또는 거짓 값을 적절히 지정하여 전체 논리식의 값을 참으로 만들 수 있는 지를 판정하는 문제
해밀토니언 사이클 문제
- 무방향 그래프 G가 주어졌을 때, G의 모든 정점을 한 번씩만 지나가는 사이클이 존재하는 지 판정하는 문제
궤 채우기 문제
- 용량이 1인 무한개의 궤와 다양한 크기의 개체가 n개 주어진 경우, R개의 궤로 n개의 개체를 전부 수용할 수 있는지 판정하는 문제
파티션 문제
- n개의 양의 정수가 주어졌을 때, 각 집합에 포함된 수의 합이 동일하도록 n개의 양의 정수를 두 개의 집합으로 나눌 수 있는지 판정하는 문제
클리크 판정 문제
- 그래프 G와 정수 K가 주어졌을 때, G가 크기 k인 클리크를 갖는지 여부를 판정하는 문제
- k개의 정점으로 완전 그래프(모든 정점 사이에 간선이 존재)가 되는 G의 부분 그래프
버텍스 커버 문제
- 그래프 G와 정수 k가 주어졌을 때, G가 크기 k인 버텍스 커버를 갖는지 여부를 판정하는 문제
- 버텍스 커버: 모든 간선이 최소한 하나 이상의 정점에 부수하는 정점의 부분 집합
- 버텍스 커버의 크기: 버텍스 커버를 구성하는 정점의 개수
NP 완전성의 증명
- 알려진 하나의 NP-완전 문제 A가 해당 문제 B로 다항식 시간 변환됨을 보인다.
- 해당 문제를 푸는 비결정론적 튜링 기계가 존재함을 보인다.
3. 근사 알고리즘
현실적으로 NP문제의 답을 구하기 어렵기 때문에, 최적해에 가까운 해를 구하는 다항 시간 알고리즘을 근사 알고리즘이라고 부름
근사해(가능해)
- 근사 알고리즘이 생성하는 해
- 반드시 최적은 아니더라도, 요구되는 규칙을 위반하지 않는 해결 안
- 최적해를 구할 수 없거나 빠른 시간에 대략적인 해를 찾는 경우에 이용
외판원 문제의 근사 알고리즘
- 최소 신장 트리 + 깊이 우선 탐색
- 주어진 그래프의 최소 신장 트리를 구한다
- 임의의 정점 하나를 루트 노드로 지정해서 최소 신장 트리를 깊이 우선 탐색 순서대로 정점을 나열하고 마지막에 첫 정점을 한번 더 추가
- O(V^2)
- 근사해는 최적해의 두 배를 넘지 않음
궤 채우기 문제의 근사 알고리즘
- 최초법: 사용된 궤 중에서 최초의 궤에 넣는다
- 최선법: 남는 부분이 가장 작게 되는 궤에 넣는다
- 감소순 최초법: 물체의 크기를 감소순으로 정렬 후 최초법
- 감소순 최선법: 물체의 크기를 감소순으로 정렬 후 최선법
특징
- O(n^2)
- 4가지 방법 모두최적해를 보장하지 못함
- 최초법/최선법의 근사해는 최적해의 두 배를 넘지 않음
- 감소순의 근사해는 최적해의 1.5배를 넘지 않음
버텍스 커버 문제의 근사 알고리즘
- 그래프에서 임의의 간선을 선택하여 이와 맞닿은 두 정점을 버텍스 커버에 포함시키고, 두 정점에 부수된 모든 간선을 그래프에서 제거하는 과정을 반복
- O(E)
- 근사해는 최적해의 두 배를 넘지 않음
반응형
'공부 > 알고리즘(이론)' 카테고리의 다른 글
[방송대 알고리즘]해 탐사 알고리즘 (0) | 2022.06.05 |
---|---|
[방송대 알고리즘]탐색 알고리즘 (0) | 2022.06.05 |
알고리즘 2018년도 기말 기출문제 풀이 - 방송대, 방송통신대학교 알고리즘 (0) | 2022.05.15 |
[방송대 알고리즘]정렬 알고리즘 (0) | 2022.05.07 |
[방송대 알고리즘]그리디 알고리즘 (0) | 2022.05.05 |