SlideShare a Scribd company logo
1 of 23
Download to read offline
A PPROX IM ATIO N A LGO R ITHM
때로는 O P T I M A L S O L U T I O N 을 찾는 비용이 아주 클 때가 있습니다.
예를 들어 N P - C O M P L E T E 의 경우라든가…
그럴 때는 최적의 답을 찾는 것 보다는
좀 더 적은 비용으로 최적에 ‘가까운‘ 답을 찾는 것이 유리할 수도 있습니다.
A P P R O X I M AT I O N A L G O R I T H M 은 바로 그럴 때 고려할 수 있는 알고리듬입니다.
일반적인 알고리듬은 주어진 문제의 답을 찾는 것이 중요합니다.
그래서 결과는 당연히 correct하므로, 중요한 것은 그 과정에 드는 비용이었습니다.
하지만 approximation algorithm은 성능을 위해 답에 근접한 결과를 얻으므로
성능만큼이나 이 근접한 수준이 중요합니다.
이 근접한 정도를 나타내는 지표가 performance ratio 이고, 다음과 같이 정의합니다.
max
𝐶
𝐶∗
,
𝐶∗
𝐶
≤ 𝜌(𝑛)
여기서𝐶∗
는 주어진 문제의 optimal solution이고, 𝐶는 approximation으로 찾은 결과입니다.
문제에서 구하고자 하는 값이 최소화 문제인 경우는𝐶∗
가 𝐶보다 작거나 같으므로 𝜌 𝑛 =
𝐶
𝐶∗ 가 됩니다.
그리고 이 경우의 approximation algorithm을 𝜌 𝑛 − 𝑎𝑝𝑝𝑟𝑜𝑥𝑖𝑚𝑎𝑡𝑖𝑜𝑛 𝑎𝑙𝑔𝑜𝑟𝑖𝑡ℎ𝑚이라고 합니다.
당연한 이야기 같지만 일반적으로 approximation algorithm의
computation time과 quality of approximation 사이에는 trade-off가 존재합니다.
한마디로 좀 더 optimal solution에 가까운 답을 얻으려면 계산 비용이 더 든다는 이야기지요.
Th e vertex cover p rob lem
vertex cover 문제를 예로 들어서 이 성능 지표에 대해 알아봅시다.
vertex cover 문제는 주어진 그래프 𝐺(𝑉, 𝐸) 에서 임의의 edge 𝑢, 𝑣 에 대해서
𝑢나 𝑣 중에서 하나 혹은 둘 모두를 포함하는 최소한의 집합을 구하는 문제입니다.
간단히 말하면 주어진 그래프의 모든 edge들은
같은 그래프에서 얻은 vertex cover에 있는 원소들 중 최소한 하나와는 연결 될 수 있어야 하고,
이런 조건을 만족하는 경우들 가운데
최소한의 vertex로 만들 수 있는 집합을 구하는 것입니다.
위의 그림에서 (a)의 집합이 주어졌을 때 (f)의 밝은 색으로 된 vertex들로 이루어진 집합이
이 그래프의 vertex cover가 되는 것입니다.
(주어진 그래프의 모든 edge들은 vertex cover의 원소 b, e, d 중 적어도 하나와는 연결되어 있음을 알 수 있습니다.)
그런데 이 최적의 vertex cover를 찾는 문제는 NP-COMPLETE 문제입니다.
http://staff.ustc.edu.cn/~csli/graduate/algorithms/book6/967_a.gif
이 문제를 좀 더 적은 비용으로 최적에 근접한 결과를 얻는 방법은 다음과 같습니다.
1. 우선 주어진 그래프의 임의의 edge를 선택합니다.
2. 그리고 그 edge와 연결된 vertex 둘을 구하고자 하는 vertex cover C의 원소로 추가합니다.
3. 방금 추가한 vertex들과 연결된 모든 edge들 및 방금 선택한 edge를 삭제합니다.
4. 남은 edge들 가운데 임의의 edge를 하나 선택해서 남은 edge가 없을 때까지 앞의 과정을 반복합니다.
이 방법을 통해 vertex cover를 찾는 과정이 (a) ~ (e) 이고, 그 결과는 C = b, c, d, e, 𝑓, 𝑔 임을 알 수 있습니다.
이제 이 알고리듬의 근사 수준을 알아볼 차례입니다.
앞의 과정에서 임의로 선택한 edge들의 집합을 A라고 하면 |𝐶∗
| ≥ |𝐴|를 항상 만족합니다.
그 이유는 𝐴의 edge들 주어진 그래프의 원소이므로, vertex cover의 정의에 의해
이 edge들에 연결된 vertex들 가운데 적어도 하나는 𝐶∗
에 포함 되어 있기 때문입니다.
그리고 우리가 구한 𝐶에는 𝐴의 edge에 연결된 두 vertex 모두 추가하였으므로 2 𝐴 = |𝐶|를 만족합니다.
두 번째 식을 첫 번째 식에 대입하면 2|𝐶∗
| ≥ |𝐶|를 얻을 수 있습니다.
즉 우리가 구한 결과는 최적의 결과의 두 배를 넘지는 않음을 알 수 있습니다.
그러므로 이 알고리듬은 2-approximation algorithm이라고 할 수 있습니다.
Th e travelin g -salesman p rob lem
이번에 살펴볼 예제는 대표적인 NP-COMPLETE 문제인 the traveling-salesman 문제입니다.
이 문제는 주어진 undirected graph 𝐺(𝑉, 𝐸)에서 각 edge는 nonnegative integer cost c 𝑢, 𝑣 를 가지는 가운데
모든 vertex를 연결하면서 동시에 그 cost를 최소화하는 연결 조합을 찾는 것입니다.
그리고 이 문제에서는 한 가지 조건을 더 추가하는데, triangle inequality라는 조건입니다.
이 조건은 한 vertex에서 다른 vertex로 이동할 때,
바로 가는 것이 다른 vertex를 경유하는 것보다 더 적은 비용이 든다는 것을 의미합니다.
수식으로 표현하면 c 𝑢, 𝑣 ≤ 𝑐 𝑢, 𝑤 + 𝑐(𝑤, 𝑣)가 됩니다.
이 문제를 근사로 찾는 것은 우선 출발점에서 시작하는 minimum spanning tree를 찾는 것으로 시작합니다.
이렇게 찾은 tree를 preorder 순으로 순회하면서 각각의 vertex들을 순서대로 잇습니다.
그 결과가 위 그림에서의 (d)입니다.
(e)는 이 문제의 최적의 결과인데, 우리가 구한 값보다 23%가 더 짧습니다.
이 알고리듬의 근사 수준을 살펴보면 다음과 같습니다.
최적의 경로를 𝐻∗
라고 하고, 위에서 구한 minimum spanning tree를 T라고 합시다.
이때, c(T) ≤ 𝑐(𝐻∗
)를 만족하게 됩니다. 그 이유는 𝐻∗
는 모든 edge들을 잇는 cycle이므로
𝐻∗
를 구성하는 edge들 가운데 하나를 지우면 tree가 되는 동시에, 이 tree는 주어진 그래프의 spanning tree가 됩니다.
우리가 구한 T가 이미 minimum 값을 가지므로 𝐻∗
는 T보다는 항상 크거나 같은 cost를 가지게 됩니다.
우리가 구한 T를 preorder를 순회하는 동안 거치는 모든 vertex들을 순서대로 나열하면
a, b, c, b, h, b, a, d, e, f, e, g, e, d, a 가 되고, 이 순서를 W라고 합시다.
이때 c W = 2c(T)를 만족합니다. 그 이유는 순회하는 동안 각각의 edge를 2번씩 거쳐가기 때문입니다.
저희가 구한 순회 경로 H는 W에서 한번 거쳐간 vertex는 생략하고 다음 vertex로 바로 접근하므로
문제의 조건인 triangle inequality에 의해서 c H ≤ c(W)를 만족합니다.
위 식들을 조합하면 c H ≤ 2c(𝐻∗
) 임을 구할 수 있고, 이 알고리듬은 2-approximation algorithm임을 알 수 있습니다.
Greed y ap p roximation algorith m
이제부터는 approximation algorithm을 위한 접근 방식에 대해서 알아보겠습니다.
그 첫 번째는 greedy algorithm이고 해결할 문제는 the set-covering problem입니다.
위와 같이 검은 점을 원소로 가지는 집합 X와 이의 부분집합 𝑆 𝑛들이 주어졌을 때,
최소한의 𝑆 𝑛들로 모든 원소를 포함하는 𝑆 𝑛의 조합을 찾는 문제입니다.
greedy algorithm을 이용해서 이 문제를 해결하는 과정은 다음과 같습니다.
현재 cover 되지 않은 원소들을 가장 많이 포함하고 있는 𝑆 𝑛을 구하려는 cover에 포함시키고,
𝑆 𝑛에 포함된 vertex들을 삭제합니다.
그리고 이와 같은 과정을 남은 vertex가 없을 때까지 반복합니다.
주어진 문제에서는 𝑆1, 𝑆4, 𝑆5, 𝑆3 𝑜𝑟 6 순서로 추가되어 결과는 4개의 𝑆 𝑛의 조합이 됩니다.
참고로 이 문제의 optimal solution은 𝑆3, 𝑆4, 𝑆5 입니다.
이 알고리듬의 성능은 현재 cover 되지 못한 vertex를 가장 많이 포함하는 𝑆 𝑛을 찾는 과정이 𝑂 𝑋 𝐹
이런 탐색 과정을 min( 𝑋 , 𝐹 )번 거치게 되므로 전체 time complexity는 𝑂 𝑋 𝐹 min 𝑋 , 𝐹 이 됩니다.
( 𝐹는 𝑆 𝑛들의 집합 )
oth er algorith m d esig n tec h n iq u es
앞에서 살펴본 greedy algorithm 이외에도
approximation algorithm을 위한 몇 가지 일반적인 접근방식이 있으며 목록은 다음과 같습니다.
Greedy algorithm
Local search
Enumeration and dynamic programming
Linear programming relaxation
Semidefinite programming relaxation
Metric embedding
참고자료
Introduction to Algorithms 3rd (CLRS)
http://en.wikipedia.org/wiki/Approximation_algorithm

