๐Ÿ–ฅ Computer Science/์•Œ๊ณ ๋ฆฌ์ฆ˜

๐Ÿง NP-Hard(NP ๋‚œํ•ด) Problem X๊ฐ€ ๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด ์ด๋ฅผ NP-Hard๋ผ ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์–ด๋– ํ•œ Y $\in$ NP ์— ๋Œ€ํ•ด์„œ๋„, Y $\leq_p$ X ๊ฐ€ ์„ฑ๋ฆฝ๋‹ˆ๋‹ค. ์ฆ‰ NP์— ์†ํ•œ ์–ด๋– ํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ๋„ X๋กœ์˜ Polynomial Time Reduction์ด ์กด์žฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Halting Problem(์ •์ง€ ๋ฌธ์ œ)์€ NP-Hard์— ์†ํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๐Ÿง NP-Complete(NP ์™„์ „) Problem X๊ฐ€ ๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด ์ด๋ฅผ NP-Complete๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. 1) ์–ด๋– ํ•œ Y $\in$ NP ์— ๋Œ€ํ•ด์„œ๋„, Y $\leq_p$ X ๊ฐ€ ์„ฑ๋ฆฝ๋‹ˆ๋‹ค. 2) X $\in$ NP ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ NP-Complete๋Š” NP-Hard์ด๋ฉด์„œ NP์ธ ๋ฌธ์ œ๋“ค์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. Haltin..
๐Ÿง Problem ์ด์ „ ๊ธ€์—์„œ ์‚ดํŽด๋ณด์•˜๋˜ problem์— ๊ด€๋ จํ•œ ๊ฐœ๋…๋“ค์„ ๋‹ค์‹œ ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Problem Instance : ์–ด๋–ค ๋ฌธ์ œ(problem)๋ฅผ ์ •์˜ํ•˜๋Š” input์ด๋ฉฐ, ์ด๋•Œ ํ•ด๋‹น input์„ ์ผ์ข…์˜ binary string์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Problem : ์–ด๋–ค ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค๋Š”(YES๋ผ ๋‹ตํ•˜๋Š”) problem instance๋“ค์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ Problem์— ์†ํ•˜๋Š” instance๋“ค์„ YES instance๋ผ ํ•ฉ๋‹ˆ๋‹ค. Algorithm : ์–ด๋–ค problem X์— ๋Œ€ํ•˜์—ฌ, ์–ด๋–ค mapping ํ•จ์ˆ˜ A๊ฐ€ ์ž„์˜์˜ s $\in $ X์— ๋Œ€ํ•˜์—ฌ A(s) = YES์ด๊ณ , ์—ญ( A(s) = YES์ผ ๊ฒฝ์šฐ s $\in$ X )๋„ ์„ฑ๋ฆฝํ•˜๋Š” ๊ฒฝ์šฐ A๋ฅผ problem X๋ฅผ ํ•ด๊ฒฐํ•˜..
๐Ÿง Reduction ์–ด๋– ํ•œ ๋ฌธ์ œ X์™€ Y๋ฅผ ๊ฐ€์ •ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. (์—„๋ฐ€ํ•œ ์ •์˜๋Š” ์•„๋‹™๋‹ˆ๋‹ค) ์ด ๋•Œ Y๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์–ด๋– ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์กด์žฌํ•˜๊ณ , ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ œ X๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋””์ž์ธ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ, ๋ฌธ์ œ X์—์„œ Y๋กœ์˜ Reduction์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. (X is reducible to Y) ์ด๋ฅผ ๋ณดํ†ต X $\leq$ Y ๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ X $\leq$ Y ์ธ ๊ฒฝ์šฐ, X๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์€ Y๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ ˆ๋Œ€๋กœ ์–ด๋ ค์šธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ง๋กœ๋Š” Y๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์€ ์ ์–ด๋„ X๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ ๋งŒํผ ์–ด๋ ต๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Reduction์€ ํŠน์ • ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋””์ž์ธํ•˜๊ฑฐ๋‚˜, ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”(ํ˜น์€ ๋งค์šฐ ํ•ด๊ฒฐํ•˜๊ธฐ ํž˜๋“ ) ๊ฒƒ์„ ์ฆ..
๐Ÿง Non-Comparison Sort ์ด์ „ ๊ธ€์—์„œ Comparison Based Sort๋Š” Lower Bound๊ฐ€ ฮฉ(n log n)์ด๋ผ๋Š” ๊ฒƒ์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์— ์‚ดํŽด๋ณผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(n)์ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์ด๋Š” Comparison Based Sort๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „์— ๊ตฌํ•œ Lower Bound๋Š” ์ž˜๋ชป๋˜์ง€ ์•Š์•˜์Œ์„ ๋ฏธ๋ฆฌ ๋ฐํžˆ๊ณ  ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿง Counting Sort (๊ณ„์ˆ˜ ์ •๋ ฌ) ์šฐ์„  ๋ฐฐ์—ด A[0, ..., n]๋ฅผ 1๋ถ€ํ„ฐ k ์‚ฌ์ด์˜ ์ •์ˆ˜ ๋ฐฐ์—ด์ด๋ผ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ณ„์ˆ˜ ์ •๋ ฌ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ํฌ๊ธฐ๊ฐ€ k์ธ Counter ๋ฐฐ์—ด C[0, 1, 2, ..., k]๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ฐ’๋“ค์„ ๋ชจ๋‘ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. A[0]๋ถ€ํ„ฐ A[n]๊นŒ์ง€ ์ฝ์œผ๋ฉด์„œ $0 \leq i ..
๐Ÿง Lower Bound Upper Bound๋Š” ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด ๋ณด์˜€๋‹ค๋ฉด ์ด๋ฏธ ์•„์‹ค ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Lower Bound ์—ญ์‹œ ์ด์™€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, `ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ Lower Bound๊ฐ€ T์ด๋‹ค.`์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. (์–ด๋–ค ๊ฐ€์ • ํ•˜์—์„œ) ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ T ์‹œ๊ฐ„๋ณด๋‹ค ๋” ๋นจ๋ฆฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋‹ค. ์ด๋•Œ ๊ฐ€์ •์€ ๊ณ„์‚ฐ ๋ชจ๋ธ, ์ถ”๊ฐ€ ์‚ฌ์šฉ ๊ณต๊ฐ„ ๋“ฑ์˜ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ฐ€์ •์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋น…-์˜ค๋ฉ”๊ฐ€(ฮฉ) ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ๋ฅผ ํ•˜๋‚˜ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธธ์ด n์ธ ๋ฐฐ์—ด์—์„œ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ lower bound๋Š” ฮฉ(1)์ด๋ผ๊ณ  ํ‘œํ˜„ํ•  ์ˆ˜๋„ ์žˆ๊ณ , ฮฉ(n)์ด๋ผ ํ‘œํ˜„ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ฮฉ(n)์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด ๋” ์šฐ์ˆ˜ํ•œ(์œ ์šฉํ•œ) Lowe..
๐Ÿง ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์Œ์˜ ์‚ฌ์ดํด์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„ ์ƒ์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ์ •์ ์— ๋Œ€ํ•˜์—ฌ, ๊ฐ ์ •์  ๊ฐ„์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, ๊ธฐ๋ณธ ์•„์ด๋””์–ด๋Š” ๊ฑฐ์ณ๊ฐ€๋Š” ์ •์ ์„ ๊ธฐ์ค€์œผ๋กœ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. V = { 1, 2, ..., n } ์œผ๋กœ ๋‘๊ณ , G์˜ ์ž„์˜์˜ ๋‘ ์ •์  i, j์— ๋Œ€ํ•˜์—ฌ dist(i, j, k)๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ •์  (1, 2, ..., k) ๋งŒ์„ path์˜ ์ค‘๊ฐ„ ์ •์ (intermediate vertex)์œผ๋กœ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ์„ ๋•Œ, i ์—์„œ j๋กœ์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ์˜ ๊ธธ์ด ๐Ÿง Recurrence Relation Base Case( k = 0 ) dist (i, j, 0) = 0 : i = j ์ธ ๊ฒฝ์šฐ dist (i, j, 0) = w(i, j)..
๐Ÿง ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ฌธ์ œ ๊ทธ๋ž˜ํ”„ G = (V, E) ์ƒ์—์„œ ์ •์  u์—์„œ v๋กœ์˜ ๊ฐ€์žฅ ์งง์€ path์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์œ ๋ช…ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์Œ์ˆ˜ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์ง€๋Š” ๊ฐ„์„ ์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•ด์„œ๋งŒ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•œ๋‹ค๋Š” ์ œ์•ฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿง Bellman-Ford ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” dp ๊ธฐ๋ฐ˜์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‹œ์ž‘ ์ •์  s์—์„œ ๊ทธ๋ž˜ํ”„ G์— ์กด์žฌํ•˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ์ •์ ์œผ๋กœ์˜ ์ตœ๋‹จ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋ฉฐ, ๋งค ๋‹จ๊ณ„๋งˆ๋‹ค ํ•ด๋‹น ์ตœ๋‹จ๊ฑฐ๋ฆฌ์˜ ๊ธธ์ด๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฉฐ ์ง„ํ–‰๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ๋ฐฉํ–ฅ(directed) ๊ทธ๋ž˜ํ”„๋ฅผ ๊ฐ€์ •ํ•˜์ง€๋งŒ, ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•ด์„œ๋„ ์ด๋ฅผ ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋กœ ์ƒ๊ฐํ•˜์—ฌ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒจ๋งŒํฌ..
๐Ÿง Edit Distance ์–ด๋–ค ๋‹จ์–ด์™€ ๋น„์Šทํ•œ(๊ฐ€๊นŒ์šด) ๋‹จ์–ด๋Š” ์–ด๋–ป๊ฒŒ ์ •์˜ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ์˜ˆ๋ฅผ ๋“ค์–ด Word์˜ spell check ๊ธฐ๋Šฅ์„ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋น„์Šทํ•œ ๋‹จ์–ด๋“ค์„ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Edit distance๋Š” ๋‘ string์ด ์–ผ๋งˆ๋‚˜ ๊ฐ€๊นŒ์šด์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ์ฒ™๋„์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฌธ์ž์—ด $S_1$ ๊ณผ $S_2$ ๊ฐ„์˜ edit distance๋Š” $S_1$ ์—์„œ ์•„๋ž˜ 3๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ์—ฐ์‚ฐ์„ ์ตœ์†Œํ•œ ๋ช‡ ๋ฒˆ ์ˆ˜ํ–‰ํ•˜์—ฌ $S_2$ ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”๊ฐ€๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค. Insertion : $S_1$ ์˜ ์•„๋ฌด ์œ„์น˜์— ๋ฌธ์ž ํ•˜๋‚˜๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. MONDT -> MONEDT Deletion : $S_1$ ์˜ ์•„๋ฌด ์œ„์น˜์—์„œ ๋ฌธ์ž ํ•˜๋‚˜๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. MONEDT -> MOMED Substitution : $S_1$ ..
๋ง ๋ž‘
'๐Ÿ–ฅ Computer Science/์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก