let's get IT with DAVINA ๐ป
์๋ฃ๊ตฌ์กฐ/๋น์ ํ๊ตฌ์กฐ/๊ทธ๋ํ ๋ณธ๋ฌธ
Graph๋?
- ์ฌ๋ฌ ๊ฐ์ ์ ๋ค์ด ์๋ก ๋ณต์กํ๊ฒ ์ฐ๊ฒฐ๋์ด ์๋ ๊ด๊ณ๋ฅผ ํํํ ์๋ฃ๊ตฌ์กฐ
- ๋ชฉ์ โท ๊ทธ๋ํ์ ํ์์ ํ๋์ ์ ์ ์์ ์์ํ์ฌ ๊ทธ๋ํ์ ๋ชจ๋ ์ ์ ๋ค์ ํ ๋ฒ์ฉ ๋ฐฉ๋ฌธ(ํ์)ํ๋ ๊ฒ!
- ๊ทธ๋ํ์ ๋ฐ์ดํฐ๋ ๋ฐฐ์ด์ฒ๋ผ ์ ๋ ฌ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ์ํ๋ ์๋ฃ๋ฅผ ์ฐพ์ผ๋ ค๋ฉด, ํ๋์ฉ ๋ชจ๋ ๋ฐฉ๋ฌธํด์ผ ํจ
- ๋ฐฉ์ โท BFS & DFS
Graph์ ๊ตฌ์กฐ
- ์ง์ ์ ์ธ ๊ด๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ, ๋ ์ ์ฌ์ด๋ฅผ ์ด์ด์ฃผ๋ ์ ์ด ์์ต๋๋ค.
- ๊ฐ์ ์ ์ธ ๊ด๊ณ๋ผ๋ฉด, ๋ช ๊ฐ์ ์ ๊ณผ ์ ์ ๊ฑธ์ณ ์ด์ด์ง๋๋ค
Graph terms
- ์ ์ (vertex)
- ๋ ธ๋(node)๋ผ๊ณ ๋ ํ๋ฉฐ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ทธ๋ํ์ ๊ธฐ๋ณธ ์์
- ๊ฐ์ (edge)
- ์ ์ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ ๋๋ค. (์ ์ ์ ์ด์ด์ฃผ๋ ์ )
- ์ธ์ ์ ์ (adjacent vertex)
- ํ๋์ ์ ์ ์์ ๊ฐ์ ์ ์ํด ์ง์ ์ฐ๊ฒฐ๋์ด ์๋ ์ ์
- ๊ฐ์ค์น ๊ทธ๋ํ (weighted Graph)
- ์ฐ๊ฒฐ์ ๊ฐ๋(์ถ๊ฐ์ ์ธ ์ ๋ณด, ex. ์์ธ-๋ถ์ฐ์ผ๋ก ๊ฐ๋ ๊ฑฐ๋ฆฌ ๋ฑ)๊ฐ ์ผ๋ง๋ ๋๋์ง ์ ํ์ ธ ์๋ ๊ทธ๋ํ
- ๋น๊ฐ์ค์น ๊ทธ๋ํ (unweighted Graph)
- ์ฐ๊ฒฐ์ ๊ฐ๋๊ฐ ์ ํ์ ธ ์์ง ์๋ ๊ทธ๋ํ
- ๋ฌด(๋ฐฉ)ํฅ ๊ทธ๋ํ (undirected graph)
- ์์ธ์์ ๋ถ์ฐ์ผ๋ก ๊ฐ ์ ์๋ฏ, ๋ฐ๋๋ก ๋ถ์ฐ์์ ์์ธ๋ก ๊ฐ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค.
- ํ์ง๋ง ๋จ๋ฐฉํฅ(directed) ๊ทธ๋ํ๋ก ๊ตฌํ๋๋ค๋ฉด ์์ธ์์ ๋ถ์ฐ์ ๊ฐ ์ ์์ง๋ง, ๋ถ์ฐ์์ ์์ธ๋ก ๊ฐ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค(ํน์ ๊ทธ ๋ฐ๋).
- ๋ง์ฝ ๋ ์ง์ ์ด ์ผ๋ฐฉํตํ ๋๋ก๋ก ์ด์ด์ ธ ์๋ค๋ฉด ๋จ๋ฐฉํฅ์ธ ๊ฐ์ ์ผ๋ก ํํํ ์ ์์ต๋๋ค.
- ์ฐ๊ฒฐ ๊ทธ๋ํ
- ์ ์ ๋ค์ด ๊ฐ์ ์ผ๋ก ์ ๋ถ ์ฐ๊ฒฐ์ด ๋์ด ์๋ ๊ทธ๋ํ (๊ด๊ณ๊ฐ ์๋ค)
- ๋น์ฐ๊ฒฐ ๊ทธ๋ํ
- ์ ์ ์ฌ์ด์ ์ด๋ ํ ๊ฐ์ ๋ ์ถ๊ฐํ ์ ์๋ ๊ทธ๋ํ (๊ด๊ณ๊ฐ ์๋ค)
- ์ง์
์ฐจ์ (in-degree) / ์ง์ถ์ฐจ์ (out-degree)
- ํ ์ ์ ์ ์ง์ (๋ค์ด์ค๋ ๊ฐ์ )ํ๊ณ ์ง์ถ(๋๊ฐ๋ ๊ฐ์ )ํ๋ ๊ฐ์ ์ด ๋ช ๊ฐ์ธ์ง๋ฅผ ๋ํ๋ ๋๋ค.
- ์ธ์ (adjacency)
- ๋ ์ ์ ๊ฐ์ ๊ฐ์ ์ด ์ง์ ์ด์ด์ ธ ์๋ค๋ฉด ์ด ๋ ์ ์ ์ ์ธ์ ํ ์ ์ ์ ๋๋ค.
- ์๊ธฐ ๋ฃจํ (self loop)
- ์ ์ ์์ ์ง์ถํ๋ ๊ฐ์ ์ด ๊ณง๋ฐ๋ก ์๊ธฐ ์์ ์๊ฒ ์ง์ ํ๋ ๊ฒฝ์ฐ "์๊ธฐ ๋ฃจํ๋ฅผ ๊ฐ์ก๋ค" ๋ผ๊ณ ํํํฉ๋๋ค.
- ๋ค๋ฅธ ์ ์ ์ ๊ฑฐ์น์ง ์๋๋ค๋ ๊ฒ์ด ํน์ง์ ๋๋ค.
- ์ฌ์ดํด (cycle)
- ํ ์ ์ ์์ ์ถ๋ฐํ์ฌ ๋ค์ ํด๋น ์ ์ ์ผ๋ก ๋์๊ฐ ์ ์๋ค๋ฉด ์ฌ์ดํด์ด ์๋ค๊ณ ํํํฉ๋๋ค.
- ๋ด๋น๊ฒ์ด์ ๊ทธ๋ํ๋ ์์ธ → ๋์ → ๋ถ์ฐ → ์์ธ ๋ก ์ด๋์ด ๊ฐ๋ฅํ๋ฏ๋ก, ์ฌ์ดํด์ด ์กด์ฌํ๋ ๊ทธ๋ํ์ ๋๋ค.
BFS(Breadth-First Search)→Queue
- ๋๋น๋ฅผ ์ฐ์ ์ ์ผ๋ก ํ์ํ๋ ๋ฐฉ๋ฒ์ Breadth-First Search, ๋๋น ์ฐ์ ํ์
- ๋ ์ ์ ์ฌ์ด์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ ๋ ์ฌ์ฉํฉ๋๋ค. ์ต์ ์ ๊ฒฝ์ฐ์๋ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ๋ค ์ดํด๋ด์ผ ํจ.
- ๊ธฐ์ค์ ์ ๊ธฐ์ค์ผ๋ก ๋ชฉํ์ ๊น์ง ๊ฐ๋ ๋ฐฉ๋ฒ์ ๊ฐ๊น์ด ์ ์ ๋ถํฐ ํ์ํ๋ค.
DFS(Depth-First Search)→Stack
- ๊น์ด๋ฅผ ์ฐ์ ์ ์ผ๋ก ํ์ํ๋ ๋ฐฉ๋ฒ์ Depth-First Search, ๊น์ด ์ฐ์ ํ์
- DFS๋ ํ๋์ ๊ฒฝ๋ก๋ฅผ ๋๊น์ง ํ์ํ ํ, ๋ฏธ๊ตญ ๋์ฐฉ์ด ์๋๋ผ๋ฉด ๋ค์ ๊ฒฝ๋ก๋ก ๋์ด๊ฐ ํ์
- ํ ์ ์ ์์ ์์ํด์ ๋ค์ ๊ฒฝ๋ก๋ก ๋์ด๊ฐ๊ธฐ ์ ์ ํด๋น ๊ฒฝ๋ก๋ฅผ ์๋ฒฝํ๊ฒ ํ์ํ ๋ ์ฌ์ฉ
- BFS๋ณด๋ค ํ์ ์๊ฐ์ ์กฐ๊ธ ์ค๋ ๊ฑธ๋ฆด์ง๋ผ๋ ๋ชจ๋ ๋ ธ๋๋ฅผ ์์ ํ ํ์ํ ์ ์์ต๋๋ค.
- tree์์ inorder, preorder, postorder์ด DFS๋ฐฉ์์ ํด๋น๋จ
DFS์ BFS๋ ๋ชจ๋ ์ ์ ์ ํ ๋ฒ๋ง ๋ฐฉ๋ฌธํ๋ค๋ ๊ณตํต์ ์ ๊ฐ์ง๊ณ ์์ง๋ง, ์ฌ์ฉํ ๋์ ์ฅ๋จ์ ์ ๋ถ๋ช ํ๊ธฐ ๋๋ฌธ์ ํด๋น ์ํฉ์ ๋ง๋ ํ์ ๊ธฐ๋ฒ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
'DEV_IN > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๊ณ ๋ฆฌ์ฆ/์๊ฐ ๋ณต์ก๋ (0) | 2023.02.24 |
---|---|
์๊ณ ๋ฆฌ์ฆ์ด๋? (2) | 2023.02.24 |
์๋ฃ๊ตฌ์กฐ/๋น์ ํ๊ตฌ์กฐ/ํธ๋ฆฌ (0) | 2023.02.23 |
[์๋ฃ๊ตฌ์กฐ/์ ํ๊ตฌ์กฐ]ํ (2) | 2023.02.22 |
[์๋ฃ๊ตฌ์กฐ/์ ํ๊ตฌ์กฐ]์คํ (0) | 2023.02.22 |
Comments