๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜17

15-1๊ฐ•. ์ตœ์†Œ๋น„์šฉ์‹ ์žฅํŠธ๋ฆฌ(Minimum spanning tree) ์ตœ์†Œ๋น„์šฉ์‹ ์žฅํŠธ๋ฆฌ (Minimum Spanning Tree) - ์ž…๋ ฅ : n ๊ฐœ์˜ ๋„์‹œ, ๋„์‹œ์™€ ๋„์‹œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋„๋กœ ๋น„์šฉ - ๋ฌธ์ œ : ์ตœ์†Œ์˜ ๋น„์šฉ์œผ๋กœ ๋ชจ๋“  ๋„์‹œ๋“ค์ด ์„œ๋กœ ์—ฐ๊ฒฐ๋˜๊ฒŒ ํ•œ๋‹ค. ํ•ด๊ฐ€ ์œ ์ผํ•˜์ง€๋Š” ์•Š๋‹ค.. ์˜ˆ) (b, c) ๋Œ€์‹ ์— (a, h)๊ฐ€ ๋˜์–ด๋„ ๋œ๋‹ค. -> ๋น„์šฉ์ด ๊ฐ™๊ณ , ๋‹ค ์—ฐ๊ฒฐ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. * ์ตœ์†Œ๋น„์šฉ์‹ ์žฅํŠธ๋ฆฌ์˜ ๋‹ต์€ ํ•ญ์ƒ ํŠธ๋ฆฌ๊ฐ€ ๋œ๋‹ค. ์™œ? (ํŠธ๋ฆฌ : ์‹ธ์ดํด์ด ์—†๋Š” ์—ฐ๊ฒฐ๋œ(connected) ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„) : cycle์ด ์žˆ๋‹ค๋Š” ๋ง์€ ์ด์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๋„ ์ €์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๋„ ๋˜๋Š”๋ฐ, ์ด ๊ฒฝ์šฐ ํ•œ ์ชฝ์˜ ๊ธธ์ด ๋Š์–ด์ ธ๋„ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์ตœ์†Œ๋น„์šฉ์„ ์›ํ•˜๋ฏ€๋กœ cycle์ด ์žˆ๋Š” ๊ทธ๋ž˜ํ”„๋Š” ์ด ๊ฒฝ์šฐ์—์„œ ์ œ์™ธํ•œ๋‹ค. - ์–ด๋–ค MST(Minimun Spanning Tree)์˜.. 2020. 12. 11.
14-4๊ฐ•. DAG์™€ ์œ„์ƒ์ˆœ์„œ DAG (Directed Acyclic Graph) : ๋ฐฉํ–ฅ ์‚ฌ์ดํด(directed cycle)์ด ์—†๋Š” ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„. (์ž๊ธฐ ์ž์‹ ์œผ๋กœ ๋Œ์•„์˜ค์ง€ ์•Š๋Š” ๋ฐฉํ–ฅ๊ทธ๋ž˜ํ”„..) ์˜ˆ) ์ž‘์—…๋“ค์˜ ์šฐ์„ ์ˆœ์œ„ ์œ„์˜ ๊ทธ๋ž˜ํ”„์—์„œ b๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” a๊ฐ€ ๋ฐ˜๋“œ์‹œ ์„ ํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค! ์œ„์ƒ์ •๋ ฌ (topological ordering) - DAG์—์„œ ๋…ธ๋“œ๋“ค์˜ ์ˆœ์„œํ™”(sorting) .. v1, v2, ..., vn. ๋‹จ ๋ชจ๋“  ์—์ง€(vi, vj)์— ๋Œ€ํ•ด์„œ i < j๊ฐ€ ๋˜๋„๋ก! ์œ„์˜ ๊ทธ๋ž˜ํ”„์—์„œ ์œ„์ƒ์ •๋ ฌ์„ ํ–ˆ์„ ๋•Œ, ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ์ •๋ ฌํ–ˆ์„ ๋•Œ, a-g-... ๋˜๋Š” a-b-... ์ธ๋ฐ, ์—ญ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๋ฉด ์•ˆ ๋œ๋‹ค. (์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ๊ฐ€๋ฉด ์ ˆ๋Œ€ ์•ˆ ๋œ๋‹ค.) ์–ด๋–ค ๋…ธ๋“œ์— ๋Œ€ํ•ด์„œ ๋“ค์–ด์˜ค๋Š” ๋…ธ๋“œ์˜ ๊ฐฏ์ˆ˜๋ฅผ in-degree, ๋‚˜๊ฐ€๋Š” ๋…ธ๋“œ์˜ .. 2020. 12. 8.
14-3๊ฐ•. ๊ทธ๋ž˜ํ”„์—์„œ์˜ DFS DFS(Depth-First Search) ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ level order traversal (BFS) inorder traversal (DFS) pre-order traversal (DFS) post-order traversal (DFS) 1. ์ถœ๋ฐœ์  s์—์„œ ์‹œ์ž‘ํ•œ๋‹ค. 2. ํ˜„์žฌ ๋…ธ๋“œ๋ฅผ visited๋กœ markํ•˜๊ณ , ์ธ์ ‘ํ•œ ๋…ธ๋“œ๋“ค ์ค‘ unvisited ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜๋ฉด ๊ทธ ๋…ธ๋“œ๋กœ ๊ฐ„๋‹ค. 3. 2๋ฒˆ์„ ๊ณ„์† ๋ฐ˜๋ณตํ•œ๋‹ค. 4. ๋งŒ์•ฝ unvisited์ธ ์ด์›ƒ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋™์•ˆ ๊ณ„์†ํ•ด์„œ ์ง์ „ ๋…ธ๋“œ๋กœ ๋˜๋Œ์•„ ๊ฐ„๋‹ค. 5. ๋‹ค์‹œ 2๋ฒˆ์„ ๋ฐ˜๋ณตํ•œ๋‹ค. 6. ์‹œ์ž‘๋…ธ๋“œ s๋กœ ๋Œ์•„์˜ค๊ณ , ๋”์ด์ƒ ๊ฐˆ ๊ณณ์ด ์—†์œผ๋ฉด ์ข…๋ฃŒํ•œ๋‹ค. ์ด ๊ทธ๋ž˜ํ”„์—์„œ๋Š” 1-3-7-8-7-3-5-2-4-2-5-6 ์ˆœ์„œ๋กœ ๊ฐ„๋‹ค.. (ํ•˜์ง€๋งŒ ์ˆœ์„œ๋Š” ๋ฐ”๋€” ์ˆ˜.. 2020. 12. 6.
14-1๊ฐ•. ๊ทธ๋ž˜ํ”„(Graph) ๊ฐœ๋…๊ณผ ํ‘œํ˜„ (๋ฌด๋ฐฉํ–ฅ) ๊ทธ๋ž˜ํ”„. G = (V, E) - V : ๋…ธ๋“œ(node) ํ˜น์€ ์ •์ (vertex) - E : ๋…ธ๋“œ ์Œ์„ ์—ฐ๊ฒฐํ•˜๋Š” ์—์ง€(edge) ํ˜น์€ ๋งํฌ(link) - ๊ฐœ์ฒด(object)๋“ค ๊ฐ„์˜ ์ด์ง„๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ - n = |V|, m = |E| ๋ฐฉํ–ฅ๊ทธ๋ž˜ํ”„(Directetd Graph). G=(V, E) - ์—์ง€(u, v)๋Š” u๋กœ๋ถ€ํ„ฐ v๋กœ์˜ ๋ฐฉํ–ฅ์„ ๊ฐ€์ง ๊ฐ€์ค‘์น˜ (weighted) ๊ทธ๋ž˜ํ”„ - ์—์ง€๋งˆ๋‹ค ๊ฐ€์ค‘์น˜(weight)๊ฐ€ ์ง€์ • ๊ทธ๋ž˜ํ”„์˜ ํ‘œํ˜„ - ์ธ์ ‘ํ–‰๋ ฌ (adjacency matrix) - ์ธ์ ‘๋ฆฌ์ŠคํŠธ (adjacency list) ์œ„์˜ ๊ทธ๋ฆผ์—์„œ m์€ ์—ฃ์ง€์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.. n(:๋…ธ๋“œ์˜ ๊ฐฏ์ˆ˜) + 2m(:๋…ธ๋“œ ๊ฐฏ์ˆ˜) ์ด์–ด์„œ ์ €์žฅ๊ณต๊ฐ„์€ O(n+m)์ด๋‹ค. ๋ฐฉํ–ฅ๊ทธ๋ž˜ํ”„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„์˜ ์ธ์ ‘ํ–‰๋ ฌ ํ‘œํ˜„ .. 2020. 12. 1.