DAG & Topological Sort
2020-1ํ๊ธฐ, ๋ํ์์ โ์๊ณ ๋ฆฌ์ฆโ ์์ ์ ๋ฃ๊ณ ๊ณต๋ถํ ๋ฐ๋ฅผ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ์ง์ ์ ์ธ์ ๋ ํ์์ ๋๋ค :)
<DAG; Directed Acyclic Graph>๋ cycle์ด ์กด์ฌํ์ง ์๋ directed graph๋ฅผ ๋งํ๋ค.
์ด๋, ๋ชจ๋ DAG์ ๋ ธ๋๋ <topological ordering>๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์, ์ฐ๋ฆฌ๋ DAG๋ฅผ <topological sort>๋ก linearization ํ ์ ์๋ค!!
์ด๊ฒ์ DAG๊ฐ ๊ฐ๋ ์ฑ์ง ๋๋ฌธ์ธ๋ฐ, โEvery DAG has at least one vertex with no incoming edge.โ์ด๊ธฐ ๋๋ฌธ์ด๋ค! ์ด ์ฑ์ง์ ๋ฐ๋ผ, <topological sort>๋ DAG์ ์กด์ฌํ๋ vertex with no incoming edge๋ฅผ ํ๋์ฉ ์ ๊ฑฐํด๊ฐ๋ฉด์, DAG๋ฅผ linearization ํ๋ค ๐คฉ
์์์ ์ ์ํ DAG์ ๋ํด vertex with no incoming edges๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ ๊ฑฐํ์ฌ topological sort๋ฅผ ์ํํ๋ฉด, ๊ทธ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ๋ค.
DAG๊ณผ topological ordering ์ฌ์ด์ ๊ด๊ณ๋ฅผ ๊ธฐ์ ํ๋ฉด ์๋์ ๊ฐ๋ค.
A directed graph is a DAG iff it has a topological ordering.
์ด๋ ๊ฒ DAG๋ฅผ topological order๋ก linearization ํ๋ค๋ฉด, ์ฐ๋ฆฌ๋ DAG ์์์์ shortest path๋ฅผ ์ฝ๊ฒ ๊ตฌํ ์ ์๋ค.
Linearize $G$
for each $u \in V$ in linearized order
โโfor all edges $(u, v) \in E$
โโโโ$\texttt{update}(u, v)$
โโend for
end for
์ฐธ๊ณ ๋ก ์ฃผ์ด์ง ๊ทธ๋ํ๊ฐ DAG๋ผ๋ฉด, negative edge๊ฐ ์์ด๋ ์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ถฉ๋ถํ shortest path๋ฅผ ๊ตฌํ ์ ์๋ค!! (DAG๋ cycle์ด ์๊ธฐ ๋๋ฌธ์, negative cycle์ ๋ํ ๊ฑฑ์ ์ด ์๋ค! ๐)
์ฌ๊ธฐ๊น์ง๊ฐ ์ ๊ท ์์ ์์ ๋ค๋ฃฌ <Graph Algorithm>์ ๋ํ ๋ด์ฉ์ด๋ค. ๊ทธ๋ํ ์ด๋ก ์ PS์ ๊ธฐ๋ณธ์ด๊ธฐ ๋๋ฌธ์ ์ด๊ณณ์์ ๋ค๋ฃฌ ๋ชจ๋ ๋ด์ฉ์ ์์ ํ ์ดํดํ๊ณ ์ธ์ ๋ ์ง ์ธ ์ ์๋๋ก ํ๋๊ฒ ์ค์ํ ๊ฒ ๊ฐ๋ค. โ์๊ณ ๋ฆฌ์ฆโ ๊ณผ๋ชฉ์ ์ ๊ท ์์ ์์ ๋ค๋ฃจ์ง๋ ์์์ง๋ง, โ์ธ๊ณ ์ง๋ฅโ ๊ณผ๋ชฉ์์๋ ๋ค๋ค๋ heuristic path finding ๊ธฐ๋ฒ์ธ <A* Algorithm>๋ ์ถํ์ ๋ค๋ค๋ณด๋๋ก ํ๊ฒ ๋ค.
๊ทธ๋ํ์ ๋ํ ๋ด์ฉ์ ๋์ค์ <Network Flow> ๋ถ๋ถ์์ ๋ค์ ๋ฑ์ฅํ๋ค! ๐