Shortest Reliable Paths
2020-1ํ๊ธฐ, ๋ํ์์ โ์๊ณ ๋ฆฌ์ฆโ ์์ ์ ๋ฃ๊ณ ๊ณต๋ถํ ๋ฐ๋ฅผ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ์ง์ ์ ์ธ์ ๋ ํ์์ ๋๋ค :)
์ฃผ์ด์ง ๊ทธ๋ํ $G$์์ ์ต๋ $k$๊ฐ์ edge๋ฅผ ๊ฑฐ์ณ ๋ ธ๋ $s$์์ ๋ ธ๋ $t$๋ก ๊ฐ๋ shortest path๋ฅผ ์ฐพ๊ณ ์ถ๋ค. ์ด์ ์ <Dijkstra Algothm>์ ์ํฉ๊ณผ ๋น์ทํ์ง๋ง, ์ต๋ $k$๊ฐ์ edge๋ฅผ ๊ฑฐ์น๋ค๋ ์กฐ๊ฑด์ด ์ถ๊ฐ ๋์๋ค. ์๋์ ๊ทธ๋ํ๋ฅผ ํตํด ์ดํด๋ณด๋ฉด, $B$์์ $T$๋ก ๊ฐ ๋, ์ต๋ $1$๊ฐ์ edge๋ง ๊ฑฐ์น ์ ์๋ค๋ฉด, ๋น์ฉ์ด $4$์ธ edge๋ฅผ ๊ฑฐ์ณ์ ๋์ฐฉํด์ผ ํ๋ค. ์ด๊ฒ์ โat most $k$ edgeโ๋ผ๋ ์กฐ๊ฑด ๋๋ฌธ์ the shortest path์ธ $(B, D, T)$์ ๋น์ฉ $2$๋ณด๋ค ๋ ํฐ ๋น์ฉ์ ์ง๋ถํ๊ฒ ๋ ๊ฒ์ด๋ค.
์ด ๋ฌธ์ ๋ <DP> ๊ธฐ๋ฒ์ ์ฌ์ฉํด $k$๋ฅผ ์ ์ง์ ์ผ๋ก ์ฆ๊ฐ์ํค๋ฉฐ ํ ์ ์๋ค. ์์๋
ธ๋ $s$์์ ๊ฐ ๋
ธ๋ $v$๊น์ง $k$๊ฐ์ edge๋ฅผ ๊ฑฐ์ณค์ ๋, ์ฆ $k$-hop์ ํ์ ๋์ shortest cost๋ฅผ dist[v][k]
์ ์ ์ฅํ๋ฉด ๋๋ค.
Let $\text{dist}(v, i)$ be the shortest path from $s$ to $v$ that uses $i$ edges.
(Initialize) set $\text{dist}(v, 0) = \infty$ and $\text{dist}(s, *) = 0$.
Then,
\[\text{dist}(v, i) = \min_{(u, v) \in E} \left\{ \text{dist}(u, i-1) + \ell(u, v) \right\}\]์์๋ ธ๋ $s$์์ ์์ํด๋ณด์. ๊ทธ๋ฌ๋ฉด, ๋น์ฐํ๊ฒ๋ ๋ชจ๋ $v$์ ๋ํด $\text{dist}(v, 1) = \ell(s, v)$๊ฐ ์ฑ๋ฆฝํ๋ค.
๋ค์์ $s$์ ์ธ์ ๋ ธ๋์๋ $v$ ๋ ธ๋๋ค์ ๋ํด ๊ทธ๋ค์ ์ธ์ ๋ ธ๋ $u$๋ค์ $\text{dist}(u, 2)$ ๊ฐ์ ๊ฐฑ์ ํ๋ค.
<Dijkstraโs Algorithm>์ ๊ฒฝ์ฐ ๋ช ๋ฒ hop ํ๋์ง๋ฅผ ๋ฐ๋ก ๊ธฐ๋กํ์ง ์๊ณ dist[v]
๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ต์ ์ฐพ๊ธฐ ๋๋ฌธ์ hop ์ ๋ณด๋ฅผ ์ ์ ์๋ค. ๋ฌผ๋ก ์ฝ๊ฐ ์์ ํ๋ฉด <Dijkstraโs Algorithm>์์ dist[v] = (cost, hop)
๋ฅผ ์ ์ฅํด์ hop ์ ๋ณด๋ฅผ ๊ธฐ๋กํ ์ ์๋ค.
๊ทธ๋ฌ๋ ์ด๋ฒ ๊ฒฝ์ฐ๋ dist[v][hop]
์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๋์ฐฉ๋
ธ๋ $t$์ ๋ํด dist[t][hop]
์์ ์ํ๋ hop ์์ ๋ฐ๋ฅธ cheapest cost๋ฅผ ์ป์ ์ ์๋ ๊ฒ์ด๋ค.
๊ฒฐ๊ตญ 1์ฐจ์ dist[]
๋ฐฐ์ด์ 2์ฐจ์ dist[][]
๋ก ํ์ฅ, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ์ฌ์ฉํด์ hop
์ ๋ณด๋ฅผ ์ ์ฅํ ๊ฒ์ด๋ค. <Dijkstraโs Algorithm>์ ์๋ฆฌ์ ํฌ๊ฒ ๋ค๋ฅด์ง ์๋ค.
* ๋ฌธ์ ์์ ์๊ตฌํ๊ฒ โexact $k$ edgesโ๊ฐ ์๋๋ผ โat most $k$ edgeโ๋ผ๋ ์ ์ ๊ธฐ์ตํ์!
์ถ์ฒ ๋ฌธ์
์ํ๊น๊ฒ๋ ๋ฐฑ์ค์์ ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ์ฐพ์ง ๋ชป ํ๋ค ๐ฅ