Amortized Analysis
2020-1ํ๊ธฐ, ๋ํ์์ โ์๊ณ ๋ฆฌ์ฆโ ์์ ์ ๋ฃ๊ณ ๊ณต๋ถํ ๋ฐ๋ฅผ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ์ง์ ์ ์ธ์ ๋ ํ์์ ๋๋ค :)
<Amortized Analysis>์ ๋ํด ์ดํด๋ณด๊ธฐ ์ ์ ๊ฐ๋จํ Introduction์ธ <Array Doubling>์ ๋ํด ์ดํด๋ณด๊ณ ์ค๊ธธ ๋ฐ๋๋ค. โZedd0202โ๋์ ํฌ์คํธ๋ฅผ ์ถ์ฒํ๋ค!
๐ Array Doubling
Definition.
์๋ฃ๊ตฌ์กฐ์์ ํ๋์ Operation์ ์ํํ๋ ์๊ฐ์ โ์ ์ฒด Operation์ ์ํํ ๋์ ํ๊ท ์๊ฐโ์ผ๋ก ๋ฐ๊พธ์ด ํํํ๋ ๋ถ์ ๋ฐฉ์์ ๋งํจ. a sequence of operations ๊ด์ ์์ ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ๋ถ์ํ๋ค. ๋ค๋ฅด๊ฒ ํํํ๋ฉด, ์ฐ์๋ ์ฐ์ฐ์์ ๊ฐ-๋ ์ผ์ด๋ ์ ์๋ ๋น์ผ ๋น์ฉ์ ์ฐ์ฐ์ ๋ถ์ฐ์์ผ์ ์ฐ์ฐ์ โํ๊ท ๋น์ฉโ์ ๊ณ์ฐํ๋ ๋ฐฉ์์ด๋ค.
<Amortized Analysis>๋ ํํ โ๋ถํ -์ํ ๋ฐฉ์โ์ผ๋ก๋ ๋ถ๋ฆฐ๋ค.
์ฐ๋ฆฌ๊ฐ ์ด๋ค ์ฐ์ฐ์ ์ํํ๋ ์ํฉ์ ์์ํด๋ณด์. ๊ทธ ์ฐ์ฐ์ด โํ์โ์๋ ๋น์ฉ์ด $1$๋ง ๋ ๋ค๊ณ ํ์. ๊ทธ๋ฌ๋ ์ด๋ค ์์ฃผ์์ฃผ ๋๋ฌธ ๊ฒฝ์ฐ์ ์ด ์ฐ์ฐ์ด $N$๋ฒ ์ํ๋๊ณ , ๊ทธ๋ ๋น์ฉ์ด $N$๋งํผ ๋ ๋ค๊ณ ํ์.
๋ง์ฝ <Asymptotic Analysis>๋ก ์ ๊ทผํ๋ค๋ฉด, ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํ๊ธฐ ๋๋ฌธ์ ์์ ์ฐ์ฐ์ $O(N)$์ ๋น์ฉ์ด ๋ ๋ค๊ณ ๋ถ์ํ๊ฒ ๋๋ค.
<Asymptotic Analysis>์์๋ ์ต์ ์ ๊ฒฝ์ฐ ๋๋ฌธ์ โํ์โ์ ๋น์ฉ๊ณผ ๊ดด๋ฆฌ๊ฐ ์๊ฒผ๋ค. <Amortized Analysis>๋ ์ด๋ฐ ๊ฒฝ์ฐ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค! ๐
์์ ๊ฒฝ์ฐ์์ <Amortized Analysis>๋ฅผ ์ํํ๋ฉด, ๊ทธ ๊ฒฐ๊ณผ๋ โAmortized $O(1)$โ์ด๋ค! (์ด๋, ๊ทธ๋ฅ $O(1)$๋ผ๊ณ ํ๋ฉด ์ ๋๊ณ , ๊ผญ โAmoritzedโ๋ฅผ ๋ถ์ฌ์ค์ผ ํ๋ค.)
โStackโ ์๋ฃ๊ตฌ์กฐ์ push
๋ฅผ ์์๋ก <Amortized Analysis>๋ฅผ ์ํํด๋ณด์. ์ฐ๋ฆฌ๋ <amortized cost>๋ฅผ ์๋์ ๊ฐ์ด ์ ์ํ๋ค.
amortized cost = actual cost + accounting cost
์ด๋, <amoritzed cost>๊ฐ ์ฐ๋ฆฌ๊ฐ ๊ตฌํ ๋์์ธ โํ๊ท ๋น์ฉโ์ ์๋ฏธํ๋ค.
<actual cost>๋ ์ฐ๋ฆฌ๊ฐ Stack์์ push
์ฐ์ฐ์ ์ํํ ๋์ ์ค์ ๋ก ๋๋ ๋น์ฉ์ ์๋ฏธํ๋ค. <accounting cost>๋ โ์ ๋ฆฝ ๋น์ฉโ์ด๋ผ๊ณ ํ๋ค. ์ด๋ค ์ฐ์ฐ์ ์ํํ ๋, ๊ฐ-๋ ์ผ์ด๋๋ ๋น์ผ ์ฐ์ฐ์ ๋ฌด๋ฆฌ์์ด ์ํํ๊ธฐ ์ํด, ๋น์ฉ์ ๊ณ์ข์ ์ ๊ธํด๋๋ ์ฉ๋์ ๋น์ฉ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. (์ด๋ ๊ฒ ๋น์ฉ์ ๋ฏธ๋ฆฌ ์ ๊ธํ๋ฉด, ๋์ค์ ๊ฐ-๋ ์ผ์ด๋๋ ๋น์ผ ์ฐ์ฐ์ด ๋ฐ์ํ์ ๋, ๊ณ์ข(account)์ ์ ์ถ๋ ๋น์ฉ์ ์ฌ์ฉํ๋ฉด ๋๋ค!๐คฉ)
๋ค์ Stack์ ์์๋ก ๋์์๋ณด์. Stack์ ํ์์๋ push
, pop
์ํํ ๋, $1$์ ๋น์ฉ์ด ๋ ๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ฝ Stack์ ์ฉ๋(capacity)๊ฐ ๊ฝ ์ฐจ๊ฒ ๋๋ฉด, <Array Doubling>์ด ๋ฐ์ํ๊ฒ ๋๋ค!! ๐ฒ
์ด Array Doubling์ ์ํํ๊ธฐ ์ํด โtransferring costโ๊ฐ ๋ฐ์ํ๋ค. ๋ง์ฝ ์์ ํ๋๋ฅผ ์ฎ๊ธฐ๋ ๋ฐ ๋๋ ๋น์ฉ์ด $t$๋ผ๊ณ ํ์ ๋, $n$๊ฐ ์์๋ฅผ ์ฎ๊ธธ ๋์๋ $n \times t$์ ๋น์ฉ์ด ๋ ๋ค. ๋ง์ฝ ์ด์ ์ โtransferring costโ๊น์ง ๋ชจ๋ ๊ณ ๋ คํ๋ค๋ฉด, ์ ์ฒด transferring cost๋ $\le 2 \cdot n t$์ด๋ค.
๊ฝ ์ฐฌ ์คํ์ ๋ ๋์ ์คํ์ผ๋ก ์ฎ๊ฒจ๋ณด์. ๋ง์ฝ ํ์ฌ ์คํ์ $n$๊ฐ ์์๊ฐ ์กด์ฌํ๋ค๋ฉด, ์ด๊ฒ์ผ๋ก ์๋ก์ด ์คํ์ผ๋ก ์ฎ๊ธฐ๋ ๋ฐ์ $n \times t$์ ๋น์ฉ์ด ๋ ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด Array Doubling์ ํธ๋ฆฌ๊ฑฐํ ์์ ์ญ์ ๋ฃ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ $1$์ด๋ผ๋ ๋น์ฉ์ด ๋ ๋ค. ๋ฐ๋ผ์, Doubling ์ํฉ์์์ actuacl cost๋ $1 + nt$๊ฐ ๋๋ค.
์ฐ๋ฆฌ๋ ์์ ๋ฌธ๋จ์์ transferring cost์ ์ด ๋น์ฉ์ด $2tn$ ์ฏค ๋๋ค๋ ๊ฒ์ ์์๋ค. ๋ง์ฝ ์ฐ๋ฆฌ๊ฐ ์ด ๋น์ฉ์ ์๊ณ ์๋ค๋ฉด, ์ด ๋น์ฉ์ ๋ง์ถฐ ๊ณ์ข(account)์ ๊พธ์คํ ๋น์ฉ์ ์ ๊ธํด์ผ ํ๋ค. ๋ง์ฝ ๊ณ์ข์ ์๊ณ ๊ฐ 0์ด๋ผ๋ฉด, ์ฐ๋ฆฌ๋ push
, pop
์ด๋ค ์ฐ์ฐ๋ ์ํํ ์ ์๋ค.
๊ทธ๋์ ์ด $n$๋ฒ์ push
๋ฅผ ์ํํ๋ค๊ณ ํ์ ๋, $\frac{2tn}{n} = 2t$ ๋งํผ์ ๋น์ฉ์ ๋ฏธ๋ฆฌ ์ ๊ธํด๋ฌ์ผ ํ๋ค. ๊ทธ๋์ผ ํ์์ ์ผ์ด๋๋ ๋น์ฉ $1$์ ์ฐ์ฐ๊ณผ ๊ฐ-๋ ์ผ์ด๋๋ ๋น์ฉ $1+nt$์ ์ฐ์ฐ์ ๋ชจ๋ ๋ฒํธ ์ ์๋ค.
$2t$๋ผ๋ ๋น์ฉ์ Doubling ๋ฐ์ ์ฌ๋ถ์ ์๊ด์์ด ๊ณ์ ์ง๋ถํ์ฌ ๊ณ์ข์ ์์ด๊ฒ ๋๋ค. ๋ง์ฝ Doudling์ด ์ค์ ๋ก ์ผ์ด๋๋ค๋ฉด, accounting cost๋ $- nt + 2t$๊ฐ ๋๋ค.
์ํฉ์ ์ข ํฉํด์ โamortized costโ๋ก ํํํด๋ณด์.
โamortized cost = actual cost + accounting costโ
- Doubling X (ํ์): $1 + 2t$
- Doubling O : $(1+nt) + (-nt + 2t) = 1 + 2t$
๊ทธ๋์! Array Doubling์ ์ํํ๋ Stack์์์ push
์ฐ์ฐ์ โamortized $O(1+2t)$โ์ ๋น์ฉ, ์ฆ! โamortized $O(1)$โ์ ๊ฐ๋๋ค!! Asymptotic Analysis์์ ์ต์
์ ์๊ฐ์ ๋ถ์ํ $O(n)$ ๋น์ฉ๋ณด๋ค๋ ์ข๋ ์ ์ฉํ ๊ฒ ๊ฐ์ง ์์๊ฐ?? ๐
์์ ๊ฐ์ ๋ฐฉ์์ <Accounting Method>๋ผ๊ณ ํ๋ค. <Amortized Analysis>๋ฅผ ์ํํ๋ ๋ฐฉ์์ผ๋ก๋ 3๊ฐ์ง๊ฐ ์๋๋ฐ, ์๋์ ๊ฐ๋ค.
- Accounting Method
- Aggregate Method
- Potential Method
<Amortized Analysis>๋ Advanced Data Structure๋ฅผ ๋ค๋ฃฐ ๋, ๊ผญ ๋ฑ์ฅํ๋ ํ ํฌ๋์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ์์งํด์ผ ํ๋ ํ ํฌ๋์ด๋ค!! ๐
์ฐธ๊ณ ์๋ฃ
- โZedd0202โ๋์ ํฌ์คํธ - Amortized Analysis
- โZedd0202โ๋์ ํฌ์คํธ - Array Doubling
- โblackblightโ๋์ ํฌ์คํธ
- cs.cornell.edu
- Amortized Analysis์ 3๊ฐ์ง ๋ฐฉ์์ด ์ ์ค๋ช ๋์ด ์๋ค!