๐ง ๊ณฑํ๊ธฐ ์๊ณ ๋ฆฌ์ฆ ์ฑ๋ฅ ๋ถ์
์ฐ๋ฆฌ๊ฐ ํํ ๊ณฑํ๊ธฐ ๊ณ์ฐ์ ํ ๋ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ํตํด n-bit ์ด์ง์ ๊ณฑํ๊ธฐ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ตฌํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ฐ์ ์ผ๋ฐ์ ์ธ ๊ณ์ฐ ๊ณผ์ ์ ์๋์ ๊ฐ์ต๋๋ค.
๊ณฑํ๊ธฐ์ ๊ณ์ฐ์์๋ ๊ณฑํ๋ ์(y)์ ๊ฐ bit์ ๋ํ์ฌ, ์ด๋ ์ฐ์ฐ(์ฃผํญ์ ํ์ดํ๋ก ํ์)์ ์งํํ๊ฒ ๋ฉ๋๋ค.
์ฒซ ๊ณผ์ ์์๋ 0๋ฒ, ๋๋ฒ์งธ ๊ณผ์ ์์๋ 1๋ฒ, ์ธ๋ฒ์งธ ๊ณผ์ ์์๋ 2๋ฒ, .... n๋ฒ์งธ ๊ณผ์ ์์๋ n-1๋ฒ์ ์ด๋ ์ฐ์ฐ์ด ํ์ํฉ๋๋ค.
์ฆ ์ด๋ฅผ ๋น ์ค ํ๊ธฐ๋ฒ์ ํตํด ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$$O(1) + O(2) + \cdots + O(n-1) = O(n^{2})$$
์ด๋ ์ฐ์ฐ์ ๋ชจ๋ ์งํํ ํ์๋, ์ต๋ 2n bit๋ก ์ด๋ฃจ์ด์ง ์ซ์ n๊ฐ์ ๋ํ์ฌ add ์ฐ์ฐ์ ์งํํด์ผ ํฉ๋๋ค.
์ด๋ ํ๋ฒ์ ๋ง์ ๊ณผ์ ์์๋ 2๋ฒ์ ๋นํธ ์ฐ์ฐ(์บ๋ฆฌ ๋นํธ ํฌํจ)์ด ์ต๋ 2n๋ฒ ํ์ํฉ๋๋ค. ($O(n)$)
๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ๋ง์ ์ n-1 ๋ฒ ์ด๋ฃจ์ด์ง๋ฏ๋ก ์ด ์๊ฐ ๋ณต์ก๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$$O(n) + O(n) + \cdots + O(n) = O(n^{2})$$
์ฆ ๊ณฑ์ ์ ํ์ํ ์ด ์๊ฐ ๋ณต์ก๋๋ $O(n^{2})$ ์ ๋๋ค.
๐ง ๋ ๋ค๋ฅธ ๊ณฑํ๊ธฐ ์๊ณ ๋ฆฌ์ฆ
์ด๋ฒ์ n - bit ์ด์ง์์ ํด๋นํ๋ ๋ ์ญ์ง์๋ฅผ ๊ณฑํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ฎ๐จ ๋ ์ญ์ง์ x์ y ๊ณฑํ๊ธฐ
1. ์งํฉ $S = \varnothing $ ๋ก ๋ก๋๋ค.
2. $y = 0$์ผ ๊ฒฝ์ฐ 0์ ๋ตํ๊ณ ์ข ๋ฃํฉ๋๋ค.
3. $y$ ๊ฐ ํ์์ธ ๊ฒฝ์ฐ ์์์ $(x, y)$ ๋ฅผ ์งํฉ $S$ ์ ์ถ๊ฐํฉ๋๋ค.
4. $x$์ 2๋ฅผ ๊ณฑํ๊ณ , $y$๋ฅผ 2๋ก ๋๋๋๋ค. (์ด๋ ์์์ ์ดํ๋ ๋ฒ๋ฆฝ๋๋ค.)
์ด ์๋ฅผ ๊ฐ๊ฐ $x', y'$ ์ด๋ผ ํ ๋, $y'$์ด ํ์์ธ ๊ฒฝ์ฐ $(x', y')$ ์ $S$ ์ ์ถ๊ฐํ๊ณ , $x$๊ณผ $y$๋ฅผ ๊ฐ๊ฐ $x'$, $y'$ ์ผ๋ก ๋ฐ๊พธ์ด์ค๋๋ค.
5. ๊ณผ์ 3, 4๋ฅผ $y=0$ ์ด ๋ ๋๊น์ง ๋ฐ๋ณตํฉ๋๋ค.
6. ์งํฉ $S$ ์ ์ํ ์์์์ ์ผ์ชฝ์ ์๋ ์ซ์๋ค์ ๋ชจ๋ ๋ํด์ค๋๋ค.
์ดํด๊ฐ ์๋ ์๋ ์์ผ๋ ํด๋น ๊ณผ์ ์ ์์๋ฅผ ํตํด ์งํํค ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
ํด๋น ๊ณผ์ ์ ์ฌ์ค ์์ ๋ฐฐ์ด ๋ฐฉ๋ฒ๊ณผ ์์ ํ๊ฒ ๋์ผํ ๋ฐฉ๋ฒ์ ๋๋ค.
์ฆ $y$๊ฐ ํ์์ธ ๊ฒฝ์ฐ $x$ ๋ฅผ ์์์ ์งํฉ์ ์ถ๊ฐํ๋ ๊ฒ์, $y$ ์ ๋ง์ง๋ง ๋นํธ๊ฐ 1์ธ ๊ฒฝ์ฐ $x$ ๋ฅผ ๋ชจ๋ ๊ณฑํด์ฃผ๋ ๊ณผ์ ์ ํด๋นํ๋ฉฐ,
$x$์ 2๋ฅผ ๊ณฑํ๋ ๊ณผ์ ์ ๋ง์ ์ฐ์ฐ์ ์ํด ์ผ์ชฝ์ผ๋ก ํ ์นธ ์ด๋ํ๋ ์ฐ์ฐ(๋ง์ง๋ง ๋นํธ์ 0์ ๋ถ์)๊ณผ ๋์ผํฉ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก $y$ ๋ฅผ 2๋ก ๋๋๋ ๊ณผ์ ์ญ์ y์ ๋นํธ๋ฅผ ์ฐ์ธก์ผ๋ก 1์นธ ์ด๋์ํค๋ฉฐ ๋ง์ง๋ง ๋นํธ๋ฅผ ๋ฒ๋ฆฌ๋ ๊ณผ์ ๊ณผ ๋์ผํฉ๋๋ค.
์ ์๊ณ ๋ฆฌ์ฆ์ ์ฝ๋๋ก ์์ฑํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
fun multiply(x: Int, y: Int): Int {
if ( y == 0 ) return 0
val z = multiply(x, y / 2) // ์ต๋ n๋ฒ ํธ์ถ
if (y % 2 == 0)
return 2 * z
else
return x + 2 * z // add -> O(n)
}
$O(n)$ ์ ์์ ์ ์ต๋ $n$ ๋ฒ ํธ์ถํ๋ฏ๋ก, ์๊ฐ ๋ณต์ก๋๋ $O(n^{2})$ ์ ๋๋ค.
๐ญ ์ ์ต๋ n๋ฒ ํธ์ถํ๋ ๊ฑด๊ฐ์? ใ ใ
$y$ ๋ n๋นํธ ์ด์ง์์ด๋ฏ๋ก, ํ๋ฒ์ ํธ์ถ๋ง๋ค ํ ๋นํธ์ฉ ์ฐ์ธก์ผ๋ก ์ด๋(๋๋๊ธฐ 2)ํ์ฌ ๋ง์ง๋ง ๋นํธ๊ฐ ์ฌ๋ผ์ง๋๋ค.
๋ฐ๋ผ์ $y$ ์ ๋นํธ ์์ธ n๋ฒ ๋งํผ ํจ์๊ฐ ํธ์ถ๋๋ ๊ฒ์ ๋๋ค.
๐ญ ์ ์ฝ๋ ๋ญ๋ผ๋์ง ๋ชจ๋ฅด๊ฒ ์ด์ ใ ใ
์ ์ฝ๋์ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค.
'๐ฅ Computer Science > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ํ (2) - DFS (0) | 2022.09.24 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ํ (1) - ๊ทธ๋ํ์ ๊ธฐ๋ณธ ์ฉ์ด (0) | 2022.09.24 |
[์๊ณ ๋ฆฌ์ฆ] Selection ์๊ณ ๋ฆฌ์ฆ (0) | 2022.09.19 |
[์๊ณ ๋ฆฌ์ฆ] ๋ถํ ์ ๋ณต(Divide and Conquer)๊ณผ Master Theorem (0) | 2022.09.11 |
[์๊ณ ๋ฆฌ์ฆ] ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋น ์ค(Big-Oh) (0) | 2022.09.05 |