[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ณผ์ œ 3. Tony Hoare :: QuickSort ๋…ผ๋ฌธ ํ•ด์„ํ•˜๊ธฐ

QuickSort ๋…ผ๋ฌธ brief

Part One: Theory

์ด sorting์€ ๋‘ ๊ฐœ์˜ ๊ฐ„๋‹จํ•œ ๋ณด์กฐ๋ฌธ์ œ๋กœ ๋‚˜๋‰˜์–ด ํ•ด๊ฒฐ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ฐ ๋ฌธ์ œ๋Š” ์ด๋ฏธ ์•Œ๋ ค์ง„ ๋ฐฉ์‹์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ๋‹ค.

Partition

: key๊ฐ’์„ dividing line์— ๋”ฐ๋ผ ์œ„ ์•„๋ž˜๋กœ ๋‚˜๋ˆ„์–ด ์ด๋ถ„ํ•˜๋Š” ๊ฒƒ

์‹ค์ œ๋กœ ์ด dividing line์€ ํ”์น˜ ์•Š๊ณ , ์žˆ๋‹ค ํ• ์ง€๋ผ๋„ ์ฐพ๊ธฐ ํž˜๋“ ๋ฐ dividing line์ด ์กด์žฌํ•˜๊ณ  ๊ทธ๊ฒƒ์˜ ์œ„์น˜๋งŒ ์•ˆ๋‹ค๋ฉด item๋“ค์„ ์žฌ์ •๋ ฌํ•˜๊ธฐ๋Š” ์‰ฌ์›Œ์ง„๋‹ค.

partition ๊ณผ์ •

  1. ์ •๋ ฌ๋˜์–ด์•ผํ•˜๋Š” ์•„์ดํ…œ์˜ ํ‚ค ์ค‘ ํŠน์ • ํ‚ค๋ฅผ ๊ณ ๋ฅธ๋‹ค.

    ์ด ํ‚ค๋Š” bound ๋ผ ๋ถˆ๋ฆฐ๋‹ค.

  2. dividing line ์•„๋ž˜์—๋Š” bound๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ key๊ฐ’์ด, ์œ„์ชฝ์—๋Š” ํฐ key ๊ฐ’์ด ์˜ค๊ฒŒ ํ•œ๋‹ค.

    dividing line์˜ ์œ„์น˜๋Š” ๋ฏธ๋ฆฌ ์•Œ ํ•„์š” ์—†์ด ์ •๋ ฌ ๋งˆ์ง€๋ง‰์— ๋“œ๋Ÿฌ๋‚  ๊ฒƒ์ž„

    1. ๋‘ ๊ฐœ์˜ ํฌ์ธํ„ฐ (lower pointer, upper pointer)๊ฐ€ ๊ฐ๊ฐ ์œ„๋กœ, ์•„๋ž˜๋กœ ์›€์ง์ธ๋‹ค.

    2. ๋จผ์ € lower pointer๊ฐ€ ์œ„๋กœ(์ฃผ์†Œ๊ฐ€ low => high) ์›€์ง์ด๋ฉด์„œ bound๋ณด๋‹ค ํฐ ๊ฐ’์„ ์ฐพ๋Š”๋‹ค.

    3. ์ฐพ์œผ๋ฉด upper pointer๊ฐ€ ์•„๋ž˜๋กœ(์ฃผ์†Œ๊ฐ€ high => low) ์›€์ง์ด๋ฉด์„œ bound๋ณด๋‹ค ์ž‘์€ ๊ฐ’์„ ์ฐพ๋Š”๋‹ค.

    4. ๋‘ ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’์„ ๋ฐ”๊ฟ”์ค€๋‹ค.

    5. lower pointer๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ๊ฐ€ upper pointer๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ๋ณด๋‹ค ๋†’์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.

      ์ด ๋•Œ ๋‘ ํฌ์ธํ„ฐ์˜ ์‚ฌ์ด๊ฐ€ dividing line์ด๋‹ค.

๋ฌธ์ œ

  1. ๋ชจ๋“  key value๊ฐ€ ๊ฐ™์„ ๋•Œ

  2. bound๊ฐ€ ์ œ์ผ ์ž‘๊ฑฐ๋‚˜ ์ œ์ผ ํฐ ๊ฐ’์œผ๋กœ ๊ฒฐ์ •๋˜์—ˆ์„ ๋•Œ

    dividing line์ด section ๋ฐ–์— ์œ„์น˜ํ•จ

  3. bound ๊ฐ’์€ ์˜ฌ๋ฐ”๋ฅธ ์ž๋ฆฌ์— ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋‚˜๋จธ์ง€ ๊ฐ’์— ๋Œ€ํ•ด ์ง„ํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

dividing์€ segment๊ฐ€ ํ•˜๋‚˜ ๋˜๋Š” 0๊ฐœ์˜ ์•„์ดํ…œ์„ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๋•Œ๊นŒ์ง€ ์ง„ํ–‰

Quicksort

partitioning ํ›„์— ๋‘ ๊ฐœ์˜ segment๊ฐ€ ๋‚˜์˜จ๋‹ค.

sort ํ•˜๊ธฐ ์ „ ์กฐ๊ฑด

ํฌ๊ธฐ๊ฐ€ ์ ๋‹นํžˆ ์ปค์•ผํ•œ๋‹ค.

  1. segment ์ค‘ ๊ธธ์ด๊ฐ€ 1์ดํ•˜์ธ ๊ฒƒ์ด ์žˆ์œผ๋ฉด ๋ฌด์‹œํ•˜๊ณ  ๋‹ค๋ฅธ segment๋งŒ ์‹ ๊ฒฝ ์“ด๋‹ค.
  2. ์ปดํ“จํ„ฐ์˜ ํŠน์„ฑ์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ 3~4๊ฐœ์˜ item์ด segment์— ์žˆ์œผ๋ฉด, ์ ์€ ์ˆ˜์˜ item์„ ์ •๋ ฌํ•˜๋Š” ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์“ฐ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

sorting

ํ•œ segment๋ฅผ ๋จผ์ € ์ •๋ ฌํ•œ๋‹ค.

๊ทธ ๋™์•ˆ ๋‹ค๋ฅธ segment์˜ ์ฒซ๋ฒˆ์งธ, ๋งˆ์ง€๋ง‰ ์š”์†Œ๋Š” ์ €์žฅ๋˜์–ด์žˆ์–ด์•ผํ•œ๋‹ค.

์ „์ฒด item ๊ฐฏ์ˆ˜๊ฐ€ ์ •๋ ฌ๋˜๊ณ  ์žˆ๋Š” item ๊ฐฏ์ˆ˜์— ๋น„๋ก€ํ•˜๊ธฐ ๋•Œ๋ฌธ

data ์ €์žฅ์€ pointer๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์—ฐ์†์ ์ธ ๋ธ”๋ก์— ์ €์žฅํ•˜๋Š” nest๋ผ๋Š” ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•œ๋‹ค.

๊ณ„์†ํ•ด์„œ ์ •๋ ฌํ•  segment๋ฅผ ์„ ํƒํ•˜๋Š” ๋™์•ˆ ๋‚˜์ค‘์— ํ•  ๋ธ”๋ก์„ ํฐ ๊ฒƒ์œผ๋กœ ๋‚จ๊ฒจ๋‘๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

Estimate of Time Taken

N๊ฐœ์˜ ์•„์ดํ…œ์„ segment๋กœ partitioningํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋น„๊ต์˜ ํšŸ์ˆ˜๋Š” bound๋ฅผ ์ •ํ•˜๋Š” ๋ฉ”์†Œ๋“œ์™€ partition ๊ณผ์ •์„ ์™„์„ฑํ•˜๋Š” ๋ฉ”์†Œ๋“œ์— ๋‹ฌ๋ ค์žˆ๋‹ค. ์–ด๋–ค ์ผ€์ด์Šค ๊ฑด ๋น„๊ต์˜ ํšŸ์ˆ˜๋Š” N+k ํ˜•ํƒœ๋กœ ๋‚˜ํƒ€๋‚˜์ง€๋Š”๋ฐ k๋Š” -1,0,1,2 ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด๋‹ค.

ํ‚ค ๊ฐ’์„ ๋ฐ”๊พธ๋Š” ํšŸ์ˆ˜๋Š” ์ƒํ™ฉ๋งˆ๋‹ค ๋‹ค์–‘ํ•˜๋ฏ€๋กœ ์˜ˆ์ƒ๋˜๋Š” ์ˆ˜์น˜๊ฐ€ ์ฃผ์–ด์ ธ์•ผํ•œ๋‹ค.

bound ๊ฐ’์€ section์—์„œ ๋žœ๋ค์œผ๋กœ ์ทจํ•ด์ ธ์•ผํ•จ์ด ๊ฐ€์ •๋˜์–ด์•ผ ํ•œ๋‹ค. ์ž์—ฐ์ ์œผ๋กœ ์ •๋ ฌ์ด ๋˜์–ด์žˆ๋Š” section๋„ ๋žœ๋ค์œผ๋กœ bound๋ฅผ ๊ณจ๋ผ๋‚ด์„œ ๋ฌด์ž‘์œ„์„ฑ์ด ๋ณด์žฅ๋˜์–ด์•ผํ•œ๋‹ค.

bound๊ฐ€ segment์—์„œ r๋ฒˆ์งธ๋กœ ํฐ ๊ฐ’์ด๋ผ๊ณ  ๊ฐ€์ •ํ•  ๋•Œ, ์šฐ๋ฆฌ๋Š” r์— ๋Œ€ํ•œ ํ•จ์ˆ˜๋กœ ์˜ˆ์ƒ๊ฐ’์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์กฐ๊ฑด๋ถ€ ์˜ˆ์ธก์ด ๊ทธ ์กฐ๊ฑด์˜ ํ™•๋ฅ ๊ณผ ๊ณฑํ•ด์ ธ์„œ ๋”ํ•ด์ง€๋ฉด ์ด๊ฒƒ์€ ํ™•์‹คํ•œ ์˜ˆ์ธก๊ฐ’์ด ๋œ๋‹ค. ๋ชจ๋“  ๋žœ๋ค ์˜ˆ์ธกํ•ด์„œ ์กฐ๊ฑด์˜ ํ™•๋ฅ ์€ ๋˜‘๊ฐ™์ด 1/N์ด๋‹ค. ๋”ฐ๋ผ์„œ r๊ฐ’์— ๋Œ€ํ•ด ์ฃผ์–ด์ง„ ์˜ˆ์ƒ๊ฐ’์„ N์œผ๋กœ ๋‚˜๋ˆ„์–ด์ฃผ๋ฉด ์šฐ๋ฆฌ๋Š” ํ™•์‹คํ•œ ์˜ˆ์ธก๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

partition ๊ณผ์ •์˜ ๋งˆ์ง€๋ง‰์—์„œ bound๊ฐ€ r๋ฒˆ์งธ๋กœ ํฐ key๊ฐ’์ผ ๋•Œ, ์ด ์•„์ดํ…œ์€ r๋ฒˆ์งธ ์ž๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์„ ๊ฒƒ์ด๊ณ  r-1๊ฐœ์˜ ์•„์ดํ…œ์ด ๊ทธ ์•„๋ž˜๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์„ ๊ฒƒ์ด๋‹ค. bound๋ณด๋‹ค ํด ํ™•๋ฅ ์€ (N-r-1)/N์ด๊ณ  ๋”ฐ๋ผ์„œ r-1๊ฐœ์˜ ์•„์ดํ…œ์ด ๊ฐ€์งˆ ์˜ˆ์ƒ๊ฐ’์€ (N-r-1)(r-1)/N ์ด๋‹ค. ๋ชจ๋“  r์— ๋Œ€ํ•ด์„œ ์ด ๊ฐ’์„ ๋”ํ•˜๊ณ  N์œผ๋กœ ๋‚˜๋ˆ„๋ฉด N/6+5/(6N) ์ด๋‹ค.

์ด๋Ÿฌํ•œ ํ˜•ํƒœ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ํ•ญ์ƒ partitioning์— ํ•„์š”ํ•œ ์‹œ๊ฐ„์€ aN + b + c/N ์˜ ๊ผด๋กœ ํ•ญ์ƒ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. (a,b,c๋Š” ๋ฃจํ”„ ํšŸ์ˆ˜์— ๋”ฐ๋ผ ๊ฒฐ์ •๋œ๋‹ค.)

์ตœ์ข… ์‹

๊ฒฐ๊ตญ ์ฒ˜์Œ์— ํ•˜๋‚˜์˜ r๊ฐ’์„ bound๊ฐ’์œผ๋กœ ์ง€์ •ํ•˜์˜€๋‹ค๋ฉด, N๊ฐœ์˜ ์•„์ดํ…œ์„ ์ •๋ ฌํ•˜๋Š” ์‹œ๊ฐ„์€ N๊ฐœ์˜ ์•„์ดํ…œ์„ partitioningํ•˜๋Š” ์‹œ๊ฐ„ + r-1๊ฐœ์˜ ๋” ์ž‘์€ ์•„์ดํ…œ์„ ์ •๋ ฌํ•˜๋Š” ์‹œ๊ฐ„ + N-r-1๊ฐœ์˜ ๋” ํฐ ์•„์ดํ…œ์„ ์ •๋ ฌํ•˜๋Š” ์‹œ๊ฐ„์ด๋‹ค. ๋”ฐ๋ผ์„œ ์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด

Tn = Tr + Tn-r + aN + b + c/N ์ด๋‹ค.

๋”ฐ๋ผ์„œ ์ด ์‹์„ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ r์— ๋Œ€ํ•˜์—ฌ N์œผ๋กœ ๋‚˜๋ˆˆ ํ›„ ๋”ํ•˜๋ฉด

์ด๋Ÿฌํ•œ ์‹์ด ๋‚˜์˜จ๋‹ค. (M์€ bound๊นŒ์ง€์˜ ๊ฐฏ์ˆ˜)(?)

ํƒ€๋‹น์„ฑ ์ฆ๋ช…

์ด ํ•ด๊ฒฐ์ฑ…์˜ ํƒ€๋‹น์„ฑ์€ ํ•ด๋‹น ์‹์ด ์›๋ž˜ ์‹๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํŒ๋‹จํ•จ์œผ๋กœ์จ ์–ป์–ด์ง„๋‹ค. ๊ฐ ๊ณ„์ˆ˜๋“ค์€ ๋”ฐ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋จผ์ € a์˜ ํƒ€๋‹น์„ฑ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

*a์˜ ํƒ€๋‹น์„ฑ

Wn์„

์ด๋ผ ํ‘œํ˜„ํ•˜๊ณ  Vn์„ Tn์—์„œ a์˜ ๊ณ„์ˆ˜๋กœ ์ƒ๊ฐํ–ˆ์„ ๋•Œ,

 

Vn

๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

M์ด 2์ด๊ณ  a=1, b=c=T1 =0์ด๋ผ๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ, N์ด ๊ต‰์žฅํžˆ ํฌ๋ฉด ๊ฐ€์žฅ ํฐ ํ•ญ์„ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋น„๊ต์˜ ํšŸ์ˆ˜๋Š”

๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

์ „์ฒด entropy๊ฐ€ logN!์ผ ๋•Œ, binary ๋น„๊ตํ•˜๋Š” entropy๊ฐ€ log 2์ด๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ตํšŸ์ˆ˜์˜ ์ตœ์†Œ ํšŸ์ˆ˜๋Š”

์ด๋Ÿฌํ•˜๋‹ค.

Quick sort์˜ ๋น„๊ต ํ‰๊ท  ํšŸ์ˆ˜๋Š” 2ln2~1.4๋ผ๋Š” factor์— ์˜ํ•ด ์ด๋ก ์ ์ธ ์ตœ์†Œ ํšŸ์ˆ˜๋ณด๋‹ค ํฌ๋ฉฐ ์ด factor๋Š” bound์˜ ์„ ํƒ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.

ํ•ฉ๋ณ‘ ์ •๋ ฌ๊ณผ์˜ ๋น„๊ต

Part Two: ์‹คํ–‰

Quick sort๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ณ€์ˆ˜์— ์˜ํ•ด ์œ ์—ฐํ•˜๊ฒŒ ๋ณต์žก๋„๊ฐ€ ๋ณ€ํ•œ๋‹ค.

  1. ์ปดํ“จํ„ฐ์˜ ํŠน์„ฑ
  2. a,b,c,M(๊ณ„์ˆ˜)์˜ ๊ฐ’

partition without exchange

bound์˜ ๊ฐ’์„ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ €์žฅํ•ด๋‘๊ณ , ๋‚ฎ์€ ์ชฝ์˜ pointer๋Š” ์˜ฌ๋ผ์˜ค๋ฉด์„œ bound๋ณด๋‹ค ํฐ ๊ฐ’์„ ๋ฐœ๊ฒฌํ•˜๋ฉด ๋†’์€ ์ชฝ์˜ pointer๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ์œ„์น˜๋กœ ๋ณต์‚ฌํ•˜๊ณ  ๋†’์€ ์ชฝ์˜ pointer๋Š” ๋‚ด๋ ค์˜ค๋ฉด์„œ bound๋ณด๋‹ค ์ž‘์€ ๊ฐ’์„ ๋ฐœ๊ฒฌํ•˜๋ฉด ๋‚ฎ์€ ์ชฝ์˜ pointer๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ์œ„์น˜๋กœ ๋ณต์‚ฌํ•œ๋‹ค.

์ด ๊ณผ์ •์€ ๋‘ pointer๊ฐ€ ๊ฐ™์€ ์•„์ดํ…œ์„ ๊ฐ€๋ฆฌํ‚ฌ ๋•Œ๊นŒ์ง€ ์ง„ํ–‰๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ €์žฅํ•ด๋’€๋˜ bound ๊ฐ’์„ ๊ทธ ์œ„์น˜์— ์ €์žฅํ•œ๋‹ค.

์ด copy ๊ณผ์ •์˜ ํšŸ์ˆ˜๋Š” exchange ํšŸ์ˆ˜์˜ ์ •ํ™•ํžˆ 2๋ฐฐ์ด๋‹ค.

Cyclic Exchange

ํ•œ๋ฒˆ์˜ ๊ตํ™˜์— ๋งŽ์€ ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋” ๊ฒฝ์ œ์ ์ด๋‹ค. ์ฝ๊ณ  ๊ตํ™˜ํ•˜๊ณ  ์“ฐ๋Š” 3N์˜ ๊ณผ์ •์ด N๋ฒˆ์˜ exchange ๋™์•ˆ ์ˆ˜ํ–‰๋œ๋‹ค. ์ด ๊ณผ์ •์ด ํ•œ๋ฒˆ์— ์ˆ˜ํ–‰๋œ๋‹ค๋ฉด ํ•œ๋ฒˆ ์ฝ๊ณ  ํ•œ๋ฒˆ ์“ฐ๋ฉฐ 2N-1๋ฒˆ ๊ตํ™˜ํ•˜๋ฉด ๋  ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๊ณผ์ •์€ ๋‹ค์–‘ํ•œ ๋‹จ์–ด๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, N-fold ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.

key ๋น„๊ต ๋ฃจํ”„์˜ ์ตœ์ ํ™”

๋Œ€๋ถ€๋ถ„์˜ ์ •๋ ฌ ๋ฐฉ๋ฒ•์—์„œ ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋ฒ”์œ„๋‚ด์— ์žˆ๋‚˜ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ณผ์ •์„ ๋งค์‹œ๊ฐ„ ํ•„์š”ํ•˜๋‹ค. ํ•˜์ง€๋งŒ Quick sort๋Š” ์ด๋Ÿฌํ•œ ๊ณผ์ •์ด ํ•„์š”์—†๋‹ค. ํฌ์ธํ„ฐ๋Š” ๊ฐ๊ฐ ๊ฒฝ๊ณ„๋ฒ”์œ„์—์„œ ์‹œ์ž‘๋˜๋ฉฐ cross ๋˜๋Š” ์ˆœ๊ฐ„ ๋๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚  ์ผ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

bound๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์ด๊ฑฐ๋‚˜ ๊ฐ€์žฅ ํฐ ๊ฐ’์ผ๋•Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ์ƒ๋Œ€ pointer๊ฐ€ ๋ฉˆ์ถฐ์ค„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

Multi-word ํ‚ค

ํ•˜๋‚˜์˜ ํ‚ค ๊ฐ’์ด ์ปดํ“จํ„ฐ๊ฐ€ ํ•œ๋ฒˆ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ๋„˜์œผ๋ฉด ๋น„๊ตํ•˜๋Š”๋ฐ์— ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฐ๋‹ค. ๊ฑฐ์˜ ๋‹ค ์ •๋ ฌ๋˜์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์™”์„ ๋•Œ ์ด ๋ฌธ์ œ๋Š” ์‹ฌ๊ฐํ•ด์ง„๋‹ค. (๋น„๊ต์˜ ํšŸ์ˆ˜๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์—)

๋”ฐ๋ผ์„œ ํ‚ค ๊ฐ’ ์ค‘ ์˜ค์ง ํ•˜๋‚˜๋งŒ ์ •ํ•˜์—ฌ ๋น„๊ตํ•˜๋Š” ์‹์œผ๋กœ ์ง„ํ–‰ํ•œ๋‹ค. ๋‚ฎ์€ ์ชฝ์˜ ํฌ์ธํ„ฐ๊ฐ€ bound์™€ ํ‚ค ๊ฐ’์ด ๊ฐ™์€ ์š”์†Œ๋ฅผ ๋งŒ๋‚˜๋ฉด ๋ฉˆ์ถ”๊ฒŒ ๋™์ž‘ํ•˜์—ฌ bound์™€ ํ‚ค ๊ฐ’์ด ๊ฐ™์€ ๊ฒƒ๋“ค์€ ๋ชจ๋‘ bound ์œ„์ชฝ์— ์œ„์น˜ํ•˜๊ฒŒ ํ•œ๋‹ค.

Multilevel Storage

ํ€ต ์†ŒํŠธ๋Š” ์—ฌ๋Ÿฌ ๋ ˆ๋ฒจ์˜ ๋ฉ”๋ชจ๋ฆฌ(๋งˆ๊ทธ๋„คํ‹ฑ ๋””์Šคํฌ, ๋“œ๋Ÿผ์˜ back store)๊ฐ€ ์žˆ๋Š” ๊ธฐ๊ธฐ์— ์ ํ•ฉํ•˜๋‹ค. backing store์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์–ด์žˆ์œผ๋ฉด ํผ์ ธ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ random ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋น ๋ฅด๋‹ค. ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์™€ backing store ์‚ฌ์ด์—๋งŒ ์ •๋ณด๊ฐ€ ์˜ค๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ •๋ณด๋ฅผ ์ฐพ๋Š” ๋ฐ ๋“œ๋Š” ์‹œ๊ฐ„์€ ๋” ๋ฏธ๋ฏธํ•ด์งˆ๊ฒƒ์ด๋‹ค.

๋งˆ๊ทธ๋„คํ‹ฑ ํ…Œ์ดํ”„ ์ €์žฅ๋ฐฉ์‹์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์ด์ ์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

๊ฒฐ๋ก 

ํ€ต์†ŒํŠธ๋Š” ์ปดํ“จํ„ฐ์˜ ๋ฌด์ž‘์œ„์  ์ ‘๊ทผ ์ €์žฅ์— ์ ํ•ฉํ•œ ์ •๋ ฌ๋ฐฉ์‹์ด๋‹ค. ํฐ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋งˆ๊ทธ๋„คํ‹ฑ ๋“œ๋Ÿผ์ด๋‚˜ ๋””์Šคํฌ์™€ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ์‹œ์Šคํ…œ์—์„œ ์ ํ•ฉํ•˜๋‹ค. ๋น„๊ต ๋ฃจํ”„์˜ ํšŸ์ˆ˜๋Š” ์ด๋ก ์ƒ ๊ฐ€์žฅ ์ ์€ ํšŸ์ˆ˜์™€ ๊ฐ€๊นŒ์šฐ๋ฉฐ, ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋œ๋‹ค. ๋ฐ์ดํ„ฐ์˜ ์ด๋™์€ ํ•ฉ๋ฆฌ์ ์€ ๋ฒ”์œ„ ๋‚ด์—์„œ ์ด๋ฃจ์–ด์ง„๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋žœ๋ค ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ปดํ“จํ„ฐ์—์„œ ์ถ”์ฒœ๋œ๋‹ค.ใ„ด

 

 

๋ฐ˜์‘ํ˜•