๐Ÿ“š ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ง๊ณ ์‚ฌ ์ •๋ฆฌ

๐Ÿ“š ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ง๊ณ ์‚ฌ ์ •๋ฆฌ

๊ธฐ๋ง๊ณ ์‚ฌ

10

์•Œ๊ณ ๋ฆฌ์ฆ˜ : ๋‹ค์Œ ์กฐ๊ฑด ๋งŒ์กฑํ•ด์•ผํ•จ (์ž…๋ ฅ, ์ถœ๋ ฅ, ๋ช…ํ™•์„ฑ, ์œ ํ•œ์„ฑ, ์œ ํšจ์„ฑ)

  • ์ž…๋ ฅ : ์™ธ๋ถ€ ์ž…๋ ฅ์ด ์ฃผ์–ด์ง
  • ์ถœ๋ ฅ : ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋จ
  • ๋ช…ํ™•์„ฑ : ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…
  • ์œ ํ•œ์„ฑ : ์œ ํ•œํ•œ ๊ฐœ์ˆ˜๋ฅผ ์‹คํ–‰ํ•ด์•ผํ•จ โ†’ ๋ฌดํ•œํ•˜๋ฉด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ ํ•  ์ˆ˜ ์—†์Œ OS๊ฐ™์€๊ฑฐ
  • ์œ ํšจ์„ฑ : ์งง์€ ์‹œ๊ฐ„ ๋‚ด์— ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ โ†’ ๋ณต์žกํ•˜์—ฌ ๋„ˆ๋ฌด ๊ธด์‹œ๊ฐ„์ด ํ•„์š”ํ•œ๊ฑด ์œ ํšจํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์—†์Œ.

๋ถ„์„ : ์ถ”์ •ํ•˜๋Š” ๊ฒƒ

์ธก์ • : ์‹ค์ œ๋กœ ์ธก์ •ํ•˜๋Š” ๊ฒƒ (์ถ”์ •๊ณผ ์ธก์ •์˜ ์ฐจ์ด)

์ถ”์ •์˜ ๊ฒฐ๊ณผ๋กœ ๋ณต์žก๋„๊ฐ€ ๋‚˜์˜จ๋‹ค.

๊ณต๊ฐ„๋ณต์žก๋„ : ์‹คํ–‰์„ ๋งˆ์น  ๋•Œ ๊นŒ์ง€์˜ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋ชจ ์ถ”์ •์น˜

๊ณ ์ •๋œ ํฌ๊ธฐ : ์ฝ”๋“œ ์ž์ฒด์˜ ํฌ๊ธฐ, ์ปดํŒŒ์ผ์‹œ๋ถ€ํ„ฐ ์ •ํ•ด์ง„ ๋ณ€์ˆ˜์ƒ์ˆ˜์˜ ํฌ๊ธฐ

๊ฐ€๋ณ€์  ํฌ๊ธฐ : ์ž…์ถœ๋ ฅ์˜ ํฌ๊ธฐ, ์žฌ๊ท€์‹œ ํ•„์š”ํ•œ ๊ณต๊ฐ„ ๋“ฑ ์‹คํ–‰ ์‹œ์ ์—์„œ ์ •ํ•ด์ง€๋Š” ํฌ๊ธฐ๋“ค

์‹œ๊ฐ„๋ณต์žก๋„ : ์‹คํ–‰์— ํ•„์š”ํ•œ ์‹œ๊ฐ„ ์ถ”์ •์น˜

์–ด์งœํ”ผ ์†Œ์š” ์‹œ๊ฐ„์€ ์ปดํŒŒ์ผ๋Ÿฌ/์–ธ์–ด/ํ™˜๊ฒฝ๋งˆ๋‹ค ๋‹ค ๋‹ค๋ฅด๋‹ค.

๋”ฐ๋ผ์„œ ์—ฐ์‚ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ํ†ตํ•ด ์ถ”์ •ํ•จ โ†’ n์ด ์ค‘์š”

์ž…๋ ฅ์˜ ํฌ๊ธฐ์™€ ๊ฐœ์ˆ˜๊ฐ€ ๋ชจ๋‘ ์‹œ๊ฐ„๋ณต์žก๋„์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋”ฐ. ๋Œ€ํ‘œ์ ์œผ๋กœ ํฌ๊ธฐ๋Š” factorial ์—ฐ์‚ฐ, ๊ฐœ์ˆ˜๋Š” ์ •๋ ฌ์—ฐ์‚ฐ

์ด์™ธ์—๋„ ๋‹ค์–‘ํ•œ ์š”์ธ๋“ค์ด ๋ณต์žก๋„์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค. ํ€ต์ •๋ ฌ์—์„œ pivot ์„ ์ • ๋ฐฉ์‹ ๋“ฑ..

๊ทธ๋ž˜์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” 3๊ฐ€์ง€๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•˜๋Š”๋ฐ ์ตœ์„ , ์ตœ์•…, ํ‰๊ท ์˜๊ฒฝ์šฐ 3๊ฐ€์ง€์ž„.

์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•ด๋ณด์ด์ง€๋งŒ ์‚ฌ์‹ค ์Šคํ… ์ˆ˜๋ฅผ ์ƒˆ๋Š”๊ฑด ์‰ฌ์šด๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋‹ค. ์ •ํ™•ํ• ์ˆ˜๊ฐ€์—†์Œโ€ฆโ€ฆ

์ƒํ•œ : big-O โ†’ ex) 5n+4์˜์ƒํ™ฉ์—์„œ O(n) ์–ด์งœํ”ผ ์ƒํ•œ. ์กด๋‚˜ํฐ ๊ฒฝ์šฐ์ด๋ฏ€๋กœ ์ƒ์ˆ˜ ๋ฌด์“ธ๋ชจ

์ƒํ•œ์€ ๊ฐ€๋Šฅํ•œ ์ž‘์„์ˆ˜๋ก ์ •ํ™•ํ•˜๊ธฐ๋•Œ๋ฌธ์— ์ด๋ ‡๊ฒŒํ•˜๋Š”๊ฒŒ ๋งž์•„์šฉ ๊ฑ ์ตœ๊ณ ์ฐจํ•ญ๋งŒ ๋˜‘ ๋–ผ์–ด์„œ ์ƒ๊ฐ!

O(1), O(log n), O(n), O(n log n), O(n^2), O(n^3), O(2^n)

ํ•˜ํ•œ : big-Omega โ†’ ex) 3n+3์—์„œ ์ตœ์†Œ 1์ด์ƒ์€ ๊ฑธ๋ฆฌ๋ฏ€๋กœ 1์ด๋ผ๊ณ  ๋งํ• ์ˆ˜๋„ ์žˆ๋‹ค ๊ทผ๋ฐ 1์ด๋ผ๊ณ ๋งํ•˜๋ฉด ๋„ˆ๋ฌด๋ถ€์ •ํ™•ํ•˜๋‹ˆ๊นŒ ์ตœ์†Œ n์€ ๊ฑธ๋ฆฐ๋‹ค๊ณ  ๋งํ•œ๋‹ค. ์ƒํ•œ๊ณผ๋‹ฌ๋ฆฌ ๊ฐ€๋Šฅํ•œ ํฌ๊ฒŒ๋งํ•˜๋ฉด๋˜๋Š”๊ฑฐ

์ด๊ฒƒ๋„ ์‰ฝ๊ฒŒ๋ณด๋ฉด ๊ฑ ์ตœ๊ณ ์ฐจํ•ญ ๋˜‘๋–ผ์„œ ์ƒ๊ฐํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜๋„ ์žˆ๊ธดํ• ๋“ฏ(๋‹ค๊ทธ๋Ÿฐ๊ฑด์•„๋‹Œ๊ฑฐ๊ฐ™์Œ)

ํ‰๊ท  : big-Theta ์ž˜์•ˆ์“ด๋‹ค. ๊ทธ๋ƒฅ big-Oh๊ฐ€ ์ตœ๊ณ 

11

stay ahead : ๋งค ์Šคํ…๋งˆ๋‹ค ์ตœ์ ์˜ ํ•ด๋‹ต์„ ์ฐพ์•„๊ฐ€๋Š”๊ฒƒ. ex)interval scheduling

exchange argument approach : ๊ทธ๋ฆฌ๋””์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ์ฐพ์•„์ง„ ์†”๋ฃจ์…˜์œผ๋กœ ์ ์ง„์ ์œผ๋กœ ๋ณ€ํ™˜์‹œํ‚ค๋Š”๊ฒƒ. ex)huffman code

์ตœ๋‹จ๊ฑฐ๋ฆฌ์ฐพ๊ธฐ๋‚˜ ์ตœ์†Œ๋น„์šฉํ™•์žฅํŠธ๋ฆฌ๊ฐ™์€๊ฒƒ๋„ ๊ทธ๋ฆฌ๋””์ž„

interval scheduling = stay ahead huffman code = exchange argument

interval scheduling

์ž‘์—… j๊ฐ€ sj์—์„œ์‹œ์ž‘ํ•ด์„œ fj์— ๋๋‚œ๋‹ค๊ณ ํ• ๋•Œ ์„œ๋กœ overlap๋˜์ง€์•Š๋Š” ์ž‘์—…๋“ค์€ compatibleํ•˜๋‹ค.

์ƒํ˜ธ๊ฐ„์— compatibleํ•œ job๋“ค์˜ ์ตœ๋Œ€ ํ•˜์œ„์ง‘ํ•ฉ์„ ์ฐพ์•„๋‚ด๋Š”๊ฒƒ์ด interval scheduling์˜ ๋ชฉํ‘œ ๋งŽ์€ ์ˆ˜์˜ job๋“ค์„ ์ฑ™๊ธฐ๋Š”๊ฒƒ์ด ์ด๋“

๊ทธ๋ฆฌ๋””ํ•˜๊ฒŒ ์ ‘๊ทผํ•˜๋Š”๋ฐฉ๋ฒ•์ด ๋ช‡๋ช‡๊ฐœ๊ฐ€ ์žˆ๋‹ค.

  • ์ผ์ฐ์‹œ์ž‘ํ•˜๋Š”๋†ˆ : ์‹œ์ž‘ํ•˜๋Š” ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์œผ๋กœ ๋ณด์ž โ†’ ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ• ์ˆ˜๋ก ์ข‹๋‹ค
  • ์ผ์ฐ๋๋‚˜๋Š”๋†ˆ : ๋๋‚˜๋Š”์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์œผ๋กœ ๋ณด์ž โ†’ ๋น ๋ฅด๊ฒŒ ๋๋‚ ์ˆ˜๋ก ์ข‹๋‹ค
  • ๊ฐ€์žฅ์งง์€์ธํ„ฐ๋ฒŒ : ์ž‘์—…์˜ ์ง„ํ–‰์‹œ๊ฐ„์ด ๊ฐ€์žฅ์งง์€ ์ˆœ์œผ๋กœ ๋ณด์ž โ†’ ์ž‘์—…์‹œ๊ฐ„์ด ์งง์„์ˆ˜๋ก ์ข‹๋‹ค
  • ๊ฐ€์žฅ์ ์€๋ถ„์Ÿ : ๋‹ค๋ฅธ ์ž‘์—…๊ณผ ๊ฒน์น˜๋Š” ์ˆ˜๋ฅผ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์œผ๋กœ ๋ณด์ž โ†’ ์•ˆ๊ฒน์น ์ˆ˜๋ก ์ข‹๋‹ค

๋‹จ, ์ด๋ฏธ ์„ ํƒ๋œ๊ฑฐ๋ž‘ compatibleํ•œ๊ฑธ ๊ณจ๋ผ์•ผํ•จ. ์„ ํƒ๋  ์ž‘์—…์˜ s๊ฐ€ ๋งˆ์ง€๋ง‰์— ์„ ํƒ๋œ ์ž‘์—…์˜ f๋ณด๋‹ค ์ปค์•ผํ•œ๋‹ค.

๊ทผ๋ฐ ์œ„์—์„œ ์ œ์‹œํ•œ ๊ทธ๋ฆฌ๋””ํ•œ ๋ฐฉ๋ฒ•๋“ค์ด ๋‹ค ํ†ตํ•˜๋Š”๊ฑฐ๋Š” ์•„๋‹ˆ๋‹ค.. ๋ชจ๋‘ ์˜ˆ์™ธ๊ฐ€์žˆ์Œ.

images

earliest finish time์ด ๋ฐ˜๋ก€์—†์ด optimalํ•˜๋‹ค. ์‹œ๊ฐ„๋ณต์žก๋„ O(n log n)

