λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

μ•Œκ³ λ¦¬μ¦˜17

16-3κ°•. μ΅œλ‹¨κ²½λ‘œ μ•Œκ³ λ¦¬μ¦˜ (Shortest Path Algorithm) (3) 이전 κ°•μ’Œ 첨뢀,, 16-3κ°•. μ΅œλ‹¨κ²½λ‘œ μ•Œκ³ λ¦¬μ¦˜ (Shortest Path Algorithm) (3) 이전 κ°•μ’Œ,,, Bellman-Ford Algo- λ‚˜ Dijkstra Algo-λŠ” one-to-all μ•Œκ³ λ¦¬μ¦˜μ΄μ—ˆλ‹€. 이번 κ°•μ’Œμ—μ„œλŠ” all-to-all μ•Œκ³ λ¦¬μ¦˜μ— λŒ€ν•΄ κ³΅λΆ€ν•œλ‹€. all-to-all μ•Œκ³ λ¦¬μ¦˜μ˜ ν•˜λ‚˜κ°€ Floyd Algorithm ν˜Ήμ€ Floyd-Warshall Algorithm이닀. Floyd-Warshall μ•Œκ³ λ¦¬μ¦˜ - κ°€μ€‘μΉ˜ λ°©ν–₯ κ·Έλž˜ν”„ G=(V, E), V={1, 2, ..., n} (λ…Έλ“œλ“€μ—λŠ” 1λ²ˆλΆ€ν„° nλ²ˆκΉŒμ§€ λ²ˆν˜Έκ°€ λΆ™μ–΄ μžˆλ‹€..) - λͺ¨λ“  λ…Έλ“œ μŒλ“€ κ°„μ˜ μ΅œλ‹¨κ²½λ‘œμ˜ 길이λ₯Ό ꡬ함 - d의 k승[i, j] γ„΄ 쀑간에 λ…Έλ“œμ§‘ν•© {1, 2, ..., k}에 μ†ν•œ λ…Έλ“œλ“€λ§Œ κ±°μ³μ„œ λ…Έ.. 2021. 1. 10.
16-1κ°•. μ΅œλ‹¨κ²½λ‘œ (Shortest Path Problem) (1) μ•„μ΄νŒ¨λ“œ κ΅Ώλ…ΈνŠΈλ₯Ό μ‚¬μš©ν•΄μ„œ 적은 ν•„κΈ° 2021. 1. 6.
15-4. μ΅œμ†ŒλΉ„μš©μ‹ μž₯트리( Minimum Spanning Tree) Prim의 μ•Œκ³ λ¦¬μ¦˜ - μž„μ˜μ˜ λ…Έλ“œλ₯Ό μΆœλ°œλ…Έλ“œλ‘œ 선택 - 좜발 λ…Έλ“œλ₯Ό ν¬ν•¨ν•˜λŠ” 트리λ₯Ό 점점 ν‚€μ›Œ 감 (ν¬λŸ¬μŠ€μΉΌμ€ μ—μ§€λ“€μ˜ κ°€μ€‘μΉ˜κ°€ μž‘μ€ μˆœμ„œλŒ€λ‘œ μ ‘κ·Όν•˜λŠ” λ°©λ²•μ΄μ—ˆλ‹€λ©΄, 프림은 μΆœλ°œλ…Έλ“œλΆ€ν„° μ—°κ²° μ—°κ²°λœ λ…Έλ“œλ“€μ„ νƒμƒ‰ν•˜μ—¬ 트리λ₯Ό ν‚€μš΄λ‹€) - 맀 λ‹¨κ³„μ—μ„œ 이미 νŠΈλ¦¬μ— ν¬ν•¨λœ λ…Έλ“œμ™€ ν¬ν•¨λ˜μ§€ μ•Šμ€ λ…Έλ“œλ₯Ό μ—°κ²°ν•˜λŠ” 에지듀 쀑 κ°€μž₯ κ°€μ€‘μΉ˜κ°€ μž‘μ€ 에지λ₯Ό 선택 μœ„μ˜ κ·Έλž˜ν”„μ—μ„œ 좜발 λ…Έλ“œκ°€ μ΄ˆλ‘μƒ‰ λ…Έλ“œλΌκ³  ν•˜λ©΄, 좜발 λ…Έλ“œμ— μΈμ ‘ν•œ λ…Έλ“œλ“€μ„ A라 ν•˜λ©΄, κ·Έ λΆ€λΆ„νŠΈλ¦¬μ— ν¬ν•¨λœ λ…Έλ“œλ“€μ˜ 집합은 V of A(λΉ¨κ°„ λ…Έλ“œλ“€)라 ν•˜μž. (a) : μΆœλ°œλ…Έλ“œ a μ—μ„œ μΈμ ‘ν•œ λ…Έλ“œ b와 λ…Έλ“œ k κ°€ μžˆλ‹€. κ°€μ€‘μΉ˜κ°€ μž‘μ€ μ—μ§€λŠ” 4μ΄λ―€λ‘œ λ…Έλ“œ bλ₯Ό μ„ νƒν•œλ‹€. (b) : 이제 λ…Έλ“œ a 와 λ…Έλ“œ bλŠ” V of A의 뢀뢄집합이 λ˜μ—ˆλ‹€. (c.. 2020. 12. 17.
15-2κ°•. μ΅œμ†ŒλΉ„μš©μ‹ μž₯트리 (Minimum Spanning Tree) (2) μ΅œμ†ŒλΉ„μš©μ‹ μž₯트리 (Minimum Spanning Tree) Kruskal의 μ•Œκ³ λ¦¬μ¦˜ - 에지듀을 κ°€μ€‘μΉ˜μ˜ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€. - 에지듀을 κ·Έ μˆœμ„œλŒ€λ‘œ ν•˜λ‚˜μ”© 선택해 κ°„λ‹€. 단, 이미 μ„ νƒλœ 에지듀과 사이클(cycle)을 ν˜•μ„±ν•˜λ©΄ μ„ νƒν•˜μ§€ μ•ŠλŠ”λ‹€. - n-1개의 에지가 μ„ νƒλ˜λ©΄ μ’…λ£Œν•œλ‹€. μœ„μ˜ κ·Έλž˜ν”„μ—μ„œ, λͺ¨λ₯Έ 에지듀을 μž‘μ€ 것뢀터 큰 것 순으둜 μ •λ ¬ν•΄ λ‘μ—ˆλ‹€κ³  κ°€μ •ν•˜μž. (a) : κ°€μž₯ κ°€μ€‘μΉ˜(weight)κ°€ μž‘μ€ 에지(1)λ₯Ό μ„ νƒν•œλ‹€. => λ‚΄κ°€ μ„ νƒν•œ 에지듀은 cycle을 ν˜•μ„±ν•˜μ§€ μ•ŠλŠ”λ‹€. (μ™œ? 에지가 ν•˜λ‚˜λ°–μ— μ„ νƒλ˜μ§€ μ•Šμ•˜μœΌλ‹ˆκΉŒ) (b) : κ·Έ λ‹€μŒμœΌλ‘œ κ°€μ€‘μΉ˜(weight)κ°€ μž‘μ€ 에지(2)λ₯Ό μ„ νƒν•œλ‹€. => cycle을 ν˜•μ„±ν•˜μ§€ μ•ŠλŠ”λ‹€. (c) : κ·Έ λ‹€μŒμœΌλ‘œ κ°€μ€‘μΉ˜(weight)κ°€ μž‘μ€ 에.. 2020. 12. 13.
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.
13-3. ν•΄μŠ 3 쒋은 해쉬 ν•¨μˆ˜λž€? - ν˜„μ‹€μ—μ„œλŠ” 킀듀이 λžœλ€ν•˜μ§€ μ•ŠμŒ - λ§Œμ•½ ν‚€λ“€μ˜ 톡계적 뢄포에 λŒ€ν•΄ μ•Œκ³  μžˆλ‹€λ©΄ 이λ₯Ό μ΄μš©ν•΄μ„œ 해쉬 ν•¨μˆ˜λ₯Ό κ³ μ•ˆν•˜λŠ” 것이 κ°€λŠ₯ν•˜κ² μ§€λ§Œ ν˜„μ‹€μ μœΌλ‘œ 어렀움 - 킀듀이 μ–΄λ–€ νŠΉμ •ν•œ (κ°€μ‹œμ μΈ) νŒ¨ν„΄μ„ 가지더라도 ν•΄μ‰¬ν•¨μˆ˜κ°’μ΄ λΆˆκ·œμΉ™μ μ΄ λ˜λ„λ‘ ν•˜λŠ” 게 λ°”λžŒμ§ - ν•΄μ‰¬ν•¨μˆ˜ 값이 ν‚€μ˜ νŠΉμ • 뢀뢄에 μ˜ν•΄μ„œλ§Œ κ²°μ •λ˜μ§€ μ•Šμ•„μ•Ό.. Division 기법 - h(k) = k mod m - 예 : m = 20 and k = 91 -> h(k) = 11 - μž₯점 : ν•œ 번의 mod μ—°μ‚°μœΌλ‘œ 계산. λ”°λΌμ„œ 빠름. - 단점 : μ–΄λ–€ m값에 λŒ€ν•΄μ„œλŠ” 해쉬 ν•¨μˆ˜κ°’μ΄ ν‚€κ°’μ˜ νŠΉμ • 뢀뢄에 μ˜ν•΄μ„œ κ²°μ •λ˜λŠ” κ²½μš°κ°€ 있음. κ°€λ Ή m = 2^p이면 ν‚€μ˜ ν•˜μœ„ pλΉ„νŠΈκ°€ ν•΄μ‰¬ν•¨μˆ˜ 값이 됨. Multiplication 기법 -.. 2020. 11. 29.
λ°˜μ‘ν˜•