본문으로 건너뛰기
김신건의 로그

Golden-section Search: 단봉 함수 최적화

· 수정 · 📖 약 1분 · 154자/단어 #algorithm #math #search #optimization
Golden-section search, 황금 분할 탐색, 삼분 탐색

정의

단봉 (unimodal) 함수 위에서 최소/최대를 찾는 탐색. 이분 탐색을 단봉 함수용으로 확장.

구간 [l, r] 을 세 등분하여 두 내부점 m1 = l + (r-l)/3, m2 = r - (r-l)/3 비교. 불량한 쪽 1/3 을 버림. O(log₃ range).

double ternary(double l, double r) {
    for (int iter = 0; iter < 200; iter++) {
        double m1 = l + (r - l) / 3;
        double m2 = r - (r - l) / 3;
        if (f(m1) < f(m2)) r = m2;   // 최대화 가정
        else l = m1;
    }
    return (l + r) / 2;
}

Golden-section

두 내부점을 황금비 (φ = (1 + √5) / 2) 로 나누면 매 반복마다 이전 계산 재사용 가능 → 함수 호출 절반.

정수 삼분 탐색

이산 단봉 함수에서 세 등분 점을 정수화. while (r - l > 2).

참고

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기