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

๐Ÿง ๋ถ€๋ถ„ ์ˆ˜์—ด(Subsequence) ๊ธธ์ด n์ธ ์ˆ˜์—ด(sequence, ordered list) $S = a_1, a_2, ... a_n$ ์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ˆ˜์—ด $S' (= a_{i1}, a_{i2}, ..., a_{ik})$ ๊ฐ€ $1 \leq i1 < i2 < ... < ik \leq n$ ๋ฅผ ๋งŒ์กฑํ•  ๊ฒฝ์šฐ, $S'$ ๋ฅผ $S$ ์˜ subsequence๋ผ ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿง ์ฆ๊ฐ€ ์ˆ˜์—ด(Increasing sequence) ์ˆ˜์—ด S = $a_1, a_2, ..., a_n$ ์— ๋Œ€ํ•˜์—ฌ $a_1 < a_2 < ... < a_n$ ์ผ ๋•Œ, increasing sequence๋ผ ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿง ๊ฐ์†Œํ•˜์ง€ ์•Š๋Š” ์ˆ˜์—ด(Non-decreasing sequence) ์ˆ˜์—ด S = $a_1, a_2, ..., a_n$ ์— ๋Œ€ํ•˜์—ฌ $a..
๐Ÿง Memoization ์žฌ๊ท€์ ์œผ๋กœ ๋ฐ˜๋ณต๋˜๋Š” ์–ด๋– ํ•œ ํ•จ์ˆ˜์˜ ์ค‘๊ฐ„ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ธฐ๋ฒ•์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๐Ÿง Dynamic Programming Recursion(์žฌ๊ท€)๊ณผ Memoization์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ธฐ๋ฒ•์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. DP์˜ ๋ณธ์งˆ์€ ์žฌ๊ท€๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ณ  ๋˜‘๋˜‘ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ, ์žฌ๊ท€๋ฅผ ์œ„ํ•œ Recurrence Relation์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ธ์šฐ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿง DP ๋ฌธ์ œ ํ•ด๊ฒฐ ์ˆœ์„œ 1. ๋ฌธ์ œ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. 2. ์ •์˜๋œ ๋ฌธ์ œ์— ๋Œ€ํ•˜์—ฌ ๋ถ€๋ถ„ ๋ฌธ์ œ(Subproblem)์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. 3. Subproblem์„ ์ด์šฉํ•˜์—ฌ Recurrence Relation์„ ์„ธ์›๋‹ˆ๋‹ค. 4. Memoization์„ ์ด์šฉํ•˜์—ฌ Recurrence Relation์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. - ์ค‘๊ฐ„ ๊ฒฐ๊ณผ๋ฌผ๋“ค๋“ค ์ €์žฅํ•  ์ž๋ฃŒ๊ตฌ์กฐ..
๐Ÿง Encoding ์•ŒํŒŒ๋ฒณ $\Sigma$ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด์— ๋Œ€ํ•˜์—ฌ 0๊ณผ 1๋กœ ์ด๋ฃจ์–ด์ง„ binary string(ํ˜น์€ binary code, codeword) ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๋ฅผ ํ•˜๋‚˜ ์‚ดํŽด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. Binary code A 00 B 01 C 10 D 11 ์œ„ ํ‘œ์— ์ฃผ์–ด์ง„๋Œ€๋กœ ๋‹ค์Œ ๋ฌธ์ž์—ด (ABBCCDA) ์„ ์ธ์ฝ”๋”ฉ ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. A B B C C D A 00 01 01 10 10 11 00 ๐Ÿง Decoding Encoding ๋œ binary string์„ ๋‹ค์‹œ original string์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์œ„์˜ ์˜ˆ์‹œ์—์„œ ๋””์ฝ”๋”ฉ ์‹œ์—๋Š” ์ธ์ฝ”๋”ฉ๋œ binary string์„ ๋‘ character์”ฉ ํ™•์ธํ•˜๋ฉด์„œ ํ•ด๋‹น codeword์— ๋Œ€์‘๋˜๋Š” ์•ŒํŒŒ๋ฒณ์œผ๋กœ ๋ฐ”๊พธ์–ด์ฃผ๋ฉด..
๐Ÿง Interval Scheduling n๊ฐœ์˜ ์ž‘์—…์ด ์กด์žฌํ•˜๊ณ , ํ•ด๋‹น ์ž‘์—…๋“ค์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์‹œ๊ฐ„์ด ๊ฐ๊ฐ [์‹œ์ž‘ ์‹œ๊ฐ„, ์™„๋ฃŒ ์‹œ๊ฐ„] ์œผ๋กœ ์ฃผ์–ด์ ธ ์žˆ๋‹ค๊ณ  ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ์‹œ๊ฐ„์—๋Š” ํ•˜๋‚˜์˜ ์ž‘์—…๋งŒ์ด ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ, ์ฃผ์–ด์ง„ ์‹œ๊ฐ„ ๋‚ด์— ์ตœ๋Œ€ํ•œ ๋งŽ์€ ์ž‘์—…๋“ค์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก scheduling ํ•˜๋Š” ๊ฒƒ์„ Interval Scheduling ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์ž‘์—… $i, j$ ๋ฅผ ๋™์‹œ์— ํ•˜์ง€ ๋ชปํ•  ๊ฒฝ์šฐ, $i$ ์™€ $j$ ๋Š” overlap ๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. โญ๏ธ Psudocode Initially R is the set of all jobs A is empty // A will store all the jobs that will be scheduled while R is not empty choose job $i..
๐Ÿง Spanning Tree ๊ทธ๋ ˆํ”„ ๋‚ด์˜ ๋ชจ๋“  ์ •์ ์„ ํฌํ•จํ•˜๋Š” ํŠธ๋ฆฌ๋“ค ์ค‘, ์ตœ์†Œ ์—ฐ๊ฒฐ ํŠธ๋ฆฌ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Œ ์—ฐ๊ฒฐ์˜ ์˜๋ฏธ๋Š” ๊ฐ„์„ ์˜ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ, ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ์‚ฌ์ดํด์ด ์กด์žฌํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ •์ ์˜ ์ˆ˜๊ฐ€ $n$ ๊ฐœ์ธ ๊ทธ๋ž˜ํ”„์˜ Spanning Tree๋Š” edge๊ฐ€ ์ •ํ™•ํžˆ $n-1$ ๊ฐœ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํ•˜๋‚˜์˜ ๊ทธ๋ž˜ํ”„์—๋Š” ๋งŽ์€ ์‹ ์žฅ ํŠธ๋ฆฌ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿง ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ (MST) ์‹ ์žฅ ํŠธ๋ฆฌ๋“ค ์ค‘ edge๋“ค์˜ ๋น„์šฉ(cost)์˜ ์ด ํ•ฉ์ด ์ตœ์†Œ์ธ ํŠธ๋ฆฌ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ Cost๋ฅผ ๊ฐ€์ง€๋Š” Edge๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์žˆ์„ ๊ฒฝ์šฐ MST๋„ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฐ˜๋Œ€๋กœ ๋ชจ๋“  Edge๋“ค์˜ cost๊ฐ€ ๊ตฌ๋ถ„๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ MST๋Š” ๋‹จ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์ด๋Š” ๋’ค์—์„œ ์ฆ๋ช…ํ•ด ๋ณด๋„๋ก..
๐Ÿง ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€ ๋งค ๋‹จ๊ณ„๋งˆ๋‹ค ํ˜„์žฌ ์ƒํƒœ์—์„œ ์ตœ์ ์˜ ํ•ด๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ์„ ์„ ํƒํ•˜๋ฉฐ ์ง„ํ–‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ ์ตœ์ ํ™” ๋ฌธ์ œ(Optimization problem)์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์ œ๋“ค์—์„œ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ตœ์ ํ•ด(global-optimal)๋ฅผ ๋ณด์žฅํ•ด ์ฃผ์ง€๋Š” ์•Š์œผ๋‚˜ ์ผ๋ถ€ ๋ฌธ์ œ๋“ค์— ํ•œํ•˜์—ฌ global-optimal ํ•˜๊ฑฐ๋‚˜ ๊ทธ์— ๋งค์šฐ ๊ทผ์ ‘ํ•จ์„ ๋ณด์žฅํ•ด ์ฃผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. โญ๏ธ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์˜ˆ์‹œ N๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋ฐ”๊ตฌ๋‹ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ค‘ ๊ทธ ์ˆ˜๋“ค์˜ ํ•ฉ์ด ์ตœ๋Œ€๊ฐ€ ๋˜๋„๋ก m๊ฐœ๋ฅผ ๊ณ ๋ฅด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ๋งค ๋‹จ๊ณ„์—์„œ ํ˜„์žฌ ๋ฐ”๊ตฌ๋‹ˆ์— ๋‚จ์•„์žˆ๋Š” ์ˆซ์ž๋“ค ์ค‘, ์ œ์ผ ํฐ ์ˆซ์ž๋ฅผ ๊ณ ๋ฅธ ๋’ค, ์ด๋ฅผ m ๋ฒˆ ๋ฐ˜๋ณตํ•จ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ..
๐Ÿง ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ ์ž๋ฃŒ๊ตฌ์กฐ ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ ์ž๋ฃŒ๊ตฌ์กฐ(๋˜๋Š” ์„œ๋กœ์†Œ ์ง‘ํ•ฉ(disjoint set) ์ž๋ฃŒ๊ตฌ์กฐ)๋Š” ๋‹ค์Œ ๋‘ ์ข…๋ฅ˜์˜ ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. Union : ๋‘ ๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ํฌํ•จ๋œ ์ง‘ํ•ฉ์„ ํ•˜๋‚˜์˜ ์ง‘ํ•ฉ์œผ๋กœ ํ•ฉ์น˜๋Š” ์—ฐ์‚ฐ Find : ํŠน์ • ๋…ธ๋“œ๊ฐ€ ์†ํ•œ ์ง‘ํ•ฉ์˜ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ฐ์‚ฐ ์šฐ์„  ๋™๋นˆ๋‚˜๋‹˜์˜ ์„ค๋ช…์ด ๊ต‰์žฅํžˆ ์ข‹๊ธฐ ๋•Œ๋ฌธ์—, ๋™๋นˆ๋‚˜๋‹˜์˜ ์œ ํŠœ๋ธŒ ๋งํฌ๋ฅผ ๊ฑธ์–ด๋‘๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ( ์ €๋Š” ๊ทธ๋ƒฅ ์ œ๊ฐ€ ๊ณต๋ถ€ํ•˜๋ ค๊ณ  ๊ธ€ ์“ด ๊ฑฐ๋‹ˆ๊นŒ, ์œ ํŠœ๋ธŒ ๋ณด๋Ÿฌ ๊ฐ€์„ธ์—ฌ..ใ… ใ…  ) โญ๏ธ Find ์—ฐ์‚ฐ Find ์—ฐ์‚ฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1. ํ•ด๋‹น ๋…ธ๋“œ์˜ ๋ถ€๋ชจ ๋…ธ๋“œ์™€ ํ•ด๋‹น ๋…ธ๋“œ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๋‘ ๋…ธ๋“œ๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ, ํ•ด๋‹น ๋…ธ๋“œ๋Š” ๋ฃจํŠธ ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค. 2. ๋งŒ์•ฝ ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด ํ•ด๋‹น ๋…ธ๋“œ์˜ ๋ถ€๋ชจ ๋…ธ๋“œ์— ๋Œ€..
๐Ÿง Strongly Connected ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ๋Š” ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์™€ ๋™์ผํ•˜๊ฒŒ Connectivity(์—ฐ๊ฒฐ์„ฑ)๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ์˜ Connectivity๋Š” ๋ณดํ†ต Strongly Connected ๋กœ ์ •์˜๋˜๋ฉฐ, ํ•ด๋‹น ์ •์˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. $G$ ๋Š” Strongly Connected ํ•˜๋‹ค : ์ž„์˜์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ์ •์  $v$, $u$ $\in V(G)$ ์— ๋Œ€ํ•˜์—ฌ, $v$ ์—์„œ $w$ ๋กœ์˜ Path์™€, $w$ ์—์„œ $v$ ๋กœ์˜ Path๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๐Ÿง Strongly Connected Components (๊ฐ•ํ•œ ์—ฐ๊ฒฐ ์š”์†Œ) ๊ทธ๋ž˜ํ”„ $G$์— ๋Œ€ํ•œ Strong Connected Component $G'$ : $G$ ์˜ Maximal Strongly Connected Subgraph $..
๋ง ๋ž‘
'๐Ÿ–ฅ Computer Science/์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)