근사 알고리즘
근사 알고리즘은 정확한 최적해 대신 품질이 보장되는 근사해를 효율적으로 구하는 방법이다. 알고리즘의 최적화 알고리즘 설계 분야에서 다루며, 문제를 어떤 하위 단계로 표현하고 어떤 계산을 생략하거나 공유할지를 결정하는 방법이다. 이 기법을 적용할 때에는 결과의 정확성뿐 아니라 종료 조건,...
| 분류 | 알고리즘 · 최적화 알고리즘 설계 |
|---|---|
| 목적 | 정확한 최적해 대신 품질이 보장되는 근사해를 효율적으로 구하는 방법 |
| 핵심 과정 | 최소화 문제에서는 구한 값과 최적값의 비율을 분석해 근사비를 보장한다 |
| 시간·연산 비용 | 문제와 요구 근사비에 따라 다르며 다항 시간 근사 알고리즘이 중요한 대상 |
| 적용 전제 | 근사 품질을 비교할 목적 함수와 이론적 최적값 경계를 정의해야 한다 |
| 관련 분야 | 알고리즘 설계, 계산 복잡도 |
| 참고 자료 | MIT 알고리즘 강의 |
근사 알고리즘은 정확한 최적해 대신 품질이 보장되는 근사해를 효율적으로 구하는 방법이다. 알고리즘의 최적화 알고리즘 설계 분야에서 다루며, 문제를 어떤 하위 단계로 표현하고 어떤 계산을 생략하거나 공유할지를 결정하는 방법이다. 이 기법을 적용할 때에는 결과의 정확성뿐 아니라 종료 조건, 필요한 상태의 표현과 입력 조건을 함께 정의한다.[1]
핵심 처리 과정은 다음과 같다. 최소화 문제에서는 구한 값과 최적값의 비율을 분석해 근사비를 보장한다. 일부 문제는 근사 스킴을 통해 주어진 오차 허용치에 맞춰 실행 시간과 품질을 조절한다. 설계 시에는 각 단계에서 보존되어야 할 불변식이나 조건을 정의하고, 결과를 반환하기까지 어떤 상태가 수정되는지를 추적한다.
계산 자원은 문제의 크기와 구현 방식에 좌우된다. 문제와 요구 근사비에 따라 다르며 다항 시간 근사 알고리즘이 중요한 대상. 적용 조건은 근사 품질을 비교할 목적 함수와 이론적 최적값 경계를 정의해야 한다라는 점이다. 이 조건이 성립하는지를 먼저 확인해야 동일한 절차를 다른 입력에도 일관되게 사용할 수 있다.
집합 덮개, 정점 덮개, 여행하는 외판원 문제의 일부 제약된 형태 등에서 사용한다. 휴리스틱 알고리즘과 달리 증명된 근사비를 갖는지가 핵심 구별점이다. 실제 구현에서는 상태 표현, 자료구조 선택, 재귀 호출 또는 반복 처리, 메모리 접근과 경계 입력을 함께 고려한다. 이론적 계산 모델과 구체적인 프로그램의 시간·공간 비용은 입력 분포와 실행 환경에 따라 달라질 수 있다.[2]