๐ค ๋ถํ ์ ๋ณต
๋ถํ ์ ๋ณต์ด๋ ์ผ๋ฐ์ ์ผ๋ก ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ์์ ๋จ์๋ก ๋ถํ ํ ๋ค ๋ถํ ๋ ๋ฌธ์ ๋ค์ ์ฌ๊ท์ ์ผ๋ก ํด๊ฒฐํ์ฌ ํด๋น ๋ต์ ์ ์ ํ๊ฒ ์กฐํฉํ์ฌ ํฐ ๋ฌธ์ ์ ๋ต์ ์ ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋งํฉ๋๋ค.
์ด๋ ๋ถํ ๋ ๋ฌธ์ ๋ค์ ์กฐํฉํ์ฌ ํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ Conquer์ด๋ผ๊ณ ํฉ๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ Basic Arithmetic์ ์ฐ์ฅ์ ์ธ ํ๋ ฌ๊ณฑ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ด์ ์์ ์์๋ณด๊ฒ ์ต๋๋ค.
ํ๋ ฌ์ ๋ํ ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ๊ฐ ํ๊ธฐ ์ซ์ด์ ๋ฏธ๋ฃจ๊ณ ์๋ค ์ด์ ์ผ ํฌ์คํ ํ๊ฒ ๋์์ต๋๋ค.
ํ๋ ฌ ์ค์์๋ ๋ $n\times{n}$ Matrix์ ๊ฒฝ์ฐ๋ง ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ ๋ $n \times n$ Matrix ๊ณฑํ๊ธฐ ์ฐ์ฐ
๋จผ์ ํ๋ ฌ์ ๊ฐ entry๋ค ๊ฐ์ ์ฌ์น์ฐ์ฐ์ ๋ชจ๋ $O(1)$์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค๊ณ ํ๊ฒ ์ต๋๋ค.
์์๋ก ์๋์ ํ๋ ฌ์ ํตํด ๋ $n \times n$ ํ๋ ฌ์ ๊ณฑํ๋ ๋ฐ์ ํ์ํ ์๊ฐ๋ณต์ก๋์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
โ๏ธ Solution 1
์ ์์์์ $c_1 = a_1b_1 + a_2b_4 + a_3b_7$ ์ด ๋๋ฉฐ, ์ด๋ ์ด 2๋ฒ์ addition ๊ณผ 3๋ฒ์ multiplication ์ฐ์ฐ์ด ํ์ํฉ๋๋ค.
๋ค๋ฅธ entry ๋ฅผ ๊ตฌํ๋๋ฐ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์ ์ฐ์ฐ์ด ํ์ํ๋ฐ ๋ชจ๋ entry์ ๊ฐ์๋ 9๊ฐ์ด๋ฏ๋ก $(2 + 3) \times 9$์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ด๋ฅผ ์ผ๋ฐํ ํ๋ฉด $n - 1$๋ฒ์ addition ์ฐ์ฐ๊ณผ $n$๋ฒ์ multiplication ์ฐ์ฐ์ด ํ์ํฉ๋๋ค.
์ฆ, addition ์ฐ์ฐ๊ณผ multiplication ์ฐ์ฐ์ $O(n)$์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
๋ํ entry์ ์ด ๊ฐ์๋ $n^2$๊ฐ ์ด๋ฏ๋ก ์ด ์๋ชจ์๊ฐ์
$$O(n) \times n^2 = O(n^3)$$
์์ ์ ์ ์์ต๋๋ค.
โ๏ธ Solution 2
Divide and Conquer๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ ํ๋ ฌ ๊ณฑ์ ๋ ๋น ๋ฅธ ์๊ฐ์ ์คํํ ์ ์์ต๋๋ค.
์์ ๊ฐ์ $n \times n$ํ๋ ฌ X์ Y๊ฐ ์กด์ฌํ ๋ ์ด๋ฅผ $n/2 \times n/2$ํ๋ ฌ(submatrix) 4๊ฐ๋ก ๋๋ ์ ์์ต๋๋ค.
๋๋์ด์ง ํ๋ ฌ์ ๊ฐ๊ฐ "A ~ H"๋ผ๊ณ ํ๊ฒ ์ต๋๋ค.
๋ ํ๋ ฌ X์ Y๋ฅผ ๊ณฑํด์ ธ ์ป์ด์ง ํ๋ ฌ์ XY๋ผ๊ณ ํ๋ฉด ์๋์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ํ๋ ฌ์ ์ป์ ์ ์์ต๋๋ค.
์ด์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ตฌํด๋ณผ ์ฐจ๋ก์ ๋๋ค.
$n/2 \times n/2$ ์ฐ์ฐ์ด (AE, BG, AF, BH, CE, DG, CF, DH) ์ด 8๋ฒ ์งํ๋๋ฏ๋ก $8T(n/2)$๋ก ๋ํ๋ผ ์ ์์ต๋๋ค.
๋ํ submatrixํ๋๋น addition์ด $(n/2)^2$๋ฒ ๋งํผ ์งํ๋๋ฏ๋ก $O(n^2)$์ผ๋ก ๋ํ๋ผ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ Divide and Conquer๋ฅผ ์ด์ฉํ๋ฉด
$$T(n) = 8T(n/2) + O(n^2)$$
์ ๊ฐ์ด ๋ํ๋ผ ์ ์๊ณ Master Theorem์ ์กฐ๊ฑด์ ํ์ธํ์ ๋ $log_28 = 3 > 1$ ์ด๋ฏ๋ก $T(n)$์ ์ผ๋ฐํด๋ $O(n^2)$์์ ์ ์ ์์ต๋๋ค.
โ๏ธ Solution 3
๋ ๋น ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ธ Strassen ์๊ณ ๋ฆฌ์ฆ์ด ์กด์ฌํ๋๋ฐ ์ด๋ ์๋์ ๋งํฌ๋ฅผ ์ฐธ์กฐํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
์ฐธ๊ณ ๋ก ํ์ฌ ๊ฐ์ฅ ๋น ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ $O(n^{2.378596})$์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค๊ณ ํฉ๋๋ค.
๋ค์ ํฌ์คํ ์์๋ Selection ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ๋ฐฐ์๋ณด๊ฒ ์ต๋๋ค.
'Computer Science > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] Dynamic Programming(1) - Warm Up (0) | 2022.11.15 |
---|---|
[Algorithm] ๋ถํ ์ ๋ณต(4) - Selection (0) | 2022.10.20 |
[Algorithm] ๊ทธ๋ํ ์๊ณ ๋ฆฌ์ฆ(3) - DFS(2), Biconnected Graph (0) | 2022.10.13 |
[Algorithm] ๊ทธ๋ํ ์๊ณ ๋ฆฌ์ฆ(2) - DFS(๊น์ด์ฐ์ ํ์)(1) (0) | 2022.10.08 |
[Algorithm] ๊ทธ๋ํ ์๊ณ ๋ฆฌ์ฆ(1) - ๊ทธ๋ํ์ ๊ธฐ๋ณธ ์ฉ์ด (0) | 2022.10.04 |