CS 기초 · 심화
NP-hard 문제의 경우 다항 시간 내에 최적해를 찾는 것이 불가능합니다. 이럴 때 근사 알고리즘(Approximation Algorithms)을 사용하는데, TSP(Traveling Salesperson Problem)나 Vertex Cover와 같은 문제에서 근사 알고리즘이 어떻게 설계될 수 있는지 설명하고, 근사 비율(Approximation Ratio)의 의미와 중요성, 그리고 이를 증명하는 방법에 대해 논하시오.
힌트 · 근사 알고리즘은 최적해에 근접한 해를 다항 시간 내에 찾는 것을 목표로 하며, 근사 비율은 찾아낸 해의 비용이 최적해의 비용과 비교하여 얼마나 나쁜지를 나타내는 척도입니다. 이는 최적해를 알 수 없는 상황에서 알고리즘의 품질을 평가하는 중요한 기준입니다.
근사 비율삼각 부등식최소 신장 트리 (MST)탐욕 알고리즘선형 계획 완화 (Linear Programming Relaxation)
모범답안
NP-hard 문제에서 최적해를 다항 시간 내에 찾기 어려울 때, 근사 알고리즘은 현실적인 대안입니다. TSP의 경우, 삼각 부등식이 성립하는 그래프에서 최소 신장 트리(MST)를 구한 후, 이를 순회하는 방식으로 2배 근사 알고리즘을 설계할 수 있습니다. Vertex Cover 문제에서는 탐욕 알고리즘이나 선형 계획 완화 기법을 활용하여 근사해를 찾습니다.
근사 비율은 알고리즘이 찾은 해의 비용이 최적해의 비용 대비 얼마나 나쁜지를 나타내는 척도입니다. 예를 들어, 근사 비율이 'c'라면, 알고리즘이 찾은 해의 비용은 최적해 비용의 최대 'c'배까지 허용된다는 의미입니다. 이는 알고리즘의 성능을 정량적으로 평가하고 보장하는 데 매우 중요합니다. 근사 비율 증명은 보통 알고리즘의 해와 최적해 사이의 관계를 수학적으로 분석하여 이루어집니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 알고리즘 면접 질문
- 평면상의 수많은 선분들 중에서 교차하는 모든 쌍을 효율적으로 찾는 문제(Line Segment Intersection)를 해결하기 위한 Line Sweep 알고리즘의 원리를 설명하고, 이 알고리즘이 O((N+K) log N) (N은 선분 개수, K는 교차점 개수) 시간 복잡도를 가지는 이유를 자료구조(예: BST)의 역할과 함께 설명하시오.
- 일반적인 세그먼트 트리로는 처리하기 어려운 '구간 내 모든 값에 특정 연산 적용 후 특정 값으로 클램핑' 또는 '구간 내 최댓값을 특정 값으로 변경'과 같은 복잡한 구간 업데이트를 효율적으로 처리하기 위한 Segment Tree Beats(혹은 Advanced Lazy Propagation)의 동작 원리를 설명하고, 어떤 조건에서 이러한 최적화가 가능하며 실제 어떤 문제에 적용될 수 있는지 예시를 들어 설명하시오.
- 대규모 데이터셋에서 정확한 해를 찾기 어렵거나 시간이 너무 오래 걸릴 때, 확률적 알고리즘(Probabilistic Algorithms)이 대안이 될 수 있습니다. Monte Carlo 알고리즘과 Las Vegas 알고리즘의 차이점을 명확히 설명하고, 각각 어떤 종류의 문제에 적합하며 실제 시스템(예: 스트리밍 데이터 처리, 암호화)에서 어떻게 활용될 수 있는지 구체적인 사례를 들어 설명하시오.