๐ ๋ถํ ์๊ฐ๊ธฐ๋ฒ
์ด๋ ํ ์์์ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด์, ์ด๋ค ์ฐ์ฐ์ ์์์ ์ธก๋ฉด์์ ์๋นํ ๋น์ฉ์ ์๋ชจํ ์ ์์ง๋ง, ๋ฐ๋ฉด ๋ค๋ฅธ ์ฐ์ฐ์ ๊ทธ๋ ๊ฒ ๊ณ ๋น์ฉ์ ์๋ชจํ์ง ์์ ์ ์๋ค. ๋ถํ ์ํ ๋ถ์์ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ฐ์ ์ธ ์ฐ์ฐ ์งํฉ์ ๋ํด ๋น์ฉ์ด ๋์ ์ฐ์ฐ, ๊ทธ๋ฆฌ๊ณ ๋น์ฉ์ด ๋ํ ์ฐ์ฐ ๋ชจ๋๋ฅผ ํจ๊ป ๊ณ ๋ คํ๋ ๊ธฐ๋ฒ์ด๋ผ ํ๊ฒ ๋ค. ์ด๊ฒ์ ๋ค๋ฅธ ์ข ๋ฅ์ ์ ๋ ฅ, ์ ๋ ฅ์ ๊ธธ์ด, ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น๋ ๋ค๋ฅธ ์์ธ๋ค์ ์ ๋ถ ๊ณ ๋ คํ๋ค. ์ํ๋ ๋ชจ๋ ์ฐ์ฐ์ ๋ํด ์๋ฃ๊ตฌ์กฐ ์ฐ์ฐ๋ง์ ์ด๋ค ์ํ์ค๋ฅผ ์ํํ๋๋ฐ ํ์ํ ์๊ฐ์ ํ๊ท ์ ๊ตฌํ๋ค. ๋น๋ก ๊ทธ ์ํ์ค์์ ํ๋์ ์ฐ์ฐ๋น์ฉ์ด ๋น์ธ๋๋ผ๋, ๊ทธ ์ผ๋ จ์ ์ฐ์ฐ์ ๋ํด ํ๊ท ์ ๊ตฌํ๋ฉด ์ฐ์ฐ ํ๋์ ํ๊ท ๋น์ฉ์ด ์๋ค๋ ๊ฒ์ ๋ถํ ์ํ ๋ถ์์ ์ด์ฉํด ๋ณด์ผ ์ ์๋ค. ๋ถํ ์ํ ๋ถ์์ ํ๋ฅ ์ด ํฌํจ๋์ง ์์ผ๋ฏ๋ก ํ๊ท ๋น์ฉ ๋ถ์๊ณผ๋ ๋ค๋ฅด๋ค. ๋ถํ ์ํ ๋ถ์์ ์ต์ ์ ๊ฒฝ์ฐ์๋ ๊ฐ ์ฐ์ฐ์ ํ๊ท ์ํ์ฑ๋ฅ์ ๋ณด์ฅํ๋ค.
- ์ํค๋ฐฑ๊ณผ '๋ถํ ์ํ๋ถ์' ไธญ
๋ถํ ์ํ๋ถ์์ด๋ผ๊ณ ๋ ๋ถ๋ฅด๋ฉฐ Amoritized Analysis ๊ธฐ๋ฒ์ด๋ผ๊ณ ์ฃผ๋ก ๋ถ๋ฅธ๋ค. ๋น ์คํ๊ธฐ๋ฒ์ ์ ๊ทผ์ ๋ถ์(Asymptotic Analysis)์๋ ๋ฐ๋๋๋ ๊ฐ๋ ์ด๋ผ๊ณ ๋ด๋ ๋๊ฒ ๋ค. ํ์์ O(1)์ ์๊ฐ์ด ์์๋๋ค๊ฐ ์ ๋ง ๊ฐ๋ O(n)์ ์๊ฐ์ด ์์๋๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ฒฝ์ฐ, ๋น ์คํ๊ธฐ๋ฒ์์๋ O(n)์ผ๋ก ์๊ฐ๋ณต์ก๋๋ฅผ ํํํ๋ค. ๊ทธ๋ฌ๋ ํ๊ท ์ ์ผ๋ก O(n)์ ์์ฃผ ๊ฐ๋ ๋ฐ์ํ๋ฏ๋ก ๊ทธ๋ฆฌ ์ฑ๋ฅ์ด ๋์ ์๊ณ ๋ฆฌ์ฆ์ด ์๋์ง๋ ๋ชจ๋ฅธ๋ค. ์ด๋ฐ ์ ์์ ๋น ์คํ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ฉด ์๊ฐ์ ๋ถ๋ถ์์ ๋ถ๊ณต์ ํ ์ฑ๋ฅ ํ๊ฐ๊ฐ ์ด๋ฃจ์ด์ง ์ ์์ผ๋ฏ๋ก ๋ฑ์ฅํ ๊ฒ์ด ๋ถํ ์๊ฐ๊ธฐ๋ฒ์ด๋ค.
ํ ์ด๋ธ์ item์ ์ ๋ ฅํ๋ ๊ณผ์ ์์ ๋๋ถ๋ถ ํ ์ด๋ธ์ ํฌ๊ธฐ๋ ์ผ์ ํ๋ค. ๊ทธ๋ฌ๋ ๊ฐ๋ ํ ์ด๋ธ์ด full ์ํ๊ฐ ๋๋ฉด item ๋ชจ๋๋ฅผ ์๋ก์ด(2๋ฐฐ ๋ ๋์) ํ ์ด๋ธ๋ก ์ฎ๊ฒจ์ผํ๋ค. n๊ฐ์ item์ 2n ํฌ๊ธฐ์ ํ ์ด๋ธ๋ก ์ฎ๊ธฐ๋ ๊ณผ์ ์์ ํ์๋ณด๋ค ๋ง์ ์๊ฐ์ด ์์๋๋ค. ์ด๋ ๊ฒ ๊ฐ๋ ๋ฐ์ํ๋ ์๊ฐ ๋ถ๊ท ํ์ ๊ณผ์ ์ ๋ชจ๋ ๋จ๊ณ๋ก ๋ถ์ฐํด ํ์คํ์ํค๋ ๊ฒ์ด ์ด ์๊ณ ๋ฆฌ์ฆ์ ํต์ฌ์ด๋ค.
Amoritized Cost = Actual Cost + Accounting Cost
์ฌ๊ธฐ์ Accounting Cost๋ ํ๊ณ๋น์ฉ์ด๋ผ๊ณ ํ๋ฉฐ, ๋ชจ๋ ๋จ๊ณ์ ๋ฐฐ๋ถ๋ ๋น์ฉ์ ์๋ฏธํ๋ค.
item ํ๋๋ฅผ ์๋ก์ด ํ ์ด๋ธ์ ์ฎ๊ธธ๋ t ์๊ฐ์ด ์์๋๋ค๊ณ ํ์. ๊ทธ๋ผ n๊ฐ์ item์ ์ฎ๊ธฐ๋ ค๋ฉด ์ด tn์ ์๊ฐ์ด ํ์ํ๋ค. ์ด๋์ tn์ 'ํ์ฌ' ํ ์ด๋ธ ์๋ฆฌ๊ฐ ๋ถ์กฑํด ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ํ ์ด๋ธ๋ก ์ฎ๊ธฐ๋ ๋น์ฉ์ด๋ค.
๋ ๋์๊ฐ ์๊ฐํด๋ณด๋ฉด, ํ์ฌ๊ฐ ์๋๋ผ ์ด์ ๊น์ง ํ ์ด๋ธ์ ํฌ๊ธฐ๊ฐ ์ฒ์๋ถํฐ n์ด ์๋์์ ์ ์๋ค. ์ด์ ์ ํ ์ด๋ธ์์๋ n/2, ๊ทธ ์ ์๋ n/4์ ํฌ๊ธฐ์ ํ ์ด๋ธ์ด ๋ฐ์ดํฐ ์ ์ฅ์๋ฆฌ๊ฐ ๋ถ์กฑํด doubling ๋์ด ์ง๊ธ์ n ํฌ๊ธฐ์ ํ ์ด๋ธ๋ก ์จ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณผ ์ ์๋ค. ์ด๋ฐ ๊ฒฝ์ฐ, ์ด์ ๊น์ง ํ ์ด๋ธ์ ํฌ๊ธฐ๊ฐ doubling ๋ ๊ฒฝ์ฐ์ ๋น์ฉ ํฉ์ ๋ค์๊ณผ ๊ฐ๋ค.
tn/2 + tn/4 + tn/8 + ... ≤ tn
๊ณผ๊ฑฐ์ ํ ์ด๋ธ doubling ๋น์ฉ์ ๋ชจ๋ ๋ํด๋ ์ต๋ tn์ด๋ฏ๋ก, ํ์ฌ + ๊ณผ๊ฑฐ ๋น์ฉ์ 2tn์ด ๋๋ค. ์ด ๋น์ฉ์ ์ ์ฒด ๊ณผ์ ์ ๋ถ๋ฐฐํด ํ์คํ์์ผ์ผ ํ๋ฏ๋ก 2tn / n = 2t ์ Accounting Cost๋ฅผ ๋์ถํ ์ ์๋ค.
- table์ด full์ด ์๋ ๋ : ์์ดํ ์ ๋ ฅ์๊ฐ O(1) ๊ณผ Accounting Cost(2t)๋ฅผ ๋ํด 1 + 2t ๋น์ฉ์ด ํ์ํ๋ค
- table์ด full์ผ ๋ : ์์ดํ ์ ๋ ฅ์๊ฐ O(1)๊ณผ Transferring Cost(tn)์ ๋ํด (1+tn)์ด ๋๋๋ฐ, Accounting Cost(2t)์ ๋ค๋ฅธ๋จ๊ณ์์ ๋ํด์คฌ๋ tn์ ๊ฐ์ฐํด (2t - tn)์ด Accouting Cost๋ก ๋ํด์ ธ ์ด 1 + 2t์ ๋น์ฉ์ด ํ์ํ๋ค
๋ฐ๋ผ์ ์ต์ ์ ๊ฒฝ์ฐ์ ๋น์ฉ์ ํ์คํํ ๊ฒฐ๊ณผ O(1 + 2t) = O(1)์ ๋น์ฉ์ด ๋์ถ๋๋ค.
๋ถํ ์๊ฐ๊ธฐ๋ฒ์์๋ Amoritized O(1) ์ด๋ผ๊ณ ํ์ํ์ฌ ๋น ์คํ๊ธฐ๋ฒ๊ณผ์ ํผ๋์ ํผํ๋ค.
๋์์์ด ๋ด๊ฐ ์ดํดํ ๋ด์ฉ์ ์ ๋ฆฌํ์ง๋ง ๋ ๊น์ด ์ดํดํ๋ ค๋ฉด ์ข ๋ฉ์๋ค.
ํด์ ์๊ณ ๋ฆฌ์ฆ์์ ๊ต์๋์ด ํด์ํ ์ด๋ธ์ ํฌ๊ธฐ๋ฅผ 2๋ฐฐ๋ก ๋๋ ค์ผ ํ๋ ์ด์ ์์ ๋ถํ ์๊ฐ๊ธฐ๋ฒ์ ์ธ๊ธํ์ จ๋ค. +c ์์๋งํผ์ ๊ณต๊ฐ์ ๋๋ฆฌ๋ ๊ฒ๋ณด๋ค 2๋ฐฐ ํ์ฅํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ด๋ผ๋ ๊ฒ์ด๋ค. Array Doubling ๊ฐ๋ ์ ๋ถํ ์๊ฐ๊ธฐ๋ฒ์์๋ ๊ณผ๊ฑฐ์ ํ ์ด๋ธ ํ์ฅ ๋น์ฉ ํฉ์ ๊ตฌํ ๋ ์ฌ์ฉ๋๋ค. ๋ช ํํ๊ฒ ๋ฑ ์ ์ํ๊ณ ์ค๋ช ํ๊ธฐ๋ ํ๋ค์ง๋ง ๋๊ฐ ์ด๋ค ์๋ฆฌ๋ก ๋ถํ ์๊ฐ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋์ง ์ดํดํ๋ฏํ๋ค..
์ถ์ฒ
ko.wikipedia.org/wiki/%EB%B6%84%ED%95%A0%EC%83%81%ED%99%98%EB%B6%84%EC%84%9D