๐ค๊ทธ๋ํ ์๊ณ ๋ฆฌ์ฆ
๊ทธ๋ํ๋ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ฒ์ด๋ผ๊ธฐ ๋ณด๋ค๋ ์ฌ๋ฌ๊ฐ์ง ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.
๊ทธ๋ํ๋ ์ ์ ๊ณผ ๊ฐ์ ์ผ๋ก ๊ตฌ์ฑ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ปํฉ๋๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ DFS์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐์ด์ ํฌ์คํ
๐ Reachability
Reachability๋ DFS์๊ณ ๋ฆฌ์ฆ์ ์ดํดํ๊ธฐ ์ํ ๊ธฐ๋ฐ์ด ๋๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ฏ๋ก DFS๋ฅผ ๊ณต๋ถํ๊ธฐ์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
Undirected Graph G์ ๋ ์ ์ u,v ์ ๋ํด ์ ์ u์์ ์ ์ v๋ก์ path๊ฐ ์กด์ฌํ๋ค๊ณ ํ ๋, v๋ u๋ก๋ถํฐ reachable์ด๋ผ๊ณ ํฉ๋๋ค.
Graph G์ ์ ์ v๊ฐ ์ฃผ์ด์ก์ ๋ ์ด๋ป๊ฒ v์์ reachableํ ๋ชจ๋ ์ ์ ์ ์ฐพ์ ์ ์๋ ์ง์ ๋ํ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
ํด๋น ์๊ณ ๋ฆฌ์ฆ์ ์๋์ฝ๋๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
์์ ์๋์ฝ๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋์ํ๋์ง ๊ท๋ฅ๋ฒ์ ํตํด ์ฆ๋ช ํ๊ฒ ์ต๋๋ค
.
ํด๋น ์๊ณ ๋ฆฌ์ฆ์ ์คํ ๊ณผ์ ์ ์๋์ ๊ฐ์ต๋๋ค.
ํด๋น ๊ทธ๋ํ์ ๋ชจ๋ ์ ์ ์๋ preorder number๊ณผ postorder number ๊ฐ์ ๊ฐ์ง๊ณ ์๋๋ก ํฉ๋๋ค.
์ดํ counter ๋ณ์๋ฅผ 1๋ก ์ด๊ธฐํํ์ฌ ์ ์ธํ ํ previsit(v)๋ฅผ ํ ๋๋ง๋ค preorder number, postvist(v)๋ฅผ ํ ๋๋ง๋ค postorder(v)์ ๊ฐ์ counter๋ก ์ค์ ํ ๋ค์ counter์ ๊ฐ์ 1์ฉ ์ฆ๊ฐ์ํต๋๋ค.
์ด๋ฅผ ๊ทธ๋ฆผ์ ๋ํ๋ด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
๐ DFS(Depth First Search)
โ๏ธ DFS์ ์ ์
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด DFS tree์ root node๋ ์ฒ์ explore ๋ฅผ ์์ํ๋ ์ ์ ์ ๋๋ค.
explore(G, v) ์ํ ๋์ค explore(G, u)๋ฅผ ํธ์ถํ ๊ฒฝ์ฐ, u์ parent node๋ v๊ฐ ๋ฉ๋๋ค.
Graph G์ edge๋ค ์ค DFS tree์ ์๋ edge๋ฅผ tree edge, DFS tree์ ์๋ edge๋ฅผ back edge๋ผ๊ณ ํ๋ฉฐ ์ ์๋ ๋ณดํต ์ค์ , ํ์๋ ์ ์ ์ผ๋ก ๋ํ๋ ๋๋ค.
โ๏ธ DFS์๊ณ ๋ฆฌ์ฆ์ ์ํ ์๊ฐ
์์์ ์ธ๊ธํ explore procedure์ ์ด์ฉํ์ฌ ๊ทธ๋ํ ์ฌ์ฅ ๋ชจ๋ ์ ์ ์ ํ ๋ฒ ์ฉ ๋ฐฉ๋ฌธํ๋ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ์ต๋๋ค.
1. ๊ทธ๋ํ์ ๋ชจ๋ ์ ์ ์ visited(v)๋ฅผ false๋ก ์ค์ ํฉ๋๋ค.
2. ๋ฐฉ๋ฌธํ์ง ์์ ๋ชจ๋ ์ ์ ์ ๋ํด explore(v)๋ฅผ ์งํํฉ๋๋ค.
๋ชจ๋ ์ ์ ์ ๋ํด visted(v)๋ฅผ ์ด๊ธฐํํด์ผํ๋ฏ๋ก $O(n)$์ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.
๋ชจ๋ ์ ์ ์ ๋ํด explore์ ํด์ผ ํ๋๋ฐ ์ด๋ ๊ฐ์ edge๋ฅผ ์ต๋ ๋ ๋ฒ ์ ๊ทผํ ์ ์์ผ๋ฏ๋ก $O(2m)$์ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.
์ด๋ $O(m)$์ dominate๋๊ธฐ ๋๋ฌธ์ ์ด
$$O(n+m)$$
์๊ฐ์ด ์๋ชจ๋ฉ๋๋ค.
๐ Connected Components
์๋์ (a)์ ๊ฐ์ ๊ทธ๋ํ๋ฅผ DFS tree๋ก ๋ํ๋ด๋ฉด (b)์ ๊ฐ์ต๋๋ค.
explore๊ณผ์ ์ DFS ์๊ณ ๋ฆฌ์ฆ์ ๊ฒฝ์ฐ ์ ์ฒด ๊ณผ์ ์ DFS tree ๋ค์ ์๋ก์ ํฉ์งํฉ, ์ฆ forest๋ก ํํ์ด ๊ฐ๋ฅํฉ๋๋ค.
DFS forest๋ฅผ ์ด๋ฃจ๋ ๊ฐ๊ฐ์ DFS tree๋ ๊ทธ๋ํ์์ Connected Component์ ๋์ํฉ๋๋ค.
โ๏ธ Connected Component์ ์ ์
๊ทธ๋ํ G์ Connected Component์ธ G'์ G์ Maximal Connected Subgraph๋ก ์ ์๋ฉ๋๋ค.
์ด๋ Maximal์ ์ต๋๋ ์๋์ง๋ง ๋ ์ด์ ์ถ๊ฐํ ์ ์๋ ์ํ๋ฅผ ๋งํฉ๋๋ค.
์ฆ, ์ด์ ๊ทธ๋ฆผ์์ ์ ์ A์์ explore(v)๋ฅผ ์งํํ์ ๋ { A, B, E, I, J }๊ฐ ๊ฐ๊ฐ์ node๋ก ์กด์ฌํ๋ tree๋ฅผ ๊ตฌ์ฑํ ์ ์๋๋ฐ ์ด ์ํ๋ฅผ Maximal์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก DFS forest๋ฅผ ์ด๋ฃจ๋ ๊ฐ๊ฐ์ DFS tree๋ ๊ทธ๋ํ์ connected compnent์ ๋์ํฉ๋๋ค.
DFS์๊ณ ๋ฆฌ์ฆ ์ค ํ ๋ฒ explore๋ฅผ ํธ์ถํ ๋๋ง๋ค ์๋ก์ด connected componet์ ์ํ vetex๋ค์ ๋ชจ๋ ๋ฐฉ๋ฌธํฉ๋๋ค.
์ด์ ๋ํ ์ฆ๋ช ์ ์๋์ ๊ฐ์ต๋๋ค.
Articulation Point์ ๋ํ ์์ธํ ์ค๋ช ์ด ๋์์๋ ๋ธ๋ก๊ทธ๋ ์๋์ ์ฐธ์กฐ์ ๋งํฌ๋ฅผ ๊ฑธ์ด๋์์ต๋๋ค.
๐ Articulation Point(Cut Vertex)
โ๏ธ Articulation Point์ ์ ์
๊ทธ๋ํ G๊ฐ connected undirected graph๋ผ๊ณ ํ๊ฒ ์ต๋๋ค.
์ด๋ G์ ์ด๋ค ์ ์ v์ v์ ์ฐ๊ฒฐ๋ ๋ชจ๋ edge๋ค์ ์ ๊ฑฐํ ๊ฒฝ์ฐ G๊ฐ disconnected๋๋ค๋ฉด v๋ฅผ G์ articulation point๋ผ๊ณ ํฉ๋๋ค.
์๋์ ๊ทธ๋ฆผ์์ ์ ์ 2, 6์ Articulation Point์ ๋๋ค.
๐ Biconnected Components
โ๏ธ Biconnected Components์ ์ ์
๊ทธ๋ํ G๊ฐ biconnected(์ด์ค์ฐ๊ฒฐ๋์ด์๋ค) ๋ผ๋ ๋ป์ G๋ connected ๊ทธ๋ํ์ด๋ฉฐ Articulation point๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๋ค๋ ๋ป์ ๋๋ค.
Biconnected Component G' of G๋ ๊ทธ๋ํ G์ maximal biconnected subgraph๋ผ๊ณ ์ ์ํ ์ ์์ต๋๋ค.
์ฆ, ๊ทธ๋ํ G์ biconnected compnent๋ก G์ edge๋ค์ partitioning ํ ์ ์์ผ๋ฉฐ ์๋ก ๋ค๋ฅธ ๋ biconnected component๋ ์ต๋ ํ ๊ฐ์ ์ ์ (articulation)์ ๊ณต์ ํฉ๋๋ค
์ด๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ์ดํด๋ณด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
$G'_1, G'_2, G'_3$์ ๊ฐ๊ฐ biconnected component๋ก $G'_1๊ณผ G'_2$๊ฐ Vertex2๋ฅผ ๊ณต์ ํ๊ณ $G'_2์ G'_3$๊ฐ Vertex6์ ๊ณต์ ํฉ๋๋ค.
โ๏ธ Key Property
๊ฐ์ bioconnected component์ ์ํด์๋ edge e์ e'์ด ์์ ๋
i) e = e'์ด๊ฑฐ๋
ii) e์ e'์ ๋ชจ๋ ํฌํจํ๋ cycle์ด ๊ฐ์ component ์์ ์ํด ์๋ค. (์ญ๋ ์ฑ๋ฆฝ)
๐ ์ฆ๋ช
๋ค์ ํฌ์คํ ์ ์ด์ด ์์ฑ์ DFS ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ์ ๋ฆฌ๋ฅผ ๋ง๋ฌด๋ฆฌํ๊ฒ ์ต๋๋ค.
๐ Reference
'Computer Science > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] ๋ถํ ์ ๋ณต(3) - Matrix Multiplication (0) | 2022.10.20 |
---|---|
[Algorithm] ๊ทธ๋ํ ์๊ณ ๋ฆฌ์ฆ(3) - DFS(2), Biconnected Graph (0) | 2022.10.13 |
[Algorithm] ๊ทธ๋ํ ์๊ณ ๋ฆฌ์ฆ(1) - ๊ทธ๋ํ์ ๊ธฐ๋ณธ ์ฉ์ด (0) | 2022.10.04 |
[Algorithm] ๋ถํ ์ ๋ณต(5) - Median of Medians (0) | 2022.10.04 |
[Algorithm] ๋ถํ ์ ๋ณต(2) - Multiplication (0) | 2022.09.29 |