โ€œstay aheadโ€ ๋ฐฉ์‹์œผ๋กœ.. ๋ชจ์ˆœ์„ ํ†ตํ•ด ์ฆ๋ช…ํ•œ๋‹ค.

๋งŒ์•ฝ greedyํ•˜๊ฒŒ ์„ ํƒ๋œ k๊ฐœ์˜ job๊ณผ ์‹ค์ œ optimalํ•œ m๊ฐœ์˜ job์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ž. ๊ทผ๋ฐ greedy๋Š” optimalํ•˜์ง€ ์•Š๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž ์ผ๋‹จ. r๋ฒˆ์งธ๊นŒ์ง€ optimalํ•œ๊ฒƒ๊ณผ optimalํ•˜์ง€ ์•Š๋‹ค๊ณ  ๊ฐ€์ •๋œ greedyํ•œ๊ฒƒ์ด ๊ฐ™๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ, optimal ํ•œ๊ฒƒ์˜ r + 1๋ฒˆ์งธ๊ณผ greedyํ•œ๊ฒƒ์˜ r + 1์ด ๊ฐ™์ง€ ๋ชปํ•  ์ˆ˜ ์—†๋‹ค. ์ฆ‰ ๊ฐ™์„ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ๊ทธ๋Ÿผ optimalํ•œ๊ฑด๋ฐ ๊ฐ€์ •์ด optimalํ•˜์ง€ ์•Š๋‹ค์˜€์œผ๋ฏ€๋กœ ๋ชจ์ˆœ๋œ๋‹ค. ์ฆ‰ greedyํ•œ๊ฒƒ์ด optimalํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฐ€์ •์ด ๋ชจ์ˆœ๋˜๋ฏ€๋กœ greedyํ•œ๊ฒƒ์€ optimal ํ•˜๋‹ค.

images

๋งŒ์—ํ•˜๋‚˜ r+1์—์„œ greedyํ•˜๊ฒŒ ์ฐพ์€๊ฒƒ๋ณด๋‹ค optimalํ•˜๊ฒŒ ์ฐพ์€๊ฒŒ์žˆ๋‹ค๋ฉด ๋ญ”๊ฐ€์ž˜๋ชป๋œ๊ฑฐ๋‹ค.

์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ merge

์ตœ์†Œํ•œ์˜ ๋น„๊ต๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€? ex) 20๊ฐœ๋ฆฌ์ŠคํŠธ์™€ 30๊ฐœ๋ฆฌ์ŠคํŠธ, 50๊ฐœ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•ฉ์น ๋•Œ

20๊ฐœ์™€ 30๊ฐœ๋ฅผ ํ•ฉ์นœ๋‹ค(๋น„๊ต50ํšŒ) ๊ทธ๋ฆฌ๊ณ  50๊ฐœ์™€ 50๊ฐœ๋ฅผ ํ•ฉ์นœ๋‹ค (๋น„๊ต 100ํšŒ) โ†’ ์ด 150ํšŒ

20๊ฐœ์™€ 50๊ฐœ๋ฅผ ํ•ฉ์นœ๋‹ค(๋น„๊ต 70ํšŒ) ๊ทธ๋ฆฌ๊ณ  70๊ฐœ์™€ 30๊ฐœ๋ฅผ ํ•ฉ์นœ๋‹ค (๋น„๊ต 100ํšŒ) โ†’ ์ด 170ํšŒ

30๊ฐœ์™€ 50๊ฐœ๋ฅผ ํ•ฉ์นœ๋‹ค (๋น„๊ต 80ํšŒ) ๊ทธ๋ฆฌ๊ณ  80๊ฐœ์™€ 20๊ฐœ๋ฅผ ํ•ฉ์นœ๋‹ค (๋น„๊ต 100ํšŒ) โ†’ ์ด 180ํšŒ

๋ถ„๋ช… ๊ฐ™์€ ๋ฆฌ์ŠคํŠธ๋“ค์„ ํ•˜๋‚˜๋กœ ํ•ฉ์นœ๊ฑด๋ฐ๋„ ๋น„๊ต์˜ ํšŒ์ˆ˜์— ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ฐ€์žฅ ๋น„๊ต๊ฐ€ ์ ์–ด์•ผ ์„ฑ๋Šฅ์ด ์ข‹์€๊ฑฐ๋‹ค. ๋น„๊ต๊ฐ€ ์ ๊ฒŒ ํ•˜๋Š”๋ฐฉ๋ฒ•์€?

๊ฐ ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ๊ฐ€ ๋ฆฌํ”„๋…ธ๋“œ๊ฐ€ ๋˜์–ด์„œ ๋ฐฐ์น˜๋จ. ์˜ฌ๋ผ๊ฐˆ๋–„๋งˆ๋‹ค ๋”ํ•ด์งˆ๊ฑฐ๊ธฐ๋•Œ๋ฌธ. ๊ฐ ๋…ธ๋“œ์˜ ๊ฐ’๋“ค์ด ์˜ฌ๋ผ์˜ค๋Š”๋ฐ ๊ฑฐ์น˜๋Š” path๋งˆ๋‹ค ๋น„๊ตํšŒ์ˆ˜๊ฐ€ ๊ทธ๋งŒํผ ๋Š˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ์™€ ๊ทธ ๋ฆฌ์ŠคํŠธ์— ๋„๋‹ฌํ•˜๋Š” path์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณฑํ•œ๊ฐ’์„ ๋‹ค ๋”ํ•œ๊ฒŒ ๋น„๊ต์˜ ํšŒ์ˆ˜๊ฐ€๋จ. โ† ํ—ˆํ”„๋งŒ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…

images

ํ—ˆํ”„๋งŒ์ฝ”๋“œ

๋ฌธ์ž์—ด์„ 0๊ณผ 1์˜ ์‹œํ€€์Šค๋กœ ๋งŒ๋“ค์–ด ๋ฉ”์‹œ์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋น„ํŠธ์˜ ์ˆ˜๊ฐ€ ์ตœ์†Œํ•œ์ด ๋˜๋„๋ก ํ•œ๋‹ค. ๋ฌผ๋ก  ๊ตฌ๋ณ„ ๊ฐ€๋Šฅํ•ด์•ผํ•จ.

