์ดํƒœํ™
ํ™'story
์ดํƒœํ™
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (171)
    • TW (39)
    • AI (47)
      • ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ (10)
      • Kaggle (2)
      • Machine Learning (26)
      • Computer Vision (0)
      • Deep Learning (0)
      • ROS2 (7)
    • Computer Science (29)
      • Data Structure (0)
      • Algorithm (18)
      • Computer Architecture (5)
      • SOLID (0)
      • System Programing (6)
    • LOLPAGO (10)
      • ํ”„๋ก ํŠธ์—”๋“œ (10)
      • ๋ฐฑ์—”๋“œ (0)
    • BAEKJOON (2)
    • React (5)
    • ์–ธ์–ด (8)
      • C++ (8)
    • GIT (0)
    • MOGAKCO (19)
    • ๋ฏธ๊ตญ ์—ฌํ–‰๊ธฐ (3)
    • etc. (7)
      • Blog (2)
      • ์ฝœ๋ผํ†ค (2)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ๊ฒฝ์‚ฌํ•˜๊ฐ•๋ฒ•
  • computerscience
  • pytorch
  • algorithm
  • baekjoon
  • ML
  • react
  • ๋”ฅ๋Ÿฌ๋‹
  • NLP
  • ๊ธฐ๊ณ„ํ•™์Šต
  • C++
  • tw
  • computer architecture
  • LOLPAGO
  • Ai
  • ROS2
  • ๋จธ์‹ ๋Ÿฌ๋‹
  • kaggle
  • ๋ฐฑ์ค€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
์ดํƒœํ™

ํ™'story

[Algorithm] ๋ถ„ํ• ์ •๋ณต(5) - Median of Medians
Computer Science/Algorithm

[Algorithm] ๋ถ„ํ• ์ •๋ณต(5) - Median of Medians

2022. 10. 4. 10:49

๐Ÿค”๋ถ„ํ• ์ •๋ณต

๋ถ„ํ• ์ •๋ณต์ด๋ž€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•œ ๋’ค ๋ถ„ํ• ๋œ ๋ฌธ์ œ๋“ค์„ ์žฌ๊ท€์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜์—ฌ ํ•ด๋‹น ๋‹ต์„ ์ ์ ˆํ•˜๊ฒŒ ์กฐํ•ฉํ•˜์—ฌ ํฐ ๋ฌธ์ œ์˜ ๋‹ต์„ ์ œ์‹œํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋•Œ ๋ถ„ํ• ๋œ ๋ฌธ์ œ๋“ค์„ ์กฐํ•ฉํ•˜์—ฌ ํฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์„ Conquer์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Median of Medians ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

 

 

 

๐Ÿ”Ž Median Of Medians

ํฌ๊ธฐ๊ฐ€ $n$์ธ ๋ฐฐ์—ด A๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ A์—์„œ k๋ฒˆ์งธ ์ž‘์€ ์›์†Œ๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ฐพ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์•ž์„  Quicksellect์˜ ์‹œ๊ฐ„๋ณต์žก๋„ ๋ถ„์„์—์„œ ๊ฒฐ๊ตญ Quickselect์˜ ์„ฑ๋Šฅ์€ '์ข‹์€ pivot์„ ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ฒŒ ์ฐพ์•„๋‚ด๋Š”๊ฐ€'์— ๋‹ฌ๋ ค์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

์ข‹์€ pivot์„ ์ฐพ๊ธฐ ์œ„ํ•œ ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ๋‹ค๋ฉด ์„ฑ๋Šฅ์ด ์ข‹์•„์ง„๋‹ค๋Š” ๊ฒƒ์ด๊ณ  ๊ทธ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๊ฐ€ Median Of Medians์ž…๋‹ˆ๋‹ค.

 

 

 

Step 0: ๋จผ์ € Base Case๋กœ 'A์˜ ํฌ๊ธฐ๊ฐ€ 25์ดํ•˜์ด๋ฉด ๊ทธ๋ƒฅ A๋ฅผ sortingํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค'๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

Step 1: ์ดํ›„ A์˜ ํฌ๊ธฐ๊ฐ€ 25 ์ด์ƒ์ด๋ฉด A๋ฅผ ํฌ๊ธฐ๊ฐ€ 5์ธ $n/5$๊ฐœ์˜ subarray ๋“ค๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.

 

 

 

 

 