More Related Content

Similar to approximation algorithm

DP 알고리즘에 대해 알아보자.pdf
DP 알고리즘에 대해 알아보자.pdfDP 알고리즘에 대해 알아보자.pdf
DP 알고리즘에 대해 알아보자.pdfHo Jeong Im
 
Computational Complexity
Computational ComplexityComputational Complexity
Computational Complexityskku_npc
 
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이NAVER D2
 
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced partNAVER D2
 
[IGC 2017] 경일직업능력개발원 이재환 - 시작하는 게임 프로그래머를 위한 알고리즘, 그리고 첫걸음 AStar
[IGC 2017] 경일직업능력개발원 이재환 - 시작하는 게임 프로그래머를 위한 알고리즘, 그리고 첫걸음 AStar[IGC 2017] 경일직업능력개발원 이재환 - 시작하는 게임 프로그래머를 위한 알고리즘, 그리고 첫걸음 AStar
[IGC 2017] 경일직업능력개발원 이재환 - 시작하는 게임 프로그래머를 위한 알고리즘, 그리고 첫걸음 AStar강 민우
 
08. spectal clustering
08. spectal clustering08. spectal clustering
08. spectal clusteringJeonghun Yoon
 
Neural network (perceptron)
Neural network (perceptron)Neural network (perceptron)
Neural network (perceptron)Jeonghun Yoon
 
03. linear regression
03. linear regression03. linear regression
03. linear regressionJeonghun Yoon
 
Ray-triangle intersection
Ray-triangle intersectionRay-triangle intersection
Ray-triangle intersection동환 김
 
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2jdo
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)SANG WON PARK
 
8. Logistic Regression
8. Logistic Regression8. Logistic Regression
8. Logistic RegressionJungkyu Lee
 

Similar to approximation algorithm (16)

DP 알고리즘에 대해 알아보자.pdf
DP 알고리즘에 대해 알아보자.pdfDP 알고리즘에 대해 알아보자.pdf
DP 알고리즘에 대해 알아보자.pdf
 
07. PCA
07. PCA07. PCA
07. PCA
 
분할정복
분할정복분할정복
분할정복
 
Computational Complexity
Computational ComplexityComputational Complexity
Computational Complexity
 
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
[D2 CAMPUS] 부산대 Alcall 프로그래밍 경시대회 문제 풀이
 
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
 
[IGC 2017] 경일직업능력개발원 이재환 - 시작하는 게임 프로그래머를 위한 알고리즘, 그리고 첫걸음 AStar
[IGC 2017] 경일직업능력개발원 이재환 - 시작하는 게임 프로그래머를 위한 알고리즘, 그리고 첫걸음 AStar[IGC 2017] 경일직업능력개발원 이재환 - 시작하는 게임 프로그래머를 위한 알고리즘, 그리고 첫걸음 AStar
[IGC 2017] 경일직업능력개발원 이재환 - 시작하는 게임 프로그래머를 위한 알고리즘, 그리고 첫걸음 AStar
 