๊ธธ์ด๊ฐ€ ๊ณ ์ •๋œ ์ธ์ฝ”๋”ฉ์—์„œ๋Š” n๊ฐœ ์‹ฌ๋ณผ์˜ ํ‘œ์‹œ์— log2n๋น„ํŠธ๊ฐ€ ํ•„์š”ํ•จ. ๊ณ ์ •๋˜์–ด์žˆ์Œ.. ๊ทธ๋ž˜์„œ ๊ณต๊ฐ„์ ์ธ ํ™œ์šฉ๋„๊ฐ€ ์ข‹์ง€๋ชปํ•จ ๊ทธ๋ž˜์„œ ๋ณ€์ˆ˜์˜ ๊ธธ์ด๋ฅผ ๊ฐ–๋Š” ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹๋„ ์žˆ๋Š”๋ฐ, ๋Œ€ํ‘œ์ ์œผ๋กœ ๋ชจ์Šค์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค. ๊ทผ๋ฐ ์ด๋Ÿฐ ์ฝ”๋“œ์˜ ๋ฌธ์ œ์ ์€ ๊ตฌ๋ถ„์ด ์•ˆ๋˜๋ฉด ์•Œ ์ˆ˜๊ฐ€ ์—†์Œ. ๊ทธ๋ž˜์„œ ๋ชจ์Šค์ฝ”๋“œ๋„ ๊ฐ ๋ฌธ์ž๋ณ„๋กœ ๊ตฌ๋ถ„ํ•ด์ฃผ๋Š” ์‰ฌ๋Š”์‹œ๊ฐ„์ด์žˆ๋‹ค.(pause) ๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ ์‚ฌ์‹ค์ƒ 0๊ณผ 1์ด์•„๋‹ˆ๋ผ ๊ทธ๋ƒฅ 3๊ฐœ๋ฅผ ์“ด๋‹ค๊ณ  ๋ด์•ผํ• ์ •๋„. ์ •๋ง ๊ทธ๋ƒฅ 0๊ณผ 1๋กœ๋งŒ ํ•˜๋ ค๋ฉด??

๋“ฑ์žฅํ•˜๋Š” ์ฝ”๋“œ๋Š” ๊ณ ์ •(prefix code)๋˜์–ด์žˆ๋‹ค. ๋งŒ์•ฝ ๋™์ผํ•œ๊ฒŒ ๋‚˜์˜ค๋ฉด ๊ทธ๊ฑด ๋‹ค๋ฅธ์—ฌ์ง€๊ฐ€์—†์ด ๋ฐ”๋กœ โ€œ๊ทธ๊ฑฐโ€๋‹ค

๋”ฐ๋ผ์„œ ์•”ํ˜ธํ™”ํ•œ๊ฑธ ๋ณตํ˜ธํ™”ํ• ๋•Œ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฝ์–ด๋“ค์ด๋ฉด์„œ ์•Œ๋งž๋Š”๊ฒŒ ๋‚˜์˜ค๋ฉด ๊ทธ๊ฒŒ ๋ฐ”๋กœ ๊ทธ๊ฑฐ๋‹ค. ๊ทธ๋ƒฅ ์˜์‹ฌ์˜ ์—ฌ์ง€๊ฐ€ ์—†๋‹ค. ๋‚จ์€ ๋น„ํŠธ ์—†์„๋•Œ๊นŒ์ง€ ์œ„๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉด huffmancode๋ฅผ decodeํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ.

๋ฐ”์ด๋„ˆ๋ฆฌ ํŠธ๋ฆฌ๋กœ ํ‘œํ˜„ํ•  ๋•Œ๋Š” ์œ ๋‹ˆํฌํ•œ path๋ฅผ ๊ฐ–๋„๋ก ํ•ด์ค˜์•ผํ•˜๋ฏ€๋กœ ๋ชจ๋“  ์•ŒํŒŒ๋ฒณ๋“ค์€ ํŠธ๋ฆฌ์˜ leaf์— ๋Œ€์‘๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  root๋กœ๋ถ€ํ„ฐ ๊ฐ ์•ŒํŒŒ๋ฒณ(๋ฆฌํ”„๋…ธ๋“œ)์œผ๋กœ์˜ path๊ฐ€ ์ขŒ์ธก์œผ๋กœ๊ฐ€๋ƒ ์šฐ์ธก์œผ๋กœ๊ฐ€๋ƒ๋ฅผ ํ† ๋Œ€๋กœ 0๊ณผ1์˜ ์‹œํ€€์Šค๋ฅผ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค. ๋ฆฌํ”„๊ฐ€ ์•„๋‹Œ ๋…ธ๋“œ๊ฐ€ ๋ชจ๋‘ ์ž์‹์„ ๊ฐ€์ง€๊ฒŒ๋˜๋ฉด ๊ฝ‰์ฐฌ๊ฒƒ.

์•ž์„œ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ 2๊ฐœ ์ •๋ ฌ(optimal 2-way merge) ์™€ ๋™์ผํ•œ ๋ฐฉ์‹์ด๋‹ค. ๊ฐ ๋ฌธ์ž๊ฐ€ ๋“ฑ์žฅํ•˜๋Š” ํšŒ์ˆ˜๊ฐ€ ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๋ž‘ ๋Œ€์‘๋˜๊ธฐ๋•Œ๋ฌธ. ์ฆ‰ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ž‘์„์ˆ˜๋ก ๋ฐ‘์œผ๋กœ๊ฐ€๋ฉด ์ด๋“

images

๋”ฐ๋ผ์„œ optimal 2-way merge๋ž‘ ๋™์ผํ•˜๊ฒŒ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n log n)์ด๋œ๋‹ค!

์ฆ๋ช…์€ ๋‹ค๋“ค ๊ทธ๋ฆฌ๋””๊ฐ€ ์˜ตํ‹ฐ๋ฉ€ํ•˜์ง€ ์•Š์Œ์„ ๊ฐ•์กฐํ•˜๋Š”๋“ฏ. ๊ทธ๋ฆฌ๋”” ํ•˜์ง€ ์•Š์€ ๋ฐฉ๋ฒ•์œผ๋กœํ–ˆ์„๋•Œ ์ ์–ด๋„ ๊ฐ™๊ฑฐ๋‚˜ ์•ˆ์ข‹์€๊ฑธ ์ฆ๋ช…ํ•œ๋‹ค.

12