Step 2: ๊ฐ subarray์˜ median ์ฆ‰ 3๋ฒˆ์งธ๋กœ ์ž‘์€ element๋ฅผ ์ฐพ์€ ์ดํ›„ ์ด๋“ค์„ ๋ฐฐ์—ด M์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋•Œ ์ค‘์š”ํ•œ ๊ฒƒ์€ subarray์—์„œ median๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

์™œ๋ƒํ•˜๋ฉด ํฌ๊ธฐ๊ฐ€ 5์ธ ๋ฐฐ์—ด์—์„œ median๊ฐ’์„ ์ฐพ๋Š” ๋ฐ์—๋Š” ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ํฌ๊ธฐ๊ฐ€ ์ƒ์ˆ˜์—ฌ์„œ $O(1)$์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

์ฐธ๊ณ ๋กœ ์ตœ์ ์˜ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด median๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” 6๋ฒˆ์˜ ๋น„๊ต๋งŒ ์ง„ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

 

Step 3: M์˜ median์„ quickselect using median of medians๋กœ ์ฐพ์•„๋‚ด๊ณ  ์ด๋ฅผ pivot์œผ๋กœ ๋‘ก๋‹ˆ๋‹ค.

 

์ด๋•Œ median of medians๋Š” A[1] A[8] ... A[43] ์ค‘ ์–ด๋–ค ๊ฐ’์ด ์„ ํƒ๋˜์–ด๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค.

 

๊ทธ ๋‹ค์Œ์€ ์•ž์„  quick select์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ง„ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

M์„ ํ‘ธ๋Š” ๊ฒƒ์„ ์ผ์ข…์˜ subproblem์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ํ’€๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

์ด๋ฅผ ์ˆ˜๋„์ฝ”๋“œ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

 

์ด๋•Œ $m$์ด subarray ๊ฐœ์ˆ˜๊ฐ€ ๋˜๋ฉฐ  $MedianOfFive(A[5i - 4 .. 5i])$๋ฅผ ํ†ตํ•ด 5๊ฐœ์ค‘ 3๋ฒˆ์งธ๋กœ ์ž‘์€ ์ˆซ์ž๋ฅผ $M[i]$์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

๋ฐฐ์—ด M์— ๋ชจ์•„๋‘” pivot๋“ค์„ MomSelect๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์žฌ๊ท€์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ mom(median of medians)์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. 

 

์ดํ›„ partitioning ํ•œ ์ดํ›„ A1 ํ˜น์€ A2๋กœ ๊ฐ€์„œ subproblem์„ ํ•ด๊ฒฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์ฆ‰ ํ‰๊ท ์ ์œผ๋กœ ์ด ๋‘ ๋ฒˆ์˜ subproblem์„ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

๐Ÿ”Ž Median Of Medians๋Š” ์–ผ๋งˆ๋‚˜ ์ข‹์€ pivot์ธ๊ฐ€?

 

 

 

 

 

 

์œ„์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ๊ฐ๊ฐ์˜ subarray๊ฐ€ ์œ„์—์„œ ์•„๋ž˜ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ๋˜์–ด์žˆ๊ณ  ๋…ธ๋ž€์ƒ‰ ๋ถ€๋ถ„๋˜ํ•œ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ด๋•Œ ํŒŒ๋ž€์ƒ‰ ๋ถ€๋ถ„์ด mom์ด ๋ฉ๋‹ˆ๋‹ค.

 

์ด๋•Œ ์ฃผ์˜ํ•  ์ ์€ ์ฒซ ๋ฒˆ์งธ subarray์˜ ๋…ธ๋ž€์ƒ‰ ์•„๋ž˜์— ์žˆ๋Š” ์š”์†Œ๊ฐ€ ํฐ ์ง€ ๋‹ค์Œ subarray๋“ค์˜ ๋…ธ๋ž€์ƒ‰ ์œ„์— ์žˆ๋Š” ์š”์†Œ๊ฐ€ ํฐ ์ง€๋Š” ์•Œ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

์ฆ‰, ์•„๋ž˜์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋นจ๊ฐ„์ƒ‰ ๋ฐ•์Šค ์•ˆ์— ํ•ด๋‹นํ•˜๋Š” ์š”์†Œ๋“ค์€ mom๋ณด๋‹ค ๋ฌด์กฐ๊ฑด ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

 

