<์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํด๊ฒฐ ์ ๋ต>์ ํด๋น ๋จ์ ๋ฐ์ค์ ๋๋ค.
"๋ถํ ์ ๋ณต์ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ๋ค์ ๋๊ฐ ์ธ ๊ฐ์ง์ ๊ตฌ์ฑ ์์๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค.
-
๋ฌธ์ ๋ฅผ ๋น์ทํ ํฌ๊ธฐ์ ๋ ์์ ๋ฌธ์ ๋ก ๋ถํ ํ๋ ๊ณผ์ (divide)
-
๊ฐ ๋ฌธ์ ์ ๋ํด ๊ตฌํ ๋ต์ ์๋ ๋ฌธ์ ์ ๋ํ ๋ต์ผ๋ก ๋ณํฉํ๋ ๊ณผ์ (merge)
-
๋์ด์ ๋ต์ ๋ถํ ํ์ง ์๊ณ ๊ณง์ฅ ํ ์ ์๋ ๋งค์ฐ ์์ ๋ฌธ์ (base case)"
"๊ฐ์ ๋ฌธ์ ๋ผ๋ ์ด๋ป๊ฒ ๋ถํ ํ๋๋์ ๋ฐ๋ผ ์๊ฐ ๋ณต์ก๋ ์ฐจ์ด๊ฐ ์ปค์ง๋ค๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๋ ์ข์ ์์ ๋๋ค. ์ฌ๋ฌ๋ฒ ์ค๋ณต๋์ด ๊ณ์ฐ๋๋ฉด์ ์๊ฐ์ ์๋ชจํ๋ ๋ถ๋ถ ๋ฌธ์ ๋ค์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค."
โโ
๋ณํฉ ์ ๋ ฌ (Merge Sort)
์์ด์ ๊ฐ์ด๋ฐ์์ ์ชผ๊ฐ ๋ ๊ฐ์ ๋ถ๋ถ์์ด๋ก ๋ง๋ค๊ณ , ๊ฐ ๋ถ๋ถ ์์ด์ ๋ํด์๋ ๊ฐ์ ์ ์ฐจ๋ฅผ ์ฌ๊ท ํธ์ถํ๋ค. ๊ธฐ์ ์ฌ๋ก(base case)๊น์ง ์ชผ๊ฐ ๊ฐ์ด ๋ฐํ๋๋ฉด, ๋์๋ฅผ ๋น๊ตํ์ฌ ๋ณํฉํ๋ฉฐ ์์ด์ ์ ๋ ฌํ๊ฒ ๋๋ค.
โ
ํต ์ ๋ ฌ (Merge Sort)
ํผ๋ด(Pivot, ๊ธฐ์ค)์ ์ ํ๊ณ , ํผ๋ด๊ณผ ๋์๋ฅผ ๋น๊ตํด
์์ด์ [Pivot๋ณด๋ค ์์ ์๋ค] [Pivot] [Pivot๋ณด๋ค ํฐ ์๋ค]์ ๊ผด๋ก ๋ง๋ ๋ค.
์ด ๋, ํผ๋ด์ ์์น๋ ์ ๋ ฌ ํ์ ํผ๋ด์ ์์น์ ์ผ์นํ๋ฏ๋ก [Pivot]์ ์ ์ธํ๊ณ ์ ๋ค ๋ฌถ์์ ๋ํด์ ๊ฐ์ ์ ์ฐจ๋ฅผ ๊ฐ๊ฐ ์ฌ๊ทํธ์ถ ํ๋ค.
โ
โ
โ
์นด๋ผ์ธ ๋ฐ์ ๋น ๋ฅธ ๊ณฑ์ (Karatsuba)
$$a\left(256์๋ฆฌ\ ์์ฐ์\right)\times b\left(256์๋ฆฌ\ ์์ฐ์\right)\ =\ ?$$
$$a\ =a_1\left(a์\ ์ฒซ\ 128์๋ฆฌ\right)\times 10^{128}+a_0\left(a์\ ๊ทธ\ ๋ค์\ 128์๋ฆฌ\right)โ$$
$$b\ =b_1\left(b์\ ์ฒซ\ 128์๋ฆฌ\right)\times 10^{128}+b_0\left(b์\ ๊ทธ\ ๋ค์\ 128์๋ฆฌ\right)โ$$
$$\to \ a\times b=\left(a_1\times b_1\right)\times 10^{256}+\left(a_1\times b_0\ +\ a_0\times b_1\right)\ +\ \left(a_0\times b_0\right)โ$$
a × b๋ ์ ๋ฐ ํฌ๊ธฐ์ 4๋ฒ์ ๊ณฑ์
์ผ๋ก ๋ถํ (divide)ํ ์์์์ ์ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์๊ณผ ๊ฐ์ด ๊ณ์ฐํ๋ฉด 4๋ฒ์ ๊ณฑ์
์ 3๋ฒ์ ๊ณฑ์
์ผ๋ก ์ค์ผ ์๊ฐ ์๋ค.
$$z_0=\left(a_0\times b_0\right)$$
$$z_1=\left(a_1\times b_0\ +\ a_0\times b_1\right)\ โ$$
$$z_2=\left(a_1\times b_1\right)$$
$$โป\ \left(a_1+b_0\ \right)\times \left(\ a_0+b_1\right)\ =$$
$$\left(a_1\times b_1\right)+\left(a_1\times b_0\ +\ a_0\times b_1\right)\ +\ \left(a_0\times b_0\right)$$
$$\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =z_0+z_1+z_2โโ$$
์๋ ์ธ ๊ฐ์ ๋ณ์๋ฅผ ์ ์ ํ ์ฐ์ฐ(๋ํ๊ธฐ, ์ํํธ)ํ์ฌ ๊ตฌํ๋ค.
z2 = a1 * b1;
z0 = a0 * b0;
z1 = (a0 + a1) * (b0 + b1) - z0 - z2;
โ
'๐ > ์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] N-Queen (๋ฐฑ์ค, 9663) (0) | 2020.11.20 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ์นด๋ผ์ถ๋ฐ์ ๋น ๋ฅธ ๊ณฑ์ (Karatsuba) (1) | 2020.07.28 |
[์๊ณ ๋ฆฌ์ฆ] ์์ ํ์(CLOCKSYNC) (0) | 2020.07.28 |
[์๊ณ ๋ฆฌ์ฆ] ์์ ํ์(BOARDCOVER) (0) | 2020.07.28 |
[์๊ณ ๋ฆฌ์ฆ] ์์ ํ์(PICNIC) (0) | 2020.07.28 |