Data Structure_#13 Graph
Graph
:๊ฐ์ฅ ๋ณต์กํ(์ผ๋ฐ์ ์ธ) ์๋ฃ๊ตฌ์กฐ
-
G=(V,E) v=vertex(์ ์ ) set, E= edge(์์ง) set
-
degree(๋ถ์ง์): ์ด๋ค ๋ ธ๋์ ์ฐ๊ฒฐ๋ ์์ง ์
-
์ธ์ ์ฑ
โ (1) adjacent: ์์ง(u, v)๊ฐ ์กด์ฌํ ๋ u, v๋ ์ธ์ (adjacent)
โ (2) incident: ์์ง e=(u, v)์ ๋ํด, e๋ u์ v์ ์ธ์ (incident)
- ๊ฒฝ๋ก(path)
โ (1)๋จ์ ๊ฒฝ๋ก
โ (2)๊ฒฝ๋ก์ ๊ธธ์ด
- ์ฌ์ดํด
โ (1) ํธ๋ฆฌ : ์ฌ์ดํด์ด ์๋ ์ฐ๊ฒฐ ๊ทธ๋ํ (๋ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฒฝ๋ก๊ฐ ๋ฌด์กฐ๊ฑด 1๊ฐ)
โ (2) ํฌ๋ฆฌ์คํธ: ์ฐ๊ฒฐ ํธ๋ฆฌ์ ์งํฉ
- ๋ฐฉํฅ๊ทธ๋ํ/๋ฌด๋ฐฉํฅ๊ทธ๋ํ
ํํ๋ฒ
- ์ธ์ ํ๋ ฌ(adjacency matrix): (๊ฐ์ค์น๋ฅผ ์ง์ ์ ์) ๋๊ฐ์ ์ 0์ด๋ 1๋ก ํต์ผ =>๋ฉ๋ชจ๋ฆฌ ๋ญ๋น
โ => 2์ฐจ์ ํ๋ ฌ(๋ฐฐ์ด)๋ก
- ์ธ์ ๋ฆฌ์คํธ(adjacency list): ์์ง๋ง ํํํ๋ ๊ฒ =>์ธ์ ํ๋ ฌ ๋ณด์
โ =>1์ฐจ์ ๋ฐฐ์ด๋ค๋ก
๊ธฐ๋ณธ์ฐ์ฐ์๊ฐ
Sparse(์์ง์<๋
ธ๋์) dense(์์ง์>๋
ธ๋์) โ
๊ทธ๋ํ ์ํ
1. DFS(Depth First Search)
โ : ๊ธธ์ด์ฐ์ ํ์
=> ํ์ฌ ๋ฐฉ๋ฌธ ๋ ธ๋์์ ๋ฐฉ๋ฌธํ์ง ์๋ ์ด์ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธ & backtrack์ผ๋ก ๋ค์ ์ ๊ฐ๋ณธ๊ณณ ๋ฐฉ๋ฌธ
=> ๊ทธ ๊ณผ์ ์ ํตํด ๋ง๋ค์ด์ง ํธ๋ฆฌ๊ฐ DFS ํธ๋ฆฌ
โ [๋น์ฌ๊ท์ ]
โ backdege ์กด์ฌ=์ฌ์ดํด ์กด์ฌ
- DAG(Directed Acyclic Graph)
โ -> ์ฌ์ดํด์ด ์๋ ๋ฐฉํฅ ๊ทธ๋ํ
Post๊ฐ ๊ฐ์ฅ ๋ฆ๊ฒ ๋๋๋( ๋ค ๋ฐ์์ผํ๋) ๊ฒ์ด ์ ์ผ ๋์ค์ผ๋ก (post time์ด ๊ฐ์ฅ ์์ ๊ฒ!)
โ => Post ์ญ์์ผ๋ก(ํฐ ๊ฒ๋ถํฐ ๋์ด)!
โ Ex) A, C, B, F, H, D, I, G
- BFS( ๋๋น์ฐ์ )
โ => ๊ฐ์ ๋ ๋ฒจ๊ธฐ์ค์ผ๋ก ์ ๊ฐ๋ณธ ๊ณณ ๊ฐ๊ธฐ