Network/Maximum Flow ์ ๋๊ทธ๋ํ : ๊ฐ์ ์ weight๊ฐ ์ ์ ์์ ์ ์ ์ผ๋ก ๋ณด๋ผ์์๋ ์ต๋์ ๋์ ์๋ฏธํ๋ ๊ทธ๋ํ ์ต๋์ ๋ : ํด๋น ๊ฐ์ ์ ํตํด ๋์์ ํ๋ ค๋ณด๋ผ์์๋ ๋ฌผ์ ์ต๋์น ์ด๋ฌํ ์ ๋๊ทธ๋ํ์์, Source์ ์ ์์ Sink์ ์ ๊น์ง ์ต๋ ์ผ๋ง๋งํผ์ ์ ๋์ด ์ง๋๊ฐ์์๋์ง์ ๊ดํ ๋ฌธ์ ๋ฅผ Network/Maximum Flow๋ผ๊ณ ํ๋ค. ์๋์ ๊ฐ์ด, ์๋ก(๊ฐ์ )์ 1์ด๋ง๋ค ์ง๋ ์์๋ ๋ฌผ์ ์ต๋์น๊ฐ ์ ์๋์ด์๋ค๋ฉด, ์๋ก๋ ์์ ์ ์ฉ๋์ด์์ ๋ฌผ์ ํต๊ณผ ์ํฌ์์๋ค. ๋ฐ๋ผ์ ๊ฒฐ๊ณผ์ ์ผ๋ก ํต๊ณผํ ์์๋ ๋ฌผ์ ์ต๋๋์ ์ผ์ชฝ์ 2, ์ค๋ฅธ์ชฝ์ 4์ด๋ค. ๋ฐ๋ผ์ ์์ ๊ทธ๋ํ๋ฅผ Maximum Flow(์ต๋์ ๋)์ผ๋ก ๋ณด๋ด๋ฉด ๊ทธ ๊ฐ์ 7์ด๋ค. ์ข์ธก๊ฐ์ ์ค์ ๋ก ํด๋น ๊ฐ์ ์ ํ๋ฅธ ์ ๋(flow), ์ฐ์ธก๊ฐ์ ํด๋น ๊ฐ์ ์ ..
Dijkstra Algorithm ๊ทธ๋ํ์ ํ ๋ ธ๋์์ ๋ค๋ฅธ ๋ ธ๋๋ก ๊ฐ๋ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ (๋ง์ฝ ๋ชจ๋ ๋ ธ๋ ์๊ฐ์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ๋, n๊ฐ์ ๊ฐ ์ ์ ์ ๋ํด Dijkstra Alg๋ฅผ ์ฌ๋ฌ๋ฒ ์ํํด์ผํ๋ฏ๋ก, ์ด๋๋ Floyd-Warshall Alg์ด ๋ ์ ๋ฆฌํ๋ค) ๋์๊ณผ์ ์ BFS์ ๋น์ทํ์ง๋ง, Queue๊ฐ ์๋ Priority Queue๋ฅผ ์ด์ฉํ๋ค. ์๊ฐ๋ณต์ก๋=O(ElogE) ํด๋น๋ ธ๋๊น์ง์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ์ ์ฅํ distance[] ๋ฐฐ์ด ์ค๋นํ, ๋ฏธ๋ฐฉ๋ฌธ์ ์๋ฏธํ๋ -1๋ก ์ด๊ธฐํํ๋ค. ๋ ธ๋1์์ ์์ํ๋ค๋ฉด, ์ด๋๊น์ง ์๊ธฐ์์ 1๊น์ง์ ๊ฑฐ๋ฆฌ๋ 0์ด๋ฏ๋ก distance[1]์ 0์, pq์ (1,0)์ ๋ฃ๋๋ค. 2์10๋ณด๋ค ๊ฐ๊น๋ค. distance[2]=8๋ก ๊ฐฑ์ , pq์๋ (2,8) ๋ฃ๋๋ค. pq์ (..
MST,MCST (Minimun_Cost Spanning Tree) (์ต์๋น์ฉ ์ ์ฅํธ๋ฆฌ) Spanning Tree : undirected graph์์ n๊ฐ์ ๋ชจ๋ ์ ์ ๊ณผ n-1๊ฐ์ ๊ฐ์ ์ผ๋ก ๋ง๋ค์ด์ง ํธ๋ฆฌ ์ํ(traversal)๋ฅผ ํ๋ฉด n-1๊ฐ์ ๊ฐ์ ์ ์ด๋ํ๋ฉฐ ๋ชจ๋ ์ ์ ์ ๋ฐฉ๋ฌธํ๋ฏ๋ก spanning tree๋ฅผ ์์ฑํ๋ค. DFS๋ก ์์ฑ๋๋ฉด DFST(Depth First Spanning Tree, ๊น์ด์ฐ์ ์ ์ฅํธ๋ฆฌ), BFS๋ก ์์ฑ๋๋ฉด BFST(Breadth First Spanning Tree, ๋๋น์ฐ์ ์ ์ฅํธ๋ฆฌ)๋ผ๊ณ ํ๋ค. weighted undirected graph์์ ๋ชจ๋ ๋ ธ๋๋ฅผ ํฌํจํ๊ณ cycle์ด ์์ผ๋ฉฐ weight์ ํฉ์ด ์ต์์ธ ํธ๋ฆฌ๋ฅผ MST or MCST(Minimum Cost Spannin..
DFS (Depth First Search) (๊น์ด ์ฐ์ ํ์) LIFO(Last-In First-Out), Stack ํ์ฉ PseudoCode recursive non-recursive 1 non-recursive 2 ์์ Input Output ์ฒซ ์ค์ ์ ์ ์ ๊ฐ์ N๊ณผ ๊ฐ์ ์ ๊ฐ์ M์ด ์ฃผ์ด์ง๋๋ค. ๋ค์ M์ค์ ๊ฐ์ ์ ๊ด๊ณ ์์์ ์ u์ ๋์ฐฉ์ ์ v๊ฐ ์ฃผ์ด์ง๋๋ค. ์ ๋ ฅ์ ๋ฐ๋ฅธ ๊น์ด ์ฐ์ ํ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํฉ๋๋ค. import java.util.*; public class Test { static boolean edge[][]; static boolean visited[]; static int n; static int m; public static void main(String args[]) { Sca..
Graph (๊ทธ๋ํ) Traversal / Search (์ํ,ํ์) DFS(Depth First Search) ๊น์ด์ฐ์ ํ์ BFS(Breadth First Search) ๋๋น์ฐ์ ํ์ Spanning Tree (์ ์ฅํธ๋ฆฌ) DFST(Depth First Spanning Tree) ๊น์ด์ฐ์ ์ ์ฅํธ๋ฆฌ BFST(Breadth First Spanning Tree) ๋๋น์ฐ์ ์ ์ฅํธ๋ฆฌ MST,MCST(Minimum_Cost Spanning Tree) ์ต์_๋น์ฉ ์ ์ฅํธ๋ฆฌ : Kruskal, Prim 's Alg Distance (์ต๋จ๊ฑฐ๋ฆฌ ๋ฑ) Dijkstra 's Alg Floyd-Warshall 's Alg Bellman-Ford 's Alg Etc Network Flow Bipartit..
- Total
- Today
- Yesterday
- bfs
- brute-force
- Android
- Data Structure
- Algorithm
- sort
- dfs
- Stack
- C
- ์นํดํน
- git
- mysql
- Vo
- webhacking.kr
- ์ฐ์ํ ํ ํฌ์ฝ์ค
- OneToMany
- ํด์ธ์ฌํ
- graph
- FRAGMENT
- queue
- ๊ฐ๋ฐ์
- reversing
- Android Studio
- ํ๋ก๊ทธ๋๋จธ์ค
- ํ๊ณ
- javascript
- JPA
- socket
- ๋ฆฌ๋ฒ์ฑ
- Java
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |