Median of Medians (MoM)
- 퀵셀렉트 알고리즘 이용 → 최악의 경우를 방지하기 위해 랜덤 pivot말고 좀 똑똑하게 고르자 → approximate median으로 pivot 고름(대략적인 중앙값) → MoM이 pivot 이름 → 이를 통해 i번째 원소 찾기 가능
- 보다 밸런스 파티션을 보장함
-Select Procedure
- 5개원소로 그룹 만듦 → [n/5]개의 그룹 탄생
- 각 그룹을 정렬한 후 해당 그룹 별로 median(중앙값) 찾기 → 중간값들이 새 배열 형성
- 새 배열인 median들 중에서 median 찾아서 pivot으로 삼음 (MoM 재귀적 호출 통해) ⇒ T([n/5])
- 기존 배열을 pivot 기준으로 작은 값, 큰 값 두 구간으로 나눔 → 이때 pivot이 k번째 작은 값임을 알 수 있음
- pivot인 k번째 원소를 통해 재귀적으로 i번째 원소 찾기 ⇒ T(3n/4)
- i = k : 바로 찾음
- i < k: 왼쪽 구간에서 다시 MoM 재귀 호출하여 찾아야 됨
- i > k: 오른쪽 구간에서 다시 MoM 재귀 호출하여 찾아야 됨
-재귀식
-시간 복잡도
- T(n) = O(n)
-Experimental Result
- MoM이 pivot을 선택하는데에 있어서는 좋은 알고리즘임
- 그러나 현실 데이터에선 MoM을 결정하는 과정에서 오버헤드가 생겨서 느림
- 따라서 randomized quick select가 종종 MoM 성능을 넘어섬
'🌙CS > 알고리즘' 카테고리의 다른 글
DP (0) | 2025.01.07 |
---|---|
Backtracking (1) | 2025.01.07 |
[Backtracking] 미로 탈출 (0) | 2024.11.22 |
[DP] LCS (Longest Common Subsequence) (1) | 2024.11.21 |
Medians and Order Statistics (0) | 2024.10.26 |