divide and conquer ๋ถ„ํ• ์ •๋ณต

๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ๊ทธ ๋ถ€๋ถ„๋“ค์„ ์žฌ๊ท€์ ์œผ๋กœ ํ•ด๊ฒฐํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ ๋ถ€๋ถ„์˜ ํ•ด๊ฒฐ์„ ํ•ฉ์ณ ํ•˜๋‚˜์˜ ์†”๋ฃจ์…˜์œผ๋กœ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ธŒ๋ฃจํŠธํฌ์Šค๋ฉด O(n^2)๊ฑธ๋ฆด๊ฑธ O(n log n)์œผ๋กœ ๊ฐ€๋Šฅํ•จ

merge sort

๋ฐ˜์œผ๋กœ์ชผ๊ฐ ๋‹ค O(1)

์ชผ๊ฐœ์ง„๊ฑธ ๊ฐ๊ฐ ์ •๋ ฌํ•œ๋‹ค 2T(n/2) = 2O(n/2 log n/2) = O(n log n)

๋น„๊ตํ• ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ ์ž‘์€ ์กฐ๊ฐ์œผ๋กœ ๊ณ„์† ๋‚˜๋ˆˆ๋‹ค. ๋‘๊ฐœ์”ฉ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๊ฒŒ33

T(n)์€ ์žฌ๊ท€์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๋‚˜ํƒ€๋ƒ„. n์ด ๊นŠ์ด? ์ธ๊ฑฐ๊ฐ™์Œ ๊ฑ Oํ‘œ๊ธฐ๋ฒ•์œผ๋กœ๋ฐ”๊พธ๋ฉด O(n log n)์ด ๋œ๋‹ค.

images

์ •๋ ฌ๋œ์ชผ๊ฐ€๋ฆฌ๋ฅผ ํ•ฉ์นœ๋‹ค(merge) O(n)

ํ€ต์†ŒํŠธ๋Š” divideํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ์ธํ•ด divide๊ฐ€ ๋А๋ฆฌ์ง€๋งŒ merge๋Š” divide๋Š” ๋น ๋ฆ„(๋ฌด์กฐ๊ฑด์ค‘๊ฐ„)

merge๋Š” ์ž„์‹œ ์˜์—ญ์„ ํ†ตํ•ด์„œ ์ด๋ค„์ง€๋Š”๋ฐ ๊ตณ์ด ์ด๋ ‡๊ฒŒ ์•ˆํ•˜๊ณ ์‹ถ์œผ๋ฉด ์•ˆํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๊ธดํ•˜๋‹ค..

Inversion counting

๋žญํ‚น์˜ˆ์ œ : ๋‚˜๋Š” i๊ฐ€ j๋ณด๋‹ค ๋žญํ‚น์ด ๋†’์€๋ฐ, ์Ÿค๋Š” j๊ฐ€ i๋ณด๋‹ค ๋žญํ‚น์ด ๋†’์„ ๋•Œ i๋ž‘ j๊ฐ€ ์—ญ์ „๋๋‹ค๊ณ ํ•จ ๋ธŒ๋ฃจํŠธํฌ์Šค๋กœ ๋น„๊ตํ•ด์„œ ์ฐพ๋Š”๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ ์‹œ๊ฐ„๋ณต์žก๋„ O(n^2)์ž„โ€ฆ

์ด๊ฒƒ๋„ ๋‚˜๋ˆ ์„œ์ƒ๊ฐํ•˜์ž ์ด๋ง์ด์•ผ~

images

์ด๊ฑธ ๋‹ค์‹œ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์„œ ๋˜ ๋Œ๋ฆฐ๋‹ค. (sort and count + sort and count + merge and count)

๊ธฐ๋ณธ์ ์œผ๋ก  merge sort๋ž‘ ๊ฐ™๋‹ค.

๋‚˜๋ˆ ์„œ ๊ฐ ๋‚˜๋ˆ ์ง„ ๋ถ€๋ถ„์—์„œ inversion์„ ๊ตฌํ•˜๊ณ  (๊ตฌํ–ˆ์œผ๋ฏ€๋กœ ํ•œ์ชฝ์€ ์ •๋ ฌ๋˜์–ด์žˆ๋‹ค๊ณ  ๋ด๋„ ๋ฌด๋ฐฉ) ๊ฐ ํŒŒํŠธ๋ณ„๋กœ ํ•ฉ์ณ์ง„๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ inversion์„ ๋˜ ๊ตฌํ•œ๋‹ค.

closest pair

ํ‰๋ฉด์— ์ฃผ์–ด์ง„ n๊ฐœ์˜ ์ ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ–๋Š” ์Œ์„ ์ฐพ๊ธฐ

๋ชจ๋“  ์Œ๋“ค์„ ๋‹ค ๊ฒ€์‚ฌํ•˜๋ฉด ๋จ. ์‹œ๊ฐ„๋ณต์žก๋„ O(n^2) ๊ฐ€๋Šฅ?ใ…‹ใ…‹

ํ•ด๊ฒฐ๋ฒ• : ๋Œ€๊ฐ• n/2์ ๋“ค๋กœ ๋‚˜๋‰˜๋„๋ก ํ‰๋ฉด์„ ์ž˜๋ผ์„œ ๊ฐ ์ชผ๊ฐ€๋ฆฌ์—์„œ ์ œ์ผ ์งง์€ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ๊ณ  ๊ทธ ๋‘˜์„ ๋น„๊ตํ•ด์„œ ๋” ์งง์€๊ฑธ ์ฐพ์Œ. ๊ทธ๋Ÿผ mergeํ•  ๋•Œ merge๋œ ์‚ฌ์ด์—์„œ ๊ทธ ์งง์€ ๊ธธ์ด๋ณด๋‹ค ์งง์€๊ฒŒ ์žˆ๋Š”์ง€ ์ฐพ์œผ๋ฉด ๋จ

images

์•„๋ฌด๋ฆฌ๊ธธ์–ด๋ด์•ผ ๋‚˜๋ˆˆ ์„  ๊ธฐ์ค€์œผ๋กœ ์ขŒ์šฐ ๋ธํƒ€๋งŒํผ ๋ฒ—์–ด๋‚˜์ง€ ์•Š์Œ. ๊ทธ๋ฆฌ๊ณ  ์ด ๋ธํƒ€ ๋ฐด๋“œ ์•ˆ์—์„œ(๋ถ„๋ฆฌ์„ ์˜x์ขŒํ‘œ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๊ฐ€ delta๋ณด๋‹ค ์ž‘์€ ์ ๋“ค) ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ ์„ ์ฐพ๊ธฐ์œ„ํ•ด์„œ y๋กœ ์ •๋ ฌ์„ ์‹œํ‚จ๋‹ค. ์ด๋ ‡๊ฒŒ ์ •๋ ฌ์‹œํ‚จ ํ›„์—๋Š” ์•„๋ฌด๋ฆฌ ๊ฐ€๊นŒ์šด ์ ์ด ์ฃผ๋ณ€์— ๋งŽ์•„๋ด์•ผ ์ตœ๋Œ€ 7๊ฐœ๊ฐ€ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ y๋กœ ์ •๋ ฌ์‹œํ‚จ ์ƒํƒœ์—์„œ ๊ทผ์ฒ˜์˜ 7๊ฐœ์— ๋Œ€ํ•ด์„œ ๋ชจ๋‘ ์กฐ์‚ฌํ•œ๋‹ค.

13

Greedy : ํ•ด๋ฒ•์„ ์ ์ฐจ ์ฐพ์•„๊ฐ„๋‹ค. ๋งค ์ƒํ™ฉ ์ตœ์ ์˜ ์„ ํƒ

Divide and conquer : ๋ฌธ์ œ๋ฅผ ์ž‘์€ ํ•˜์œ„๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด ํ•ด๊ฒฐํ•œ๋’ค ์†”๋ฃจ์…˜์„ ํ•ฉ์นœ๋‹ค

Dynamic programming : ํ•˜์œ„ ๋ฌธ์ œ์˜ ์—ฐ์†์œผ๋กœ ๋งŒ๋“ ๋‹ค. ์ž‘์€๋ฌธ์ œ์— ์‚ด์„๋ถ™์–ด ํฐ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด๋‚˜๊ฐ„๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์žฌ๊ท€ ํ”„๋กœ๊ทธ๋žจ์€ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ์“ฐ๋ ˆ๊ธฐ๋‹ค. ํ”ผ๋ณด๋‚˜์น˜์ˆ˜์—ด ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ์ง€์ˆ˜์ ์ด๋‹ค.

๊ทธ๋ ‡๊ฒŒ ์žฌ๊ท€์ ์œผ๋กœ ๋™์ž‘ํ•˜๋ฉด ์‚ฌ์‹ค ์ƒ๊ฐ๋ณด๋‹ค ์ด๋ฏธ ๊ณ„์‚ฐ๋œ ๊ฐ’์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋Š” ์ค‘๋ณต ๊ณ„์‚ฐ์ด ๊ต‰์žฅํžˆ ๋งŽ์ด ์ผ์–ด๋‚œ๋‹ค.

๋”ฐ๋ผ์„œ ์ค‘๋ณต๊ณ„์‚ฐ๋งŒ ๋ง‰์•„์ค˜๋„ ์—„์ฒญ๋‚˜๊ฒŒ ์‹œ๊ฐ„์ด ํšŒ๋ณต๋จ. ์„ ํ˜•์ ์ธ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€๋œ๋‹ค.

    public int fibo(int n ){
    	for(int i = 0; i < n; i++){
    			memoizedFibo[i] = -1;
    	}
    
    	memoizedFibo[0] = 0;
    	memoizedFibo[1] = 1;
    	return fiboByMemoization(n);
    }
    
    private int fiboByMemoization(int n){
    	if(memoizedFibo[n] < 0){
    		memoizedFibo[n] = fiboByMemoization(n - 2) + fiboByMemoization(n - 1);
    	}
    	return memoizedFibo[n];
    } 

weighted interval scheduling

๊ธฐ์กด์— interval scheduling๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ ๊ฐ job์— weight์ด ์žˆ๋‹ค. ๋‹จ์ˆœํžˆ ์•ˆ๊ฒน์น˜๋Š”๊ฑธ๋กœ ๋์ด ์•„๋‹ˆ๋ผ, ๊ฒน์น˜์ง€ ์•Š์œผ๋ฉด์„œ ์ตœ๋Œ€์˜ weight ์ด ํ•ฉ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ๋‹ค.

๊ธฐ์กด interval scheduling์€ ๊ฐ job์ด ๋๋‚˜๋Š” ์‹œ๊ฐ„์œผ๋กœ greedyํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์“ฐ๋ฉด ๊ฐ„๋‹จํžˆ ํ•ด๊ฒฐ๋์Œ. ๊ทธ๊ฑด weighted์—์„œ ๋ชจ๋“  job์˜ weight์ด ๋™์ผํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ• ๋•Œ์™€ ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™๋‹ค.

๊ธฐ์กด ๋ฐฉ์‹์ด ์•ˆํ†ตํ•˜๋Š”๊ฑด ๋„ˆ๋ฌด ์ž๋ช…ํ•˜๋‹ค. ์ผ์ฐ๋๋‚˜๋Š”๊ฑด weight์ด 1์ด๊ณ  ๋Šฆ๊ฒŒ๋๋‚˜๋Š”๊ฑด 999๋ผ๊ณ  ๊ฐ€์ •ํ•ด๋ณด์žโ€ฆ.

images

job๋“ค์„ ๊ธฐ์กด์ฒ˜๋Ÿผ ๋๋‚˜๋Š” ์‹œ๊ฐ„ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•  ๋•Œ p(j)๋ฅผ j๋ฒˆ์งธ job๊ณผ compatibleํ•œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด job์˜ ๋ฒˆํ˜ธ๋ฅผ i๋ผ ํ•˜๋ฉด j๋Š” i๋ณด๋‹ค ์ž‘์€ job๋“ค๊ณผ compatibleํ•˜๋‹ค.

images

์˜ˆ๋ฅผ๋“ค๋ฉด p(8)์€ 5๋ฒˆ์งธ job๋ถ€ํ„ฐ ํ˜ธํ™˜์ด๋˜๊ณ , p(7)์€ 3๋ฒˆ์งธ๋ถ€ํ„ฐ ํ˜ธํ™˜์ด๋œ๋‹ค.

j๋ฒˆ์งธ ๊นŒ์ง€์˜ ์†”๋ฃจ์…˜์ค‘ ๊ฐ€์žฅ optimalํ•œ๊ฑธ opt(j)๋ฅผ ํ†ตํ•ด ์•Œ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•˜์ž.

opt(8)์ด 8๋ฒˆ์งธ๋ฅผ ๋ฌด์กฐ๊ฑด ์„ ํƒํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด, 8๊นŒ์ง€์˜ ์ตœ์ ์˜ ์„ ํƒ์€ opt(5) + 8๋ฒˆ์งธ job์ด ๋  ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿผ ๋งŒ์•ฝ์— opt(8)์ด 8๋ฒˆ์งธ๋ฅผ ์„ ํƒ ์•ˆํ•œ๋‹ค๊ณ  ํ•˜๋ฉด..? ๊ทธ๋Ÿผ ๊ฐ„๋‹จํ•˜๊ฒŒ 7์„ ์„ ํƒํ•œ๋‹ค๊ณ  ๋‹ค์‹œ ๊ฐ€์ •ํ•œ๋‹ค. ๋˜ ์•„๋‹ˆ๋ฉด 6์„ ๊ณ ๋ฅด๋ฉด๋˜๋‹ˆ๊นŒ

images

์ด๋ ‡๊ฒŒ ํ’€๋ฉด ๋˜๋Š”๋ฐ ์ด๊ฑธ ์žฌ๊ท€๋กœ ํ’€๋ฉด ์ง€์ˆ˜์ ์œผ๋กœ ๊ผฌ์ธ๋‹ค. ์ด๋ฏธ ํ•œ๊ณ„์‚ฐ ๋˜ํ•˜๊ณ  ๋˜ํ•˜๊ณ ..์‚ฝ์งˆํ•จ

๊ทธ๋ž˜์„œ memoization์„ ๋„์ž…ํ•œ๋‹ค.

n๊ฐœ์˜ ์ตœ์  ์ •๋‹ต์„ ์ €์žฅํ•  ๊ณต๊ฐ„์„ ๋งˆ๋ จํ•ด์„œ ๊ณ„์‚ฐ๋๋˜ ๊ฐ’๋“ค์€ ์ €์žฅ, ๊ณ„์‚ฐ๋œ๊ฐ’์ด ์žˆ์œผ๋ฉด ๊ฐ€์ ธ๋‹ค์“ฐ๊ณ  ์—†์œผ๋ฉด ๊ณ„์‚ฐํ•ด์„œ ์ €์žฅํ•˜๋„๋ก ํ•˜์—ฌ ์ค‘๋ณต๊ณ„์‚ฐ์„ ๋ง‰๋Š”๋‹ค.

๊ทธ๋Ÿผ O(n log n)์˜ ์‹œ๊ฐ„์„ ์†Œ์š”ํ•œ๋‹ค. โ† ์ •๋ ฌํ•˜๋Š”๋ฐ ์‹œ๊ฐ„ ๋‹ค ์“ฐ๋‚˜๋ณธ๋ฐ ใ…‹ใ…‹ใ…‹ใ…‹

images

์ด์ง„ ํƒ์ƒ‰์„ ์ด์šฉํ•ด์„œ p()๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. mid์˜ finish๊ฐ€ target์˜ start์™€ ๊ฐ™๊ฑฐ๋‚˜ ์ž‘์œผ๋ฉด left๋ฅผ mid + 1๋กœ ์˜ฎ๊ฒจ๊ฐ€๋ฉฐ, mid์˜ finish๊ฐ€ target์˜ start๋ณด๋‹ค ํฌ๋‹ค๋ฉด right๋ฅผ mid -1 ๋กœ ๋‚ด๋ ค๊ฐ€๋ฉฐ ์ด์ง„ํƒ์ƒ‰ํ•˜๋‹ค๊ฐ€ left๋ž‘ right๊ฐ€ ๋งŒ๋‚˜๊ฑฐ๋‚˜ left๊ฐ€ right๋ฅผ ๋„˜์–ด์„œ๋Š” ์ˆœ๊ฐ„์ด ๋”ฑ ์•Œ๋งž์€๊ฑฐ์ž„ ์ด์ง„ํƒ์ƒ‰์ด๋‹ˆ๊นŒ O(n log n)

8์˜ optimal์„ ์ฐพ๋Š”๊ฑฐ๋‹ˆ๊นŒ 8์€ ์ œ์™ธํ•˜๊ณ  1-7์—์„œ ํƒ์ƒ‰ โ†’ 5-7ํƒ์ƒ‰ โ†’ 5-5ํƒ์ƒ‰ ์ˆœ์œผ๋กœ ๊ฐ„๋‹ค.

OBST

์ตœ์ ์˜ ์ด์ง„ํŠธ๋ฆฌ๋Š” ์ง€๊ธˆ๊นŒ์ง€ ๋†’์ด๊ฐ€ ๋‚ฎ์€ ํŠธ๋ฆฌ๋ผ๊ณ  ํ–ˆ๋”ฐ. ๊ทผ๋ฐ ๊ทธ๊ฑด ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•  ํ™•๋ฅ ์ด ๊ฐ™๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ ์ด์•ผ๊ธฐ

ํŠธ๋ฆฌ์˜ ํƒ์ƒ‰์— ์‹คํŒจํ•  ๊ฒฝ์šฐ์— ๋Œ€ํ•ด์„œ ๊ณ ๋ ค๋ฅผ ํ•ด๋ณด์•„์•ผ ํ•œ๋‹ค.

ํŠธ๋ฆฌ์˜ ๊ฒ€์ƒ‰์— ์‹คํŒจํ•  ๊ฒฝ์šฐ ๊ฐˆ ๊ณณ์ด ์—†๋‹ค. ๊ทธ ๊ฐˆ ๊ณณ์„ ๋งŒ๋“ค์–ด์„œ ์™ธ๋ถ€๋…ธ๋“œ ํ˜น์€ ์‹คํŒจ๋…ธ๋“œ๋ผ๊ณ  ๋ช…๋ช…ํ•ด์ค€๋‹ค. ๊ทธ๋Ÿผ ์˜ค๋ฆฌ์ง€๋„ ํŠธ๋ฆฌ์˜ ๋…ธ๋“œ๋“ค์€ ๋‚ด๋ถ€๋…ธ๋“œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๊ณ , ์ด ์‹คํŒจ๋…ธ๋“œ ํ˜น์€ ์™ธ๋ถ€๋…ธ๋“œ๊นŒ์ง€ ํฌํ•จํ•œ ํŠธ๋ฆฌ๋ฅผ ํ™•์žฅ์ด์ง„ํŠธ๋ฆฌ๋ผ๊ณ  ๋งํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

