2020-1ํ•™๊ธฐ, ๋Œ€ํ•™์—์„œ โ€˜์•Œ๊ณ ๋ฆฌ์ฆ˜โ€™ ์ˆ˜์—…์„ ๋“ฃ๊ณ  ๊ณต๋ถ€ํ•œ ๋ฐ”๋ฅผ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ง€์ ์€ ์–ธ์ œ๋‚˜ ํ™˜์˜์ž…๋‹ˆ๋‹ค :)

1 minute read

2020-1ํ•™๊ธฐ, ๋Œ€ํ•™์—์„œ โ€˜์•Œ๊ณ ๋ฆฌ์ฆ˜โ€™ ์ˆ˜์—…์„ ๋“ฃ๊ณ  ๊ณต๋ถ€ํ•œ ๋ฐ”๋ฅผ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ง€์ ์€ ์–ธ์ œ๋‚˜ ํ™˜์˜์ž…๋‹ˆ๋‹ค :)


<Longest Increasing Subsequence> ์ค„์—ฌ์„œ <LIS> ๋ฌธ์ œ๋Š” sequence of numbers๊ฐ€ ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์˜ฌ ๋•Œ, ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„์ˆ˜์—ด(increasing subsequence) ์ค‘์—์„œ ๊ฐ€์žฅ ๊ธด ๋ถ€๋ถ„์ˆ˜์—ด์„ ์ฐพ๋Š” ๋ฌธ์ œ๋‹ค!

์˜ˆ๋ฅผ ๋“ค์–ด ์šฐ๋ฆฌ์—๊ฒŒ ์•„๋ž˜์™€ ๊ฐ™์€ ์ˆ˜์—ด์ด ์ฃผ์–ด์กŒ๋‹ค๊ณ  ํ•˜์ž.

์ด๋•Œ, ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„์ˆ˜์—ด์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  transition์„ ํ‘œ์‹œํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค!

Directed Graph๊ฐ€ ๊ทธ๋ ค์กŒ๋‹ค!! ๊ทธ๋Ÿฐ๋ฐ, ์ข€ ์ต์ˆ™ํ•˜์ง€ ์•Š์€๊ฐ€? ๋ฐ”๋กœ DAG๋‹ค!!

์‚ฌ์‹ค ์œ„์˜ ์ƒํ™ฉ์„ ๊ทธ๋ž˜ํ”„๋กœ ๋งŒ๋“  ํ›„, ์•ž์—์„œ๋ถ€ํ„ฐ BFS๋ฅผ ํ•˜๋ฉด์„œ Longest Path๋ฅผ ์ฐพ์•„๋„ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆœ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, DP๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ œ์‹œํ•œ๋‹ค!!

for $j=1, 2, \dots, n$
โ€ƒโ€ƒ$L(j) = 1 + \max \{ L(i) : (i, j) \in E \}$

return $\max_j L(j)$

์œ„์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋™์ž‘ ๋ฐฉ์‹์„ ์ƒ๊ฐํ•ด๋ณด๋ฉด, ๋‹จ์ˆœํžˆ $O(N^2)$์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค!! ์›๋ž˜๋Š” BFS๋กœ ํ’€๋ฉด, $N\times O(N^2)$์€ ๊ฑธ๋ฆด ๋ฌธ์ œ๋ฅผ $O(N^2)$๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋‹ˆ ๋†€๋ž์ง€ ์•Š์€๊ฐ€??


DP์˜ ๋งˆ๋ฒ•์€ ์ด์ œ ์‹œ์ž‘์ด๋‹ค. ์ด์–ด์ง€๋Š” ํฌ์ŠคํŠธ์—์„œ๋Š” LIS ๋ณด๋‹ค ์ชผ์˜ค๊ธˆ ๋ณต์žกํ•œ ๋ฐฉ์‹์œผ๋กœ DP๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” <Edit Distance> ๋ฌธ์ œ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณธ๋‹ค!!

๐Ÿ‘‰ Edit Distance


์ถ”์ฒœ ๋ฌธ์ œ

p.s. ์ฐธ๊ณ ๋กœ ํ‰๋ฒ”ํ•œ LIS ๋ฌธ์ œ๋Š” ์œ„์˜ DP๋ณด๋‹ค ๋” ๋น ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์กด์žฌํ•œ๋‹ค!! $O(N \log N)$์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, binary search๋ฅผ ํ™œ์šฉํ•œ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์ด ๊ถ๊ธˆํ•˜๋ฉด, ์•„๋ž˜์˜ ํฌ์ŠคํŠธ๋ฅผ ์ฐธ๊ณ ํ•˜๋„๋ก ํ•˜์ž.

๐Ÿ‘‰ โ€˜์ž์†9319โ€™๋‹˜์˜ ํฌ์ŠคํŠธ

Categories:

Updated: