DOing
[์๋ฃ๊ตฌ์กฐ] ๊ทธ๋ํ ๋ณธ๋ฌธ
๐ก ๊ทธ๋ํ
: ๊ทธ๋ํ๋ ์ฐ๊ฒฐ๋์ด ์๋ ์ ์ ์ ์ ์ ๊ฐ์ ๊ด๊ณ๋ฅผ ํํํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
: ๋น์ ํ๊ตฌ์กฐ๋ก์จ, ์ฐ๊ฒฐ ๊ด๊ณ ํํ์ ์ด์ ์ด ๋ง์ถฐ์ ธ ์๋ค.
[ ์ ํ๊ตฌ์กฐ vs ๋น์ ํ ๊ตฌ์กฐ ]
์ ํ ๊ตฌ์กฐ๋ ์๋ฃ๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ ๋ฐ์ดํฐ๋ค์ด ์์ฐจ์ ์ผ๋ก ๋์ด๋์ด์๋ ํํ์ด๋ค.
๋น์ ํ ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ๊ฐ ๊ณ์ธต์ ํน์ ๋ง์ผ๋ก ๊ตฌ์ฑ๋์ด์๋ ํํ์ด๋ค.
์ ํ๊ตฌ์กฐ๋ ์๋ฃ๋ฅผ ์ ์ฅํ๊ณ ๊บผ๋ด๋ ๊ฒ์ ์ด์ ์ด ๋ง์ถฐ์ ธ ์๊ณ , ๋น์ ํ๊ตฌ์กฐ๋ ํํ์ ์ด์ ์ด ๋ง์ถฐ์ ธ ์๋ค.
๋น์ ํ๊ตฌ์กฐ์๋ ๊ทธ๋ํ, ํธ๋ฆฌ๊ฐ ์๊ณ ์ ํ๊ตฌ์กฐ์๋ ์คํ, ํ๊ฐ ์๋ค.
๐ก ๊ทธ๋ํ์ ์ฉ์ด
- ๋ ธ๋(Node)
: ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ ๊ฐ์ง ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํ๋ค. ์ ์ (Vertex)์ด๋ผ๊ณ ๋ ํ๋ค.
- ๊ฐ์ (Edge)
: ๋ ธ๋ ๊ฐ์ ๊ด๊ณ๋ฅผ ํ์ํ ์ .
- ์ธ์ ๋ ธ๋(Adjacent Node)
: ๊ฐ์ ์ผ๋ก ์ง์ ์ฐ๊ฒฐ๋ ๋ ธ๋(๋๋ ์ ์ )
๐ก ๊ทธ๋ํ ์ข ๋ฅ
- ์ ๋ฐฉํฅ ๊ทธ๋ํ(Directed Graph)
: ๋ฐฉํฅ์ด ์๋ ๊ฐ์ ์ ๊ฐ๋๋ค.
: ๊ฐ์ ์ ๋จ๋ฐฉํฅ ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ฉฐ, ๊ฐ ๊ฐ์ ์ ํ ๋ฐฉํฅ์ผ๋ก๋ง ์งํํ ์ ์๋ค.
- ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ(Undirected Graph)
: ๋ฐฉํฅ์ด ์๋ ๊ฐ์ ์ ๊ฐ๋๋ค.
๐ก ๊ทธ๋ํ ํํ๋ฐฉ๋ฒ
1) ์ธ์ ํ๋ ฌ(Adjacency Matrix)
: 2์ฐจ์ ๋ฐฐ์ด๋ก ๊ทธ๋ํ์ ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ ํํ
2) ์ธ์ ๋ฆฌ์คํธ(Adjacnecy List)
: ๋งํฌ๋ ๋ฆฌ์คํธ๋ก ๊ทธ๋ํ์ ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ ํํ
[ ์์ ]
2 - 3
โ
0 - 1
1) ์ธ์ ํ๋ ฌ๋ก ํํ
0 | 1 | 2 | 3 | |
0 | X | O | X | X |
1 | O | X | O | X |
2 | X | O | X | O |
3 | X | X | O | X |
graph = [ [False, True, False, False], [True, False, True, False], [False, True, False, True], [False, False, True, False] ]
2) ์ธ์ ๋ฆฌ์คํธ๋ก ํํ
0 -> 1
1 -> 0 -> 2
2 -> 1 -> 3
3 -> 2
graph = { 0: [1], 1: [0, 2], 2: [1, 3], 3: [2] }
๐ก ์ธ์ ํ๋ ฌ vs ์ธ์ ๋ฆฌ์คํธ
= ์๊ฐ VS ๊ณต๊ฐ
์ธ์ ํ๋ ฌ์ผ๋ก ํํํ๋ฉด ์ฆ๊ฐ์ ์ผ๋ก 0๊ณผ 1์ด ์ฐ๊ฒฐ๋์๋์ง ์ฌ๋ถ๋ฅผ ๋ฐ๋ก ์ ์ ์๋ค. ๊ทธ๋ฌ๋, ๋ชจ๋ ์กฐํฉ์ ์ฐ๊ฒฐ ์ฌ๋ถ๋ฅผ ์ ์ฅํด์ผ ๋๊ธฐ ๋๋ฌธ์ O(๋ ธ๋^2) ๋งํผ์ ๊ณต๊ฐ์ ์ฌ์ฉํด์ผ ํ๋ค.
์ธ์ ๋ฆฌ์คํธ๋ก ํํํ๋ฉด ์ฆ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋์๋์ง ์ ์ ์๊ณ , ๊ฐ ๋ฆฌ์คํธ๋ฅผ ๋์๋ด์ผ ํ๋ค. ๋ฐ๋ผ์ ์ฐ๊ฒฐ๋์๋์ง ์ฌ๋ถ๋ฅผ ์๊ธฐ ์ํด์ ์ต๋ O(๊ฐ์ ) ๋งํผ์ ์๊ฐ์ ์ฌ์ฉํด์ผ ํ๋ค. ๋์ ๋ชจ๋ ์กฐํฉ์ ์ฐ๊ฒฐ ์ฌ๋ถ๋ฅผ ์ ์ฅํ ํ์๊ฐ ์์ผ๋ O(๋ ธ๋ + ๊ฐ์ ) ๋งํผ์ ๊ณต๊ฐ์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ๊ตฌ์กฐ] ์คํ, ํ, ๋ฐํ (0) | 2021.06.22 |
---|---|
[์๋ฃ๊ตฌ์กฐ] ์ด์ง ํ์ ํธ๋ฆฌ with Python (0) | 2021.06.21 |
[์๊ณ ๋ฆฌ์ฆ] Disjoint Sets(์๋ก์ ์งํฉ) (0) | 2021.05.31 |
[์๊ณ ๋ฆฌ์ฆ] ํ๋ก์ด๋ ์์ with Python (0) | 2021.05.23 |
[์๊ณ ๋ฆฌ์ฆ] ๋ค์ต์คํธ๋ผ ์ต๋จ๊ฒฝ๋ก with Python (0) | 2021.05.23 |