From fef3460882a0328f011a376b7d668e705dfebcb4 Mon Sep 17 00:00:00 2001 From: songyc macbook Date: Tue, 30 Dec 2025 23:16:31 +0900 Subject: [PATCH] logseq 20251230 --- ...‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Dijkstra Algorithm).md | 94 +++++++++++++++++++ ...งŒ-ํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Bellman-Ford Algorithm).md | 86 +++++++++++++++++ pages/์•Œ๊ณ ๋ฆฌ์ฆ˜.md | 3 +- pages/์œ„์ƒ ์ •๋ ฌ(Topological Sort).md | 4 +- .../ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Kruskalโ€™s Algorithm).md | 2 +- pages/ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Primโ€™s Algorithm).md | 4 +- 6 files changed, 187 insertions(+), 6 deletions(-) create mode 100644 pages/๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Dijkstra Algorithm).md create mode 100644 pages/๋ฒจ๋งŒ-ํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Bellman-Ford Algorithm).md diff --git a/pages/๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Dijkstra Algorithm).md b/pages/๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Dijkstra Algorithm).md new file mode 100644 index 0000000..0d5afdc --- /dev/null +++ b/pages/๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Dijkstra Algorithm).md @@ -0,0 +1,94 @@ +deck:: Logseq/coding tip + +- ## 1. ๊ฐœ๋…(Concept) + - ๊ทธ๋ž˜ํ”„์˜ ํŠน์ • ์‹œ์ž‘ ์ •์ ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜. + - **ํŠน์ง•** + - {{cloze ์Œ์˜ ๊ฐ€์ค‘์น˜}}๊ฐ€ ์žˆ๋Š” ๊ฐ„์„ ์ด ์žˆ์œผ๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ. + extra:: ์Œ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ์—๋Š” [[๋ฒจ๋งŒ-ํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Bellman-Ford Algorithm)]]์„ ์‚ฌ์šฉ + id:: 695394f8-cd61-4d4b-9fbc-1cba54ba0195 + - ๊ทธ๋ฆฌ๋””(greedy)๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋งค ๋‹จ๊ณ„์—์„œ {{cloze ํ˜„์žฌ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ •์ }}์„ ํ™•์ •ํ•œ๋‹ค. + id:: 695395cf-75da-45ea-a7d4-259f5d3d942b + - +- ## 2. ๋™์ž‘ ์›๋ฆฌ (Algorithm Flow) + - 1) ์ดˆ๊ธฐํ™” : ์‹œ์ž‘ ์ •์ ์˜ ๊ฑฐ๋ฆฌ๋Š” 0, ๋‚˜๋จธ์ง€ ๋ชจ๋“  ์ •์ ์˜ ๊ฑฐ๋ฆฌ๋Š” ๋ฌดํ•œ๋Œ€๋กœ ์„ค์ •ํ•œ๋‹ค. + id:: 6953966b-74ec-4cc0-af49-ab5754b3bb80 + #+BEGIN_EXTRA + ```python + INF = sys.maxsize # float("inf") + dist = [INF] * (v + 1) + dist[start_node] = 0 + ``` + #+END_EXTRA + - 2) ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ๊ณณ์— {{cloze (๊ฑฐ๋ฆฌ: 0, ๋…ธ๋“œ: ์‹œ์ž‘์ •์ )}} ์„ ๋„ฃ๋Š”๋‹ค. #card + id:: 6953968c-552b-41a5-af23-628736952cac + #+BEGIN_EXTRA + ```python + pq = [(0, start_node)] + ``` + #+END_EXTRA + - 3) ํ๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ ์•„๋ž˜์˜ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค. + id:: 695396a3-2c9b-4bf5-a292-0cb14b2395fe + (์ดˆ๊ธฐํ™” ๋ฐ ์ดˆ๊ธฐ ์ƒ์„ฑ์„ ๋งˆ์นœ ๋’ค ๋ฐ˜๋ณต๋ฌธ ๋ถ€๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ๋‹ต๋ณ€ํ•  ๊ฒƒ) #card + - ```python + while pq : + # ๊ฐ€์žฅ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๊ฐ€ ์งฆ์€ ๋…ธ๋“œ ๊บผ๋‚ด๊ธฐ + curr_dist, curr_node = heapq.heappop(pq) + + # ์ด๋ฏธ ์ฒ˜๋ฆฌ๋œ ์  ์žˆ๋Š” ๋…ธ๋“œ๋ผ๋ฉด ๋ฌด์‹œ (๋” ์งฆ์€ ๊ฒฝ๋กœ๊ฐ€ ์ด๋ฏธ ๋ฐœ๊ฒฌ๋จ) + if dist[curr_node] < curr_dist : + continue + + # ์ธ์ ‘ ๋…ธ๋“œ ํ™•์ธ + for next_weight, next_node in graph[curr_node] : + # ํ˜„์žฌ ๋…ธ๋“œ๋ฅผ ๊ฑฐ์ณ์„œ ๊ฐ€๋Š” ๊ฑฐ๋ฆฌ + new_dist = next_weight + curr_dist + + # ํ˜„์žฌ ๋…ธ๋“œ๋ฅผ ๊ฑฐ์ณ์„œ ๊ฐ€๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๊ธฐ์กด ๊ฑฐ๋ฆฌ๋ณด๋‹ค ์งฆ๋‹ค๋ฉด ๊ฐฑ์‹  + if new_dist < dist[next_node] : + dist[next_node] = new_dist + heapq.heappush(pq, (new_dist, next_node)) + ``` + - 4) ์ข…๋ฃŒ: ๋ชจ๋“  ์ •์ ์— ๋Œ€ํ•œ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๊ฐ€ ํ™•์ •๋œ๋‹ค. + - +- ## 3. ์ฝ”๋“œ (python) + - ```python + import heapq + import sys + + # INF: ๋ฌดํ•œ๋Œ€ ๊ฐ’ ์„ค์ • (์ดˆ๊ธฐํ™”์šฉ) + INF = sys.maxsize + + def dijkstra(start_node, v, graph): + # 1. ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ํ…Œ์ด๋ธ” ์ดˆ๊ธฐํ™” (๋ชจ๋‘ ๋ฌดํ•œ๋Œ€) + dist = [INF] * (v + 1) + + # 2. ์‹œ์ž‘ ์ •์  ์„ค์ • + dist[start_node] = 0 + # (๊ฑฐ๋ฆฌ, ์ •์ ) ์ˆœ์„œ๋กœ ํ์— ์‚ฝ์ž… (๊ฑฐ๋ฆฌ๊ฐ€ ์ž‘์€ ์ˆœ์„œ๋Œ€๋กœ ๊บผ๋‚ด๊ธฐ ์œ„ํ•จ) + pq = [(0, start_node)] + + while pq: + # 3. ๊ฐ€์žฅ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๊ฐ€ ์งง์€ ๋…ธ๋“œ ๊บผ๋‚ด๊ธฐ + curr_dist, curr_node = heapq.heappop(pq) + + # 4. ์ด๋ฏธ ์ฒ˜๋ฆฌ๋œ ์  ์žˆ๋Š” ๋…ธ๋“œ๋ผ๋ฉด ๋ฌด์‹œ (๋” ์งง์€ ๊ฒฝ๋กœ๊ฐ€ ์ด๋ฏธ ๋ฐœ๊ฒฌ๋จ) + if dist[curr_node] < curr_dist: + continue + + # 5. ์ธ์ ‘ ๋…ธ๋“œ ํ™•์ธ + for next_weight, next_node in graph[curr_node]: + # ํ˜„์žฌ ๋…ธ๋“œ๋ฅผ ๊ฑฐ์ณ์„œ ๊ฐ€๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๋” ์งง์€ ๊ฒฝ์šฐ + new_dist = curr_dist + next_weight + + if new_dist < dist[next_node]: + dist[next_node] = new_dist + heapq.heappush(pq, (new_dist, next_node)) + + return dist + + ``` +- +- ## 4. ์‹œ๊ฐ„๋ณต์žก๋„ + - {{cloze $O(E\log V)$}} + extra:: E : ๊ฐ„์„  ๊ฐฏ์ˆ˜, V : ์ •์  ๊ฐฏ์ˆ˜ + id:: 6953bf9f-bc68-4829-a2ba-a884cd15a9e8 \ No newline at end of file diff --git a/pages/๋ฒจ๋งŒ-ํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Bellman-Ford Algorithm).md b/pages/๋ฒจ๋งŒ-ํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Bellman-Ford Algorithm).md new file mode 100644 index 0000000..70deb6b --- /dev/null +++ b/pages/๋ฒจ๋งŒ-ํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Bellman-Ford Algorithm).md @@ -0,0 +1,86 @@ +deck:: Logseq/coding tip + +- ## 1. ๊ฐœ๋…(Concept) + - ๊ทธ๋ž˜ํ”„์˜ ํŠน์ • ์‹œ์ž‘ ์ •์ ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜. + - [[๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Dijkstra Algorithm)]] ์™€์˜ ์ฐจ์ด์  + - {{cloze ์Œ์˜ ๊ฐ€์ค‘์น˜}}๊ฐ€ ์žˆ๋Š” ๊ฐ„์„ ์„ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋‹ค. + id:: 6953c01a-2e75-4d9c-a2df-9392f4270f37 + - {{cloze ์Œ์ˆ˜ ์‚ฌ์ดํด}}์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํƒ์ง€ ํ•  ์ˆ˜ ์žˆ๋‹ค. + extra:: ์Œ์ˆ˜ ์‚ฌ์ดํด(Negative Cycle)์ด๋ž€, ๊ฐ„์„  ๊ฐ€์ค‘์น˜์˜ ํ•ฉ์ด ์Œ์ˆ˜๊ฐ€ ๋˜๋Š” ์ˆœํ™˜๊ฒฝ๋กœ๋ฅผ ์˜๋ฏธํ•˜๊ณ  ์ด ์‚ฌ์ดํด์„ ๊ณ„์† ์ˆœํ™˜ํ•˜๋ฉด ์ด ๊ฑฐ๋ฆฌ๊ฐ€ ์Œ์˜ ๋ฌดํ•œ๋Œ€๋กœ ๋ฐœ์‚ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ์ •์˜ ํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค. + id:: 6953c026-75f3-4fb4-babe-71ef726abdd9 +- +- ## 2. ๋™์ž‘ ์›๋ฆฌ (Algorithm Flow) + - ### ํ•ต์‹ฌ ์•„์ด๋””์–ด :-> ๋ชจ๋“  ๊ฐ„์„ ์„ $V-1$๋ฒˆ ๋ฐ˜๋ณตํ•ด์„œ ํ™•์ธํ•œ๋‹ค. + extra:: ์ตœ๋‹จ ๊ฒฝ๋กœ๋Š” ์ตœ๋Œ€ V-1๊ฐœ์˜ ๊ฐ„์„ ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ. + id:: 6953c0e9-4e24-4508-81c3-9f404f9d423b + - 1) ์ดˆ๊ธฐํ™” : ์‹œ์ž‘ ์ •์ ์˜ ๊ฑฐ๋ฆฌ๋Š” 0, ๋‚˜๋จธ์ง€ ๋ชจ๋“  ์ •์ ์˜ ๊ฑฐ๋ฆฌ๋Š” ๋ฌดํ•œ๋Œ€๋กœ ์„ค์ •ํ•œ๋‹ค. + #+BEGIN_EXTRA + ```python + INF = sys.maxsize # float("inf") + dist = [INF] * (v + 1) + dist[start_node] = 0 + ``` + #+END_EXTRA + - 2) V-1ํšŒ ๋ฐ˜๋ณต + - ๊ทธ๋ž˜ํ”„์˜ ๋ชจ๋“  ๊ฐ„์„ ์„ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•œ๋‹ค.(์‹œ์ž‘์ (u), ๋„์ฐฉ์ (v), ๊ฐ€์ค‘์น˜(w)) + - ํ™•์ธํ•˜๋ฉด์„œ ํŠน์ • ์กฐ๊ฑด์ด ๋˜๋ฉด ๊ฐฑ์‹ ํ•œ๋‹ค. + id:: 6953c838-515c-4773-a0f0-2df4a6746ccc + (์ด๋•Œ์˜ ๊ฐฑ์‹  ์กฐ๊ฑด๊ณผ ํŒŒ์ด์ฌ ์ฝ”๋“œ๋ฅผ ๋‹ตํ•˜๋ฉด?) #card + - ์ด๋•Œ dist[u]์˜ ๊ฐ’์ด ๋ฌดํ•œ๋Œ€๊ฐ€ ์•„๋‹ˆ๊ณ  dist[v]์˜ ๊ฐ’์ด dist[u]+w ๋ณด๋‹ค ํฌ๋‹ค๋ฉด dist[v]๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค. + - ```python + for i in range(V): # ์›๋ž˜ V-1๋ฒˆ๋งŒ ๋ฐ˜๋ณตํ•ด์•ผํ•˜์ง€๋งŒ ์Œ์ˆ˜ ์‚ฌ์ดํด ํŒ๋ณ„์„ ์œ„ํ•ด ๋ณดํ†ต V๊นŒ์ง€ ํ•จ. + for u, v, w in edges: + if dist[u] != INF and dist[u] + w < dist[v]: + dist[v] = dist[u] + w + ``` + - 3) ์Œ์ˆ˜ ์‚ฌ์ดํด ํŒ๋ณ„ + - V-1ํšŒ ๋ฐ˜๋ณตํ•œ ๋’ค ํ•œ๋ฒˆ ๋”(V๋ฒˆ์งธ) ํ™•์ธํ•œ๋‹ค. + id:: 6953c8e8-c7e6-4083-852e-6838e99963cd + ์ด๋•Œ์—๋„ ๊ฐฑ์‹ ๋˜๋Š” ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ์Œ์ˆ˜ ์‚ฌ์ดํด์ด ์กด์žฌ(๊ฐ€์ค‘์น˜ ํ•ฉ์ด ๋ฌดํ•œํžˆ ์ž‘์•„์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป)ํ•จ์„ ์˜๋ฏธํ•œ๋‹ค. + ํŒŒ์ด์ฌ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. #card + - ```python + for i in range(V) : + for u, v, w in edges: + if dist[u] != INF and dist[u] + w < dist[v]: + dist[v] = dist[u] + w + + # V๋ฒˆ์งธ ๋ฐ˜๋ณต์ธ๋ฐ๋„ ๊ฐฑ์‹ ์ด ์ผ์–ด๋‚ฌ๋‹ค๋ฉด ์Œ์ˆ˜ ์‚ฌ์ดํด์ด ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ! + if i == V - 1 : + return True + + return False + ``` +- +- ## 3. ์ฝ”๋“œ (python) + - ```python + import sys + + INF = sys.maxsize + + def bellman_ford(start, V, edges) : + dist = [INF] * (V+1) + dist[start] = 0 + + for i in range(V) : + for u, v, w in edges : + if dist[u] != INF and dist[u] + w < dist[v] : + dist[v] = dist[u] + w + + if i == V - 1 : + return True + + return False + ``` +- +- ## 4. ์‹œ๊ฐ„๋ณต์žก๋„ + - {{cloze $O(VE)$}} + extra:: E : ๊ฐ„์„  ๊ฐฏ์ˆ˜, V : ์ •์  ๊ฐฏ์ˆ˜ + id:: 6953c0cd-c4e5-4773-b010-d6e85614e4b1 +- +- ## 5. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‘์šฉ(์Šˆํผ์†Œ์Šค) + - ๋งŒ์•ฝ ํŠน์ • ์‹œ์ž‘ ์ง€์ ์—์„œ ๋„๋‹ฌ ๊ฐ€๋Šฅํ•œ ์ง€์  ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š”๊ฒŒ ๋ชฉ์ ์ด ์•„๋‹Œ ์Œ์˜ ์‚ฌ์ดํด ์กด์žฌ ์—ฌ๋ถ€๋งŒ์„ ํ™•์ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด? #card + id:: 6953cbbd-2d8c-4351-bfc8-98f79fc347a1 + - dist ๋ฐฐ์—ด์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ „๋ถ€ 0์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•œ ๋’ค ๋ฒจ๋งŒํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋Œ๋ฆฐ๋‹ค. ์ด๋•Œ V๋ฒˆ์งธ ๋ฐ˜๋ณต์—์„œ ๊ฐฑ์‹ ์ด ์ผ์–ด๋‚˜๋ฉด ์‚ฌ์ดํด์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค. + - ์Šˆํผ์†Œ์Šค๋ž€ ? ๊ฐ€์ƒ์˜ ์‹œ์ž‘์ ์œผ๋กœ์„œ ๋ชจ๋“  ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉด์„œ ๊ทธ ๊ฐ€์ค‘์น˜๊ฐ€ 0์ธ ์‹œ์ž‘์ ์„ ์˜๋ฏธํ•œ๋‹ค. + - ์ฆ‰ ์ž„์˜๋กœ ๊ฐ„์„ ๋“ค์˜ ๋ฐฐ์—ด์— ๊ฐ€์ƒ์˜ ์ ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ทธ์™€ ์—ฐ๊ฒฐ๋˜๋Š” ๊ฐ€์ค‘์น˜ 0์˜ ๊ฐ„์„ ๋“ค์„ ์ถ”๊ฐ€ํ•ด์„œ ๋ฒจ๋งŒํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋Œ๋ ค๋„ ๋˜๊ณ , ์œ„์—์„œ ๋งํ•œ ๊ฒƒ ๊ฐ™์ด, ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ชจ๋“  ๊ฑฐ๋ฆฌ ๋ฐฐ์—ด์„ 0์œผ๋กœ ๋งŒ๋“ค์–ด์„œ ๋Œ๋ ค๋„ ๋œ๋‹ค. + - ๋ชจ๋“  ๊ฑฐ๋ฆฌ ๋ฐฐ์—ด์„ 0์œผ๋กœ ๋งŒ๋“ ๋‹ค๋Š” ๊ฒƒ์€ ์ž„์˜์˜ ์‹œ์ž‘์ ์—์„œ ์ด๋ฏธ ๋ชจ๋“  ๋…ธ๋“œ๋กœ ๊ฐ€์ค‘์น˜๊ฐ€ 0์ธ ์ƒํƒœ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์„œ ํ•œ๋ฒˆ ๊ฐฑ์‹  ๋˜์—ˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ. \ No newline at end of file diff --git a/pages/์•Œ๊ณ ๋ฆฌ์ฆ˜.md b/pages/์•Œ๊ณ ๋ฆฌ์ฆ˜.md index 306faa5..9d274eb 100644 --- a/pages/์•Œ๊ณ ๋ฆฌ์ฆ˜.md +++ b/pages/์•Œ๊ณ ๋ฆฌ์ฆ˜.md @@ -1,4 +1,5 @@ - [[์œ„์ƒ ์ •๋ ฌ(Topological Sort)]] - [[์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด]] - [[ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Kruskalโ€™s Algorithm)]] -- [[ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Primโ€™s Algorithm)]] \ No newline at end of file +- [[ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Primโ€™s Algorithm)]] +- [[๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Dijkstra Algorithm)]] \ No newline at end of file diff --git a/pages/์œ„์ƒ ์ •๋ ฌ(Topological Sort).md b/pages/์œ„์ƒ ์ •๋ ฌ(Topological Sort).md index aefdd5d..9d9e25e 100644 --- a/pages/์œ„์ƒ ์ •๋ ฌ(Topological Sort).md +++ b/pages/์œ„์ƒ ์ •๋ ฌ(Topological Sort).md @@ -12,8 +12,8 @@ deck:: Logseq/coding tip id:: 694a369e-6bc2-4e36-a9d3-cca9f3c2dc42 - ๋ชจ๋“  ์›์†Œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๊ธฐ ์ „์— ํ๊ฐ€ ๋นˆ๋‹ค๋ฉด {{cloze ์‚ฌ์ดํด}} ์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. id:: 694a36e1-53a9-4afa-be3d-a76239551547 -- ## 2. ๊ธฐ๋ณธ ๊ตฌ์กฐ (Basic Structure) - - ### 1) ๋™์ž‘์›๋ฆฌ +- ## 2. ๋™์ž‘ ์›๋ฆฌ (Algorithm Flow) + - ### 1) ์ˆœ์„œ - ์œ„์ƒ ์ •๋ ฌ์€ ์ฃผ๋กœ ์ง„์ž… ์ฐจ์ˆ˜(Indegree) ์™€ ํ(Queue) ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋™์ž‘ํ•จ. - **1๋‹จ๊ณ„ : ์ง„์ž…์ฐจ์ˆ˜ ๊ณ„์‚ฐ** - ๊ทธ๋ž˜ํ”„์˜ ๋ชจ๋“  ๋…ธ๋“œ์— ๋Œ€ํ•ด, {{cloze **์ž์‹ ์„ ํ–ฅํ•˜๋Š” ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜(ย indegreeย )**}} ๋ฅผ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•ด ๋‘ก๋‹ˆ๋‹ค. diff --git a/pages/ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Kruskalโ€™s Algorithm).md b/pages/ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Kruskalโ€™s Algorithm).md index 9c56304..5c06698 100644 --- a/pages/ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Kruskalโ€™s Algorithm).md +++ b/pages/ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Kruskalโ€™s Algorithm).md @@ -6,7 +6,7 @@ deck:: Logseq/coding tip - ์ด๋ฅผ ์œ„ํ•ด {{cloze ๋ถ„๋ฆฌ์ง‘ํ•ฉ}}์„ ์‚ฌ์šฉํ•จ. extra:: [[๋ถ„๋ฆฌ์ง‘ํ•ฉ(Disjoint Set) (Union Find)]] id:: 6950f5ad-52f1-4df3-b495-cbfa7a6ebbec -- ## 2. ๊ธฐ๋ณธ ๊ตฌ์กฐ (Basic Structure) +- ## 2. ๋™์ž‘ ์›๋ฆฌ (Algorithm Flow) - 1) ๊ทธ๋ž˜ํ”„์˜ ๋ชจ๋“  ๊ฐ„์„ ์„ {{cloze ๊ฐ€์ค‘์น˜ ์˜ค๋ฆ„์ฐจ์ˆœ}} ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค. id:: 6950f5f7-a85f-49a9-96c1-a06afc1af444 - 2) ๊ฐ€์žฅ ๊ฐ€์ค‘์น˜๊ฐ€ ๋‚ฎ์€ ๊ฐ„์„ ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ธ๋‹ค. diff --git a/pages/ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Primโ€™s Algorithm).md b/pages/ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Primโ€™s Algorithm).md index 4d0ecb7..52a090a 100644 --- a/pages/ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Primโ€™s Algorithm).md +++ b/pages/ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Primโ€™s Algorithm).md @@ -5,8 +5,8 @@ deck:: Logseq/coding tip - โ€œ์ž„์˜์˜ ์‹œ์ž‘ ์ •์ ์—์„œ ์ถœ๋ฐœํ•˜์—ฌ, ํ˜„์žฌ ํŠธ๋ฆฌ์— ์—ฐ๊ฒฐ๋œ ๊ฐ„์„  ์ค‘ ๊ฐ€์žฅ ์‹ผ ๊ฒƒ์„ ์ถ”๊ฐ€ํ•˜๋ฉฐ ํ™•์žฅํ•œ๋‹ค.โ€ ๋ผ๋Š” ์ „๋žต์„ ์‚ฌ์šฉ - ์ด๋ฅผ ์œ„ํ•ด {{cloze ์šฐ์„ ์ˆœ์œ„ ํ}}๊ฐ€ ์‚ฌ์šฉ๋จ. id:: 69511108-8006-4c0a-9452-d248f8c58ca5 - - ๋‹ค์ต์ŠคํŠธ๋ผ(Dijkstra) ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋น„์Šทํ•จ. -- ## 2. ๊ธฐ๋ณธ ๊ตฌ์กฐ (Basic Structure) + - [[๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Dijkstra Algorithm)]]๊ณผ ๋น„์Šทํ•จ. +- ## 2. ๋™์ž‘ ์›๋ฆฌ (Algorithm Flow) - 1) ์ž„์˜์˜ ์ •์ (vertex)์„ ํ•˜๋‚˜ ์„ ํƒํ•ด์„œ ํŠธ๋ฆฌ์— ํฌํ•จ์‹œํ‚จ๋‹ค. - 2) ํ˜„์žฌ ํŠธ๋ฆฌ์— ํฌํ•จ๋œ ์ •์ ๋“ค๊ณผ ํฌํ•จ๋˜์ง€ ์•Š์€ ์ •์ ๋“ค์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„  ์ค‘, ๊ฐ€์ค‘์น˜๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ„์„ ์„ ์ฐพ๋Š”๋‹ค. - 3) ํ•ด๋‹น ๊ฐ„์„ ๊ณผ ์—ฐ๊ฒฐ๋œ ์ƒˆ๋กœ์šด ์ •์ ์„ ํŠธ๋ฆฌ์— ์ถ”๊ฐ€ํ•œ๋‹ค.