์ „์ฒด element์˜ ์ˆ˜๊ฐ€ $n$์ด๋ผ๊ณ  ํ–ˆ์„ ๋•Œ mom์€ ์ ์–ด๋„ $\frac{3n}{10}$๊ฐœ์˜ ์š”์†Œ๋ณด๋‹ค๋Š” ๋ฌด์กฐ๊ฑด ํฝ๋‹ˆ๋‹ค.

 

 

 

 

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์•„๋ž˜์˜ ๊ทธ๋ฆผ์—์„œ ๋นจ๊ฐ„ ๋ฐ•์Šค ์•ˆ์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์€ mom๋ณด๋‹ค ๋ฌด์กฐ๊ฑด ํฌ๊ฑฐ๋‚˜ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฏ€๋กœ mom์€ ์ ์–ด๋„ $\frac{3n}{10}$๊ฐœ์˜ ์š”์†Œ๋ณด๋‹ค๋Š” ๋ฌด์กฐ๊ฑด ์ž‘์Šต๋‹ˆ๋‹ค.

 

 

 

 

๋”ฐ๋ผ์„œ mom์„ ํ”ผ๋ด‡์œผ๋กœ ํ–ˆ์„ ๋•Œ partitioningํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ๋ถ€๋ถ„์„ ์ œ์™ธํ•œ ๋ถ€๋ถ„์˜ subproblem๋งŒ์„ ํ•ด๊ฒฐํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์—  ํ•ด๊ฒฐํ•ด์•ผํ•˜๋Š” subprooblem์˜ ํฌ๊ธฐ๋Š” ์ตœ๋Œ€ $\frac{7n}{10}$์ž…๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

๐Ÿ”Ž Median Of Medians์˜ ์‹œ๊ฐ„๋ณต์žก๋„

$T(n)$์„ ํฌ๊ธฐ๊ฐ€ $n$์ธ ๋ฐฐ์—ด์—์„œ quickselect with median of medians๋ฅผ ํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” worst-case time์ด๋ผ๊ณ  ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

$T(n)$์€ ๋ฐฐ์—ด M์—์„œ median์„ ์ฐพ๋Š” ์‹œ๊ฐ„ +  partitioning ํ›„ subproblem์„ ํ•ด๊ฒฐํ•˜๋Š” ์‹œ๊ฐ„ + $n/5$๊ฐœ์˜ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜๋Š” ์‹œ๊ฐ„($n/5 * O(1) + partitioning)์ด๋ฏ€๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

$$T(n) = T(n/5) + T(7n/10) + O(n)$$

 

์œ„์˜ ์‹์€ recurrence relation์— ๋”ฐ๋ผ ํŠน์ • level์˜ ๋…ธ๋“œ์— ํ•ด๋‹นํ•˜๋Š” subproblem ๋“ค์˜ input size์˜ ์ด ํ•ฉ์€ ์ด์ „ level์˜ ๋…ธ๋“œ์— ํ•ด๋‹นํ•˜๋Š” subproblem์˜ input size์™€ ๋น„๊ตํ•˜์—ฌ $9/10$๋ฐฐ ์ด์ƒ์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

์ฆ‰, ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

$$T(n) ≤ T(7n/10) + O(n)$$

 

Master Theorem์— ์˜ํ•ด $T(n) = O(n)$์ด ๋ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Computer Science > Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(2) - DFS(๊นŠ์ด์šฐ์„ ํƒ์ƒ‰)(1)  (0) 2022.10.08
[Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(1) - ๊ทธ๋ž˜ํ”„์˜ ๊ธฐ๋ณธ ์šฉ์–ด  (0) 2022.10.04
[Algorithm] ๋ถ„ํ• ์ •๋ณต(2) - Multiplication  (0) 2022.09.29
[Algorithm] ๋ถ„ํ• ์ •๋ณต(1) - Master Theorem๊ณผ ์ผ๋ฐ˜ํ•ด  (0) 2022.09.28
[Algorithm] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ณธ(2) - Basic Arithmetic  (0) 2022.09.28
    'Computer Science/Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(2) - DFS(๊นŠ์ด์šฐ์„ ํƒ์ƒ‰)(1)
    • [Algorithm] ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(1) - ๊ทธ๋ž˜ํ”„์˜ ๊ธฐ๋ณธ ์šฉ์–ด
    • [Algorithm] ๋ถ„ํ• ์ •๋ณต(2) - Multiplication
    • [Algorithm] ๋ถ„ํ• ์ •๋ณต(1) - Master Theorem๊ณผ ์ผ๋ฐ˜ํ•ด
    ์ดํƒœํ™
    ์ดํƒœํ™
    ๊ณต๋ถ€ํ•˜์ž ํƒœํ™์•„

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”