์™ธ๋ถ€ ๋…ธ๋“œ๋กœ์˜ path์˜ ์ด ํ•ฉ์€, ๋‚ด๋ถ€๋…ธ๋“œ๊ฐœ์ˆ˜์˜ ๋‘๋ฐฐ์— ๋‚ด๋ถ€๋…ธ๋“œ์˜ pathํ•ฉ๊ณผ ๊ฐ™๋‹ค.

images

E = I + 2n โ†’ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๋Š” ์ƒ์ˆ˜์ด๋ฏ€๋กœ ๊ณ ์ •์ ์ด๊ณ  path์ธ I๋ฅผ ์ตœ๋Œ€ํ•œ ์ค„์ด๋Š”๊ฒƒ์ด E๋ฅผ ์ค„์ด๋Š” ๋ฐฉํ–ฅ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ์•…์˜๊ฒฝ์šฐ๋Š” skewed tree : O(n^2), ์ตœ์ ์˜ ๊ฒฝ์šฐ๋Š” complete binary tree (O(n log n)๊ฐ€ ๋œ๋‹ค.

ํƒ์ƒ‰์— ์„ฑ๊ณตํ• ํ™•๋ฅ ๊ณผ ์‹คํŒจํ• ํ™•๋ฅ ์„ ํ•ด๋‹น ๋…ธ๋“œ์— ๋„๋‹ฌํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ฒฝ๋กœ์˜ ์ˆ˜์™€ ๊ณฑํ•œ๊ฒƒ์˜ ์ด ํ•ฉ

๋”ฐ๋ผ์„œ ์ฐพ์„ํ™•๋ฅ ๊ณผ ๋ชป์ฐพ์„ํ™•๋ฅ ์ด ๋ชจ๋‘ ๋™์ผํ•˜๋‹ค๊ณ  ์น˜๋ฉด ๊ทธ๋ƒฅ ๋‚ฉ์ž‘ํ•œ ํŠธ๋ฆฌ๊ฐ€ ์ตœ๊ณ ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด..

images

๊ณ„์‚ฐ๊ณต์‹์€ ์œ„์™€ ๊ฐ™๋‹ค. ๊ทผ๋ฐ ์—ฌ๊ธฐ์„œ ์–ด๋–ป๊ฒŒ ํŠธ๋ฆฌ๋ฅผ ๋Œ์–ด๋‚ด์ง€?

14

๊ทธ๋ž˜ํ”„์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ๋Š” Shortest paths ์ฐพ๊ธฐ์—์„œ ์šฐ๋ฆฌ๋Š” edge์˜ ๊ฐ’์ด ์Œ์„ ๊ฐ€์ง€๋ฉด ๋ถˆ๊ฐ€๋Šฅํ•œ๊ฑธ๋กœ ํ–ˆ์—ˆ๋‹ค. ๋‹ค์ต์ŠคํŠธ๋ผ๋กœ ํ•˜๋ฉด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ํ˜น์€ ๋‹ค๋ฅธ๋ฐฉ์‹, ๋ชจ๋“  weight๋ฅผ ์–‘์ˆ˜๊ฐ€๋˜๋„๋ก ๋‹ค ๋”ํ•ด์ฃผ๊ณ  ํ•˜๋Š”๊ฒƒ๋„ ๋ฌธ์ œ๊ฐ€์žˆ์Œ.

๋‹ค์ต์ŠคํŠธ๋ผ REVIEW ๊ฐ€์žฅ ์งง๊ฒŒ๊ฐˆ ์ˆ˜ ์žˆ๋Š”๊ฑธ ์„ ํƒ, ์„ ํƒ๋œ์• ๋“ค๋กœ cost๋ฅผ ์—…๋ฐ์ดํŠธ, ์—…๋ฐ์ดํŠธ๋œ cost ์ค‘ ๋˜ ์งง๊ฒŒ๊ฐˆ ์ˆ˜ ์žˆ๋Š”๊ฑธ ์„ ํƒ, ์ด๊ฑธ ๋ฐ˜๋ณต. ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ผ์ข…

path์˜ ์ˆ˜๋ฅผ #of nodes - 1๋กœ ์ œํ•œํ•˜๊ณ  ์Œ์˜ cost๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๋„๋ก ํ•œ๋‹ค๋ฉด? DP๋กœ ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

v โ†’ t๋กœ k๋ฒˆ ๊ฑฐ์ณ์„œ ๊ฐ€๋Š” ์ตœ์ ์˜ cost๊ฐ€ Opt(k, v)๋ผ๊ณ  ํ•˜์ž

์ข…์ด๋ฅผ ํ™•์ธํ•˜๋„๋ก ํ•˜์ž

์‹œ๊ฐ„๋ณต์žก๋„ O(mn), ๊ณต๊ฐ„๋ณต์žก๋„ O(n^2)

  • OBST ๊ตฌํ•˜๊ธฐ
  • Huffman ๊ตฌํ•˜๊ธฐ
  • ๊ฐœ๋…๋ฌธ์ œ 3๊ฐ€์ง€์ •๋„
    • interval scheduling(๋’ค์— weighted๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ๋‚˜์˜ฌ ๊ฒƒ ๊ฐ™์Œ)
    • optimal 2-way merge(huffman code๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ๋‚˜์˜ฌ ๊ฒƒ ๊ฐ™์Œ
    • merge sort(inversion counting์ด ์žˆ์–ด์„œ ์•ˆ๋‚˜์˜ฌ๊ฒƒ๊ฐ™์Œ)
    • inversion counting
    • weighted interval scheduling
    • closet path
    • inversion counting
  • Huffman, closest pair, quick sort ๋“ฑ ์‹ค์Šต์—์„œ ํ•œ๋ฌธ์ œ
  • ์‘์šฉ์ฝ”๋”ฉ ๋ฌธ์ œ
Share: Twitter Facebook
Seunghun Yang's Picture

About Seunghun Yang

Seunghun is undergraduate student at Computer Science Engineering in CNU(Chungnam National University).

Daejeon, South Korea

Comments