08. spectal clustering
08. spectal clustering08. spectal clustering
08. spectal clustering
 
Neural network (perceptron)
Neural network (perceptron)Neural network (perceptron)
Neural network (perceptron)
 
03. linear regression
03. linear regression03. linear regression
03. linear regression
 
Ray-triangle intersection
Ray-triangle intersectionRay-triangle intersection
Ray-triangle intersection
 
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
 
06. graph mining
06. graph mining06. graph mining
06. graph mining
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)
 
Number theory
Number theoryNumber theory
Number theory
 
8. Logistic Regression
8. Logistic Regression8. Logistic Regression
8. Logistic Regression
 

More from Gyeongwook Choi

More from Gyeongwook Choi (6)

Mec 56
Mec 56Mec 56
Mec 56
 
MEC++ 1, 2
MEC++ 1, 2MEC++ 1, 2
MEC++ 1, 2
 
EC 789
EC 789EC 789
EC 789
 
JSON with C++ & C#
JSON with C++ & C#JSON with C++ & C#
JSON with C++ & C#
 
STL study (skyLab)
STL study (skyLab)STL study (skyLab)
STL study (skyLab)
 
Postmortem d ao_c_최경욱
Postmortem d ao_c_최경욱Postmortem d ao_c_최경욱
Postmortem d ao_c_최경욱
 

