IV. Binary Search
Binary Search
Up & Down ๊ฒ์์ ํด ๋ณด์
จ๋์? 1๋ถํฐ 1000๊น์ง์ ์ ์ค ํ๋๋ฅผ, 10๋ฒ ์ ๋๋ฉด
๋ง์ถ ์ ์๋ค๋ ์ฌ์ค์ ์๊ณ ๊ณ์๋์? ์๋ง๋, ๋ชจ๋๊ฐ ์ ๋ฐ์ฉ ์๋ผ์
ํ์ธํ๋ ์ ๋ต์ ์ฌ์ฉํ ๊ฒ์
๋๋ค. ์ด ์ ๋ต์ ์ฐ๋ฆฌ๋ Binary Search ๋ผ๊ณ
๋ถ๋ฆ
๋๋ค.
$N$ ํฌ๊ธฐ์ ๋ฐฐ์ด์ด ์ ๋ ฌ๋์ด ์์์ ์๋ค๋ฉด, ์ด Up & Down ์ ๋ต์ ์ด์ฉํ์ฌ,
์ฐ๋ฆฌ๋ ํ๋ฒ ์ง๋ฌธํ ๋๋ง๋ค ์ ๋ฐ์ฉ ๋ฌธ์ ์ ํฌ๊ธฐ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค. ์๋ฅผ
๋ค์ด, 10๊ฐ์ง๋ฆฌ ๋ฐฐ์ด์ 5๋ฒ์ ์ด์ด ๋ดค๋๋ฐ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฐ๋ณด๋ค ํฌ๋ค๋ฉด,
1๋ฒ๋ถํฐ 4๋ฒ ์ฌ์ด์ ์ํ๋ ๊ฐ์ด ์์์ ์๋๊น 2๋ฒ์ด๋ 3๋ฒ์ ๋ฌผ์ด๋ณด๋ฉด
๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด, $\order{\log n}$ ์๊ฐ์ ์ ๋ ฌ๋ ๋ฐฐ์ด์์ ํน์ ํ ๊ฐ์
์ฐพ์ ์ ์์ต๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ง ์ ์ฉํฉ๋๋ค! Programming
Practice๋ค์ ํ๋ฉด์ ํ์ธํด ๋ณด์ธ์ :)
Bisection (parametric) Search
Binary Search๋ฅผ ํ์ธํ์ฌ, ๋ค์๊ณผ ๊ฐ์ ์ง๋ฌธ์ ๋น ๋ฅด๊ฒ ๋ตํ ์ ์์ต๋๋ค.
์ด๋ค ํจ์ $f : \R \to \R$๊ฐ ๋จ์กฐ ์ฆ๊ฐํ๋ ์ฐ์ ํจ์์ผ ๋, $f(x) = k$ ์ธ
$x$๋ฅผ ์ฐพ์๋ผ.
์ ํํ ๋งํ์๋ฉด, ์ด ์ง๋ฌธ์ ์ ํํ๊ฒ ๋ตํ ํ์๊น์ง๋ ์๊ณ , ์ถฉ๋ถํ ๊ฐ๊น์ด
$x$๋ฅผ ์ฐพ์ผ๋ฉด ๋ฉ๋๋ค. ์ด์ , $f$๊ฐ ๋จ์กฐ์ฆ๊ฐํ๋ค๋ ์ฑ์ง์ ์ด์ฉํ์ฌ, ์ถฉ๋ถํ
์์ ์์ ์ถฉ๋ถํ ํฐ ์๋ก ์์ชฝ ๋๊ฐ์ ์ก์ ๋๊ณ , ๊ทธ ์ฌ์ด๋ฅผ ๊ตฌ๊ฐ์ผ๋ก ์ด๋ถ
ํ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, $2^{1/3}$ ์ ๊ณ์ฐํด์ผ ํ๋ค๊ณ ์๊ฐํด ๋ด
์๋ค. ์ด๋, ์ฐ๋ฆฌ๋ ๋ต์ด
๋๋ $x$๊ฐ $x^3 = 2$ ๋ฅผ ๋ง์กฑํ๋ฉฐ, ์ด ๊ฐ์ด $0$๊ณผ $2$ ์ฌ์ด์ ์์์
์๋๋ค. ์ด ๊ตฌ๊ฐ์ ์ค๊ฐ์ธ $1$์ ์ด์ฉํ์ฌ, $1^3 = 1 < 2$ ์ด๋ฏ๋ก, ๋ต์ด
$1$๊ณผ $2$ ์ฌ์ด์์ ์๋๋ค. ์ด์ , $1.5^3 > 2$ ์ด๋ฏ๋ก, ๋ต์ด 1๊ณผ $1.5$
์ฌ์ด์์ ์๋๋ค. ์ด์ $1.25$๋ฅผ ์๋ํ๊ณ ...
์ด ์๊ณ ๋ฆฌ์ฆ์ Parametric Search๋ผ๊ณ ํฉ๋๋ค (์ฌ์ค์, ์ด ๋จ์ด๋ ๋
์ผ๋ฐ์ ์ธ ์ํฉ์์ ์ฐ๋ ๋ง์
๋๋ค. ๊ตณ์ด ๋งํ์๋ฉด Bisection search ์ ๋๊ฐ
์ ํํ ๊ฒ ๊ฐ์๋ฐ, ์ฐ๋ฆฌ๊ฐ ๊ด์ฌ์๋ Parametric Search๊ฐ ์ด์ชฝ์ด
๋๋ถ๋ถ์ด๋ผ์ ๊ทธ๋ฐ ๊ฒ ๊ฐ๊ธฐ๋ ํฉ๋๋ค). Parametric Search๋ Binary Search์
์ผ๋ฐํ์ด๋ฉด์, ์ ๋ง ๋ง์ ๊ฒ๋ค์ ํ ์ ์์ต๋๋ค. ์์ผ๋ก ๋ํ ์ค๋น๋ ๊ณต๋ถ๋ฅผ
๋ ํ๋ค ๋ณด๋ฉด, ์ด ์์ด๋์ด๋ฅผ ์ด์ฉํ๋ ๋ฌธ์ ๋ฅผ ์ ๋ง ๋ง์ด ๋ง๋๊ฒ ๋ฉ๋๋ค.
Parametric๊ณผ Binary ๋ฅผ ๊ตฌ๋ถํ์ง ์๊ณ Binary Search๋ฅผ ์ด์ฉํ๋ค๊ณ
๋งํ๋ ์ฌ๋๋ ๋ง์ด ์๊ณ , ์ฌ์ค ์ด๊ฑธ ๊ตณ์ด ๊ตฌ๋ถํ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํ์ง๋
์์ต๋๋ค. Binary๋ผ๊ณ ์ฐ๋๋ผ๋ ๋งฅ๋ฝ์ ๋ฐ๋ผ ์ดํดํด ์ฃผ์ธ์.
Ternary Search
* ์ด subsection์ skipํด๋ ๋ค ๋ด์ฉ์ ์ํฅ์ด ์์ต๋๋ค.
์ด๋ค ํจ์ $f : \R \to \R$๊ฐ ๋ณผ๋กํจ์๋ผ๊ณ ํ ๋, $f(x)$ ์ ์ต์๊ฐ์ ์ฐพ๋
๋ฌธ์ ๋ฅผ ์๊ฐํด ๋ด
์๋ค. ๋ง์ฝ $f$๊ฐ ๋ฏธ๋ถ ๊ฐ๋ฅํ ํจ์๋ผ๋ฉด, $f$์ ๋ํจ์๋ฅผ
์๊ฐํ์ ๋, $fโ(x) = 0$์ด ๋๋ $x$๋ฅผ Binary Search๋ก ์ฐพ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ
์ ์๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๊ฐ ์๊ฐํ๋ ํจ์๊ฐ, โ๋์ถฉ ๋ณผ๋กํ๊ฒ ์๊ธฐ๊ธด
ํ์ง๋งโ ๋ฏธ๋ถ์ด ๊ฐ๋ฅํ์ง ์์ ์๋ ์์ต๋๋ค. ์ด๊ฒฝ์ฐ์, $\log$ ์๊ฐ์
์ต์๊ฐ์ ์ฐพ๋ ๋ฐฉ๋ฒ์ ์๊ฐํด ๋ด
์๋ค. ๋จ, ์ด ํจ์ $f$๊ฐ ํํํ ๊ตฌ๊ฐ์ ๊ฐ์ง
์๋๋ค๊ณ ํฉ์๋ค.
-
์ถฉ๋ถํ ์์ $L$๊ณผ ํฐ $R$์ ์๊ฐํฉ๋๋ค.
-
$[L, R]$์ ์ผ๋ฑ๋ถ์ ์ธ $p, q$๋ฅผ ์๊ฐํฉ๋๋ค.
-
์ผ๋ฐ์ฑ์ ์์ง ์๊ณ , $f(p) > f(q)$ ๋ผ๊ณ ๊ฐ์ ํฉ์๋ค. ์ด๋, ๋ง์ฝ ์ต์๊ฐ์ด $[L, p]$์ ์๊ณ , ๊ทธ ์ต์์ ์ด $x = t$๋ผ๋ฉด, ํจ์๊ฐ ์ ์ด๋ $t$์์ $p$๊น์ง ์ฌ์ด์์ ์ฆ๊ฐํ๋ ๊ตฌ๊ฐ์ด ์๊ณ , ๋ค์ $q$๊น์ง ๊ฐ์ํด์ผ ํฉ๋๋ค. ์ด๋ $f$์ ๋ณผ๋ก์ฑ๊ณผ ๋ชจ์์ด๋ฏ๋ก, ์ต์๊ฐ์ด $[p, R]$ ์ฌ์ด์ ์์ต๋๋ค.
-
์ฐ๋ฆฌ๊ฐ ๋ณด๋ ๊ตฌ๊ฐ์ ๊ธธ์ด๊ฐ $\frac{2}{3}$์ผ๋ก ์ค์ด๋ค์์ต๋๋ค!
์ด์ , ์๊ฐํด ๋ณด๋ฉด ๋งค๋ฒ $2/3$์ผ๋ก ๊ตฌ๊ฐ์ ์ค์ด๋ ๊ฒ์ด๋ฏ๋ก, $\log_{3/2} n$ ์๊ฐ์ ($n$์ ์ฐ๋ฆฌ๊ฐ ํ์ํ ์ ๋ฐ๋์, ๊ตฌ๊ฐ ๊ธธ์ด์ ๋น์จ์ ๋๋ค. ๊ฐ๋จํ ๋งํด, $[0, 10]$ ์ฌ์ด์์ $0.001$ ์์ค์ ์ ๋ฐ๋๋ฅผ ์ป๋ ๊ฒ์ 1๋ง ์นธ ์ค ํ๋๋ฅผ ์ฐพ๋ ๋๋์ผ๋ก ์ ๊ทผํ๋ฉด ๋๋ค๋ ์๊ธฐ์ ๋๋ค) ๋ต์ ์ป์ ์ ์๊ณ , Asymptoticํ๊ฒ๋ ๋ก๊ทธ์ ๋ฐ์ ๋ฌด์๋ฏธํ๋ฏ๋ก $\log$ ์๊ฐ ์๊ณ ๋ฆฌ์ฆ์ด ๋ฉ๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ Ternary Search, ์ผ๋ถ ํ์์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
์ด๋ถ ํ์์ด๋ ์ผ๋ถ ํ์์ ๊ทธ ์์ฒด๋ก๋ ๋งค์ฐ ์๋ฏธ์์ง๋ง, ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๊ฒฐํฉ๋์์ ๋ ๊ทธ ์ ์ฉ์ฑ์ด ๋์ฑ ๋ถ๊ฐ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฒ์ ์ ํ์ ๋ ์๊ฐํด๋ด๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์, ๋ง์ ์ฐ์ต์ด ํ์ํฉ๋๋ค.