Amortized Analysis
๊ณ์ฐ์ด๋ก ์์ ์์ ๋ฐฐ์ด ๋ด์ฉ ์ ๋ฆฌ. CLRS CH 17.
Amortized Analysis
์ฐ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ๋ถ์ํ ๋,
์ด ๋ฐฉ๋ฒ์ ์ ์ฉํ์ง๋ง ์ด๋ค ์๊ณ ๋ฆฌ์ฆ๋ค์ ์ด๋ ๊ฒ ๋จ์ํ๊ฒ ๋ถ์ํ ์ ์์ต๋๋ค. ๋ํ์ ์ธ ์์๊ฐ C++์ vector (dynamic array)์ ๋๋ค.
vector์ ๋ชจ๋ ์ฐ์ฐ์ ๋ถ์ํ์ง๋ ์๋๋ผ๋, ์ฐ๋ฆฌ๋ ์ผ๋จโฆ
- ๋งจ ๋ค์ pushํ๋ ์ฐ์ฐ์ด
์๊ฐ์ ์๋ํ๊ธฐ๋ฅผ ์ํฉ๋๋ค. - ๋งจ ๋ค์์ popํ๋ ์ฐ์ฐ์ด
์๊ฐ์ ์๋ํ๊ธฐ๋ฅผ ์ํฉ๋๋ค.
์ด ๋ ๊ฐ์ง๋ stack์ผ๋ก๋ ๊ฐ๋ฅํ ์ผ์ ๋๋ค. ๊ทธ๋ฌ๋โฆ
- ์ฐ์ํ ๋ฉ๋ชจ๋ฆฌ๋ง ์ฌ์ฉํ์ฌ, ๋ฐ๋ก index๋ฅผ ํ์ธํ ์ ์์ด์ผ ํฉ๋๋ค. stack์ ๋งํฌ๋ ๋ฆฌ์คํธ๋ก ๊ตฌํํ๋ฉด ์ ๋๊ฐ์ง๋ฅผ ์งํค๊ธฐ ์ฝ์ง๋ง, ๋์ ์
vec[17]
๊ฐ์ ๊ฒ์ ๋ฐ๋ก ํ์ธํ ์๊ฐ ์์ต๋๋ค. ๋์ ๋ฐฐ์ด์ ์ด๊ฒ์ด ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
๊ทธ๋ฐ๋ฐ, ์ด ๋ ์กฐ๊ฑด์ ๋ญ๊ฐ ์ด์ํฉ๋๋ค. ๋ฐฐ์ด์ ์์๋ค์ด ์ฐ์ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ ํด์ผ ํ๋ค๋ฉด ๊ณ์ push๋ฅผ ํ๋ค๊ฐ ์ธ์ ๊ฐ๋ ๋์ด์ ๊ทธ ์์น์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ธ ์ ์๊ฒ ๋๊ณ , ๊ทธ๋ฌ๋ฉด ๋ชจ๋ ์์๋ค์ ์ด๋๊ฐ๋ก ์ฎ๊ฒจ์ผ ํ๋ฏ๋ก ๊ทธ๋ ๋ค์ด์๋ ์์์ ๊ฐ์๋งํผ์ ์๊ฐ์ด ์์๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก, ์ฐ์ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ ํ๊ธฐ ์ํด์ ๋ฐ๋์
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, vector๋ ๋๋ต ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ ์๋๋ค.
- size์ capacity๋ฅผ ๋ถ๋ฆฌํฉ๋๋ค. size๋ ์ง์ง ํ์ฌ ๋ค์ด ์๋ ์์์ ๊ฐ์๋ฅผ, capacity๋ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋งํฉ๋๋ค.
- ๋ง์ฝ capacity๊ฐ ๋ค ์ฐจ์ง ์์๋ค๋ฉด push๊ฐ
์ ๊ธฐ๋ฅํ๊ฒ ํ๋ ๊ฒ์ ์ฝ์ต๋๋ค. - capacity๊ฐ ๋ค ์ฐผ๋ค๋ฉด, ํ์ฌ ๋ชจ๋ ์์๋ค์ ์๋ก์ด ๊ณณ์ผ๋ก ์ฎ๊ธฐ๋, capacity๊ฐ ํ์ฌ ํฌ๊ธฐ +1์ด ์๋๋ผ ํ์ฌ์ ๋ ๋ฐฐ๊ฐ ๋๊ฒ ์ก์ต๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด, move ํ๋ ์ฐ์ฐ์ด ๊ฐ๋์ฉ๋ง ์ผ์ด๋๊ธฐ ๋๋ฌธ์, ํ๊ท ์ ์ผ๋ก๋ ๋น ๋ฆ ๋๋ค. ์ด์ ๊ฐ์ด, ๋งค operation์ cost๋ฅผ ์๊ฐํ๋ ๋์ , ์ฌ๋ฌ operation์ cost๋ฅผ ๋ฌถ์ด์ ๊ทธ ํ๊ท ์ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ์ amortized analysis๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
์ฃผ์ํ ์ ์, amortized analysis๋ average case์๋ ๋ค๋ฅด๋ค๋ ์ ์
๋๋ค. ์๊ณ ๋ฆฌ์ฆ ๋ถ์์ ๋๋ถ๋ถ worst case๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋๋ฐ (์ต๊ทผ์๋ average case๋ ๋ง์ด ๋์ค๊ธด ํฉ๋๋ค), amortized worst case ๋ ์๊ฐํ ์ ์์ต๋๋ค. ํ๊ตญ์ด๋ก ์ด๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ๋ฐ๊พธ์๋ฉด, โ์ต์
์ ๊ฒฝ์ฐ์๋ ๊ฐ ์ฐ์ฐ์ ํ๊ท
Three frameworks
Amortized analysis๋ฅผ ํ๋ ๋ฐฉ๋ฒ์๋ ํฌ๊ฒ 3๊ฐ์ง๊ฐ ์์ต๋๋ค.
Aggregate Method
๋ฒกํฐ์
Accounting Method
์ด๋ค ์ฐ์ฐ์ ์ค์ cost์๋ ๋ณ๊ฐ๋ก, ์ด ์ฐ์ฐ์ ๊ฐ๊ฒฉ์ ์กฐ๊ธ ๋๋ํ๊ฒ ํ ๋นํ ๋ค์, ๋น์ผ ์ฐ์ฐ์ ํ ๋ ์์ ์์ฌ๋์ (?) ์ฌ๋ถ์ ๊ฐ์ ธ๋ค ์ด๋ค๊ณ ์๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์ญ์ vector์ ์ ์ฉํด ๋ณด๊ฒ ์ต๋๋ค.
๊ทธ๋ฌ๋, ์ฌ๊ธฐ๊น์ง ์ค๋ ๊ธธ์ ์ฐ๋ฆฌ๋ ์ค์ ๋ก๋ 1๋งํผ์ด ๊ฑธ๋ฆฌ๋ ์ฐ์ฐ์ 3์ด๋ผ๊ณ ๋๋ํ๊ฒ ์ก์ผ๋ฉด์
์ด ๋ฐฉ๋ฒ์ ์ฝ๊ฐ ์ ๋งคํ๋ฐ, ์ฒ์์ 3์ด๋ผ๋ ์ ๋งคํ ์ซ์๋ฅผ ์ด๋ป๊ฒ ์ก์์ง๋ฅผ ์๋ ค๋ฉด ๋์ถฉ ํ๊ท ์ ์ธ ์ฐ์ฐ์ ๊ฐ๊ฒฉ์ ์ฐ์ ์ ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋์ ์ฆ๋ช ํ๊ธฐ๋ ์ด๋ ต์ง ์์ง๋ง, ์ฒ์ ์์น๋ฅผ ์ ์ํ๋ ์กฐ๊ธโฆ๋ญ๋๊น์, ๋น์ ํ์ ์ ๋๋ค.
Potential Method
์ด ๊ธ์ ์ฐ๊ฒ ๋ ์ด์ ์ด์, amortized analysis์ ํต์ฌ์ ๋๋ค.
์ด ์๋ฃ๊ตฌ์กฐ์ ์ํ๋ฅผ ๋ํ๋ด๋ ์ด๋ค potential function
- ์ด๊ธฐ ์ํ์ 0. ์ฆ,
- ์ธ์ ๋
. (์ฌ์ค 2๋ฒ ์กฐ๊ฑด์ ์กฐ๊ธ relaxํ ์ ์์ง๋ง, ์๋ฌดํผโฆ)
์ด์ , ๊ฐ ์ฐ์ฐ์ cost๊ฐ ๋ค ๋ฟ๋ง ์๋๋ผ, potential function์ ๋ณํ์ํฌ ๊ฒ์
๋๋ค.
vector์ ์ ์ฉํด ๋ณด๊ฒ ์ต๋๋ค. vector์ potential์ ํ์ฌ ๋ค์ด์๋ ์์์ ๊ฐ์
๊ฐ size๋ฅผ ๋ณํ์ํค์ง ์๋ ์ฐ์ฐ์ด๋ผ๋ฉด, ์ค์ cost๊ฐ 1์ด๊ณ potential์ ๋ณํ๋ ๊ฐ ๊ทธ๋๋ก์ธ ์ฑ ์ด 1๋งํผ ์ฆ๊ฐํ์ฌ ์ ๋๋ค. ๊ฐ size๋ฅผ ๋ณํ์ํจ๋ค๋ฉด, ์ 1๋งํผ ์ฆ๊ฐํ๋๋ฐ ๊ฐ 2๋ฐฐ๋ก ์ฆ๊ฐํฉ๋๋ค. ์ด์ ์ ์ด์์ ๊ฒ์ด๋ฏ๋ก, ๋ฐ๋ผ์ ๋ ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ, ์ฎ๊ฒจ์ผ ํ๋ ์์๋ ๊ฐ์ด๊ณ , ์๋ก ์ถ๊ฐํ๋ 1๊ฐ๋ฅผ ๊ณ ๋ คํ๋ฉด ์ค์ cost๋ ์ ๋๋ค. ๋ฐ๋ผ์ ์ ๋๋ค.
์ด ๋ ๊ฒฝ์ฐ ๋ชจ๋ amortized cost๊ฐ
์ผ๋ฐ์ ์ผ๋ก
Dynamic table
๋ง์ฝ ์ vector์ pop๋ ์ง์ํด์ผ ํ๋ค๋ฉด ์ด๋จ๊น์? ์ฌ์ค pop์ ๋ง์ด ํ๋๋ผ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์นจ๋ฒํ์ง ์์์ ๊ทธ๋๋ก ํ๋๋ผ๋ ์๊ฐ ๋ณต์ก๋๋ ์ ์ง๋ฉ๋๋ค. ๊ทธ๋ฐ๋ฐ, 100๋ง๊ฐ๋ฅผ ๋ฃ์๋ค๊ฐ ๋ค์ 100๋ง๊ฐ๋ฅผ ๋บ๋๋ฐ vector๊ฐ ๊ทธ๋๋ก 100๋ง์นธ์ ๋จน๊ณ ์๋ ๊ฒ์ ๋ญ๊ฐ ๋ชจ์์๊ฐ ๋์ฉ๋๋ค. ์ด ๊ฒฝ์ฐ์๋ table์ ํฌ๊ธฐ์ ๋นํด ์ค์ ์์์ ๊ฐ์ - ์ด๋ฅผ load factor ๋ผ๊ณ ๋ถ๋ฆ ๋๋ค - ๊ฐ ๋๋ฌด ๋๋น ์, ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ด ๋จ์ด์ง๋ ๊ฒฝ์ฐ์ ๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋, ์์์ ๊ฐ์๊ฐ 1/2 ์ดํ๊ฐ ๋๋ฉด ํ
์ด๋ธ ํฌ๊ธฐ๋ฅผ ๋ฐ์ผ๋ก ์ค์ด๋ ๋ฐฉ๋ฒ์ ๊ฐ์ฅ ๋จผ์ ์๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ ๊ฒ ํ๋ฉด, ์์์ ๊ฐ์๋ฅผ 1/2๊ฐ ๊ทผ์ฒ๋ก ์ ์งํ๋ฉด์ push์ pop์ ๋ฐ๋ณตํ๋ฉด ํ
์ด๋ธ์ ์ถ์์ ํ๋๊ฐ ์ฌ๋ฌ๋ฒ ์ผ์ด๋๊ฒ ๋ง๋ค ์ ์๊ณ , ์ถ์/ํ๋๋
Load factor๋ฅผ ์ ์ ํ ์ ์งํ๋ฉด์ amortized
์ด ๋ฐฉ๋ฒ์ด amortized complexity
- load factor 1/2 (์ด์, ์ดํ) ์ผ ๋ ์ด๋ฅผ ์ ์งํ๋ฉด์ ์ฝ์ /์ญ์ ํ๋ ๊ฒฝ์ฐ 4๊ฐ์ง
- load factor 1/2 ์ดํ์์ ์ด์์ผ๋ก, ์ด์์์ ์ดํ๋ก ๋์ด๊ฐ๋ ์ฝ์ ๊ณผ ์ญ์ 2๊ฐ์ง
- load factor 1/4 ์ด์์์ ์ดํ๋ก ๋จ์ด์ ธ์ ์ถ์๋ฅผ ์ํํ๋ ์ญ์
- load factor 1์์ ์ถ๊ฐ ์ฝ์ ์ผ๋ก ์ธํด ํ๋๋ฅผ ์ํํ๋ ์ฝ์ ์ ๋ง ํ๋์ฉ ๋ค ๋ถ์ํ๋ ๊ฒ์ด๋ฏ๋ก ์์ธํ ๊ณผ์ ์ ์๋ตํฉ๋๋ค.
Application
๋ณต์กํ ์ฐ์ฐ์ ๋ค์ํ๊ฒ ์ํํ๋ ์๋ฃ๊ตฌ์กฐ์์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
- ํผ๋ณด๋์น ํ (์์ ์ ์ ๊ฐ ์ด ๊ธ๋ ์ฌ๊ธฐ ์์ต๋๋ค.) ์ ์ด์ฉํ์ฌ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ฅผ
๋ก ๋ด๋ฆฌ๊ธฐ - Splay Tree ์ ๊ฐ์ ์๋ฃ๊ตฌ์กฐ์ ๋ณต์ก๋ ๋ถ์.