approximation algorithm

  • 1. A PPROX IM ATIO N A LGO R ITHM
  • 2. 때로는 O P T I M A L S O L U T I O N 을 찾는 비용이 아주 클 때가 있습니다. 예를 들어 N P - C O M P L E T E 의 경우라든가…
  • 3. 그럴 때는 최적의 답을 찾는 것 보다는 좀 더 적은 비용으로 최적에 ‘가까운‘ 답을 찾는 것이 유리할 수도 있습니다. A P P R O X I M AT I O N A L G O R I T H M 은 바로 그럴 때 고려할 수 있는 알고리듬입니다.
  • 4. 일반적인 알고리듬은 주어진 문제의 답을 찾는 것이 중요합니다. 그래서 결과는 당연히 correct하므로, 중요한 것은 그 과정에 드는 비용이었습니다. 하지만 approximation algorithm은 성능을 위해 답에 근접한 결과를 얻으므로 성능만큼이나 이 근접한 수준이 중요합니다.
  • 5. 이 근접한 정도를 나타내는 지표가 performance ratio 이고, 다음과 같이 정의합니다. max 𝐶 𝐶∗ , 𝐶∗ 𝐶 ≤ 𝜌(𝑛) 여기서𝐶∗ 는 주어진 문제의 optimal solution이고, 𝐶는 approximation으로 찾은 결과입니다. 문제에서 구하고자 하는 값이 최소화 문제인 경우는𝐶∗ 가 𝐶보다 작거나 같으므로 𝜌 𝑛 = 𝐶 𝐶∗ 가 됩니다. 그리고 이 경우의 approximation algorithm을 𝜌 𝑛 − 𝑎𝑝𝑝𝑟𝑜𝑥𝑖𝑚𝑎𝑡𝑖𝑜𝑛 𝑎𝑙𝑔𝑜𝑟𝑖𝑡ℎ𝑚이라고 합니다.
  • 6. 당연한 이야기 같지만 일반적으로 approximation algorithm의 computation time과 quality of approximation 사이에는 trade-off가 존재합니다. 한마디로 좀 더 optimal solution에 가까운 답을 얻으려면 계산 비용이 더 든다는 이야기지요.
  • 7. Th e vertex cover p rob lem
  • 8. vertex cover 문제를 예로 들어서 이 성능 지표에 대해 알아봅시다. vertex cover 문제는 주어진 그래프 𝐺(𝑉, 𝐸) 에서 임의의 edge 𝑢, 𝑣 에 대해서 𝑢나 𝑣 중에서 하나 혹은 둘 모두를 포함하는 최소한의 집합을 구하는 문제입니다. 간단히 말하면 주어진 그래프의 모든 edge들은 같은 그래프에서 얻은 vertex cover에 있는 원소들 중 최소한 하나와는 연결 될 수 있어야 하고, 이런 조건을 만족하는 경우들 가운데 최소한의 vertex로 만들 수 있는 집합을 구하는 것입니다.
  • 9. 위의 그림에서 (a)의 집합이 주어졌을 때 (f)의 밝은 색으로 된 vertex들로 이루어진 집합이 이 그래프의 vertex cover가 되는 것입니다. (주어진 그래프의 모든 edge들은 vertex cover의 원소 b, e, d 중 적어도 하나와는 연결되어 있음을 알 수 있습니다.) 그런데 이 최적의 vertex cover를 찾는 문제는 NP-COMPLETE 문제입니다. http://staff.ustc.edu.cn/~csli/graduate/algorithms/book6/967_a.gif
  • 10. 이 문제를 좀 더 적은 비용으로 최적에 근접한 결과를 얻는 방법은 다음과 같습니다. 1. 우선 주어진 그래프의 임의의 edge를 선택합니다. 2. 그리고 그 edge와 연결된 vertex 둘을 구하고자 하는 vertex cover C의 원소로 추가합니다. 3. 방금 추가한 vertex들과 연결된 모든 edge들 및 방금 선택한 edge를 삭제합니다. 4. 남은 edge들 가운데 임의의 edge를 하나 선택해서 남은 edge가 없을 때까지 앞의 과정을 반복합니다. 이 방법을 통해 vertex cover를 찾는 과정이 (a) ~ (e) 이고, 그 결과는 C = b, c, d, e, 𝑓, 𝑔 임을 알 수 있습니다.
  • 11. 이제 이 알고리듬의 근사 수준을 알아볼 차례입니다. 앞의 과정에서 임의로 선택한 edge들의 집합을 A라고 하면 |𝐶∗ | ≥ |𝐴|를 항상 만족합니다. 그 이유는 𝐴의 edge들 주어진 그래프의 원소이므로, vertex cover의 정의에 의해 이 edge들에 연결된 vertex들 가운데 적어도 하나는 𝐶∗ 에 포함 되어 있기 때문입니다. 그리고 우리가 구한 𝐶에는 𝐴의 edge에 연결된 두 vertex 모두 추가하였으므로 2 𝐴 = |𝐶|를 만족합니다. 두 번째 식을 첫 번째 식에 대입하면 2|𝐶∗ | ≥ |𝐶|를 얻을 수 있습니다. 즉 우리가 구한 결과는 최적의 결과의 두 배를 넘지는 않음을 알 수 있습니다. 그러므로 이 알고리듬은 2-approximation algorithm이라고 할 수 있습니다.
  • 12. Th e travelin g -salesman p rob lem
  • 13. 이번에 살펴볼 예제는 대표적인 NP-COMPLETE 문제인 the traveling-salesman 문제입니다. 이 문제는 주어진 undirected graph 𝐺(𝑉, 𝐸)에서 각 edge는 nonnegative integer cost c 𝑢, 𝑣 를 가지는 가운데 모든 vertex를 연결하면서 동시에 그 cost를 최소화하는 연결 조합을 찾는 것입니다. 그리고 이 문제에서는 한 가지 조건을 더 추가하는데, triangle inequality라는 조건입니다. 이 조건은 한 vertex에서 다른 vertex로 이동할 때, 바로 가는 것이 다른 vertex를 경유하는 것보다 더 적은 비용이 든다는 것을 의미합니다. 수식으로 표현하면 c 𝑢, 𝑣 ≤ 𝑐 𝑢, 𝑤 + 𝑐(𝑤, 𝑣)가 됩니다.
  • 14. 이 문제를 근사로 찾는 것은 우선 출발점에서 시작하는 minimum spanning tree를 찾는 것으로 시작합니다. 이렇게 찾은 tree를 preorder 순으로 순회하면서 각각의 vertex들을 순서대로 잇습니다. 그 결과가 위 그림에서의 (d)입니다. (e)는 이 문제의 최적의 결과인데, 우리가 구한 값보다 23%가 더 짧습니다.
  • 15. 이 알고리듬의 근사 수준을 살펴보면 다음과 같습니다. 최적의 경로를 𝐻∗ 라고 하고, 위에서 구한 minimum spanning tree를 T라고 합시다. 이때, c(T) ≤ 𝑐(𝐻∗ )를 만족하게 됩니다. 그 이유는 𝐻∗ 는 모든 edge들을 잇는 cycle이므로 𝐻∗ 를 구성하는 edge들 가운데 하나를 지우면 tree가 되는 동시에, 이 tree는 주어진 그래프의 spanning tree가 됩니다. 우리가 구한 T가 이미 minimum 값을 가지므로 𝐻∗ 는 T보다는 항상 크거나 같은 cost를 가지게 됩니다.
  • 16. 우리가 구한 T를 preorder를 순회하는 동안 거치는 모든 vertex들을 순서대로 나열하면 a, b, c, b, h, b, a, d, e, f, e, g, e, d, a 가 되고, 이 순서를 W라고 합시다. 이때 c W = 2c(T)를 만족합니다. 그 이유는 순회하는 동안 각각의 edge를 2번씩 거쳐가기 때문입니다. 저희가 구한 순회 경로 H는 W에서 한번 거쳐간 vertex는 생략하고 다음 vertex로 바로 접근하므로 문제의 조건인 triangle inequality에 의해서 c H ≤ c(W)를 만족합니다. 위 식들을 조합하면 c H ≤ 2c(𝐻∗ ) 임을 구할 수 있고, 이 알고리듬은 2-approximation algorithm임을 알 수 있습니다.
  • 17. Greed y ap p roximation algorith m
  • 18. 이제부터는 approximation algorithm을 위한 접근 방식에 대해서 알아보겠습니다. 그 첫 번째는 greedy algorithm이고 해결할 문제는 the set-covering problem입니다. 위와 같이 검은 점을 원소로 가지는 집합 X와 이의 부분집합 𝑆 𝑛들이 주어졌을 때, 최소한의 𝑆 𝑛들로 모든 원소를 포함하는 𝑆 𝑛의 조합을 찾는 문제입니다.
  • 19. greedy algorithm을 이용해서 이 문제를 해결하는 과정은 다음과 같습니다. 현재 cover 되지 않은 원소들을 가장 많이 포함하고 있는 𝑆 𝑛을 구하려는 cover에 포함시키고, 𝑆 𝑛에 포함된 vertex들을 삭제합니다. 그리고 이와 같은 과정을 남은 vertex가 없을 때까지 반복합니다. 주어진 문제에서는 𝑆1, 𝑆4, 𝑆5, 𝑆3 𝑜𝑟 6 순서로 추가되어 결과는 4개의 𝑆 𝑛의 조합이 됩니다. 참고로 이 문제의 optimal solution은 𝑆3, 𝑆4, 𝑆5 입니다.
  • 20. 이 알고리듬의 성능은 현재 cover 되지 못한 vertex를 가장 많이 포함하는 𝑆 𝑛을 찾는 과정이 𝑂 𝑋 𝐹 이런 탐색 과정을 min( 𝑋 , 𝐹 )번 거치게 되므로 전체 time complexity는 𝑂 𝑋 𝐹 min 𝑋 , 𝐹 이 됩니다. ( 𝐹는 𝑆 𝑛들의 집합 )
  • 21. oth er algorith m d esig n tec h n iq u es
  • 22. 앞에서 살펴본 greedy algorithm 이외에도 approximation algorithm을 위한 몇 가지 일반적인 접근방식이 있으며 목록은 다음과 같습니다. Greedy algorithm Local search Enumeration and dynamic programming Linear programming relaxation Semidefinite programming relaxation Metric embedding
  • 23. 참고자료 Introduction to Algorithms 3rd (CLRS) http://en.wikipedia.org/wiki/Approximation_algorithm