Euler Path Problem
2020-1ํ๊ธฐ, ๋ํ์์ โ์๊ณ ๋ฆฌ์ฆโ ์์ ์ ๋ฃ๊ณ ๊ณต๋ถํ ๋ฐ๋ฅผ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ์ง์ ์ ์ธ์ ๋ ํ์์ ๋๋ค :)
<Euler Path Problem>์ ์ด์ฐ ์ํ์ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ์ ๋ค. ์๊ณ ๋ฆฌ์ฆ์ด ์ ๋ง ๊ฐ๋จํ๋ ํ๋ฒ ์ดํด๋ณด์.
Given a graph, find a path that contains each edge exactly once.
์ฆ, ํ์ ํ๋ฒ๋ ๋ผ์ง ์๊ณ ์ฃผ์ด์ง ๊ทธ๋ํ๋ฅผ ๊ทธ๋๋ก ๊ทธ๋ ค๋ผ ์ ์๋๋์ ๋ํ ์ง๋ฌธ์ด๋ค.
๋ฌธ์ ๋ฅผ ์ ์ํ ์ค์ผ๋ฌ๋ ๊ทธ๋ํ๊ฐ Euler Path๋ฅผ ๊ฐ์ง๊ธฐ ์ํด์ ๋ ๊ฐ์ง ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ํ๋ค๊ณ ์ฃผ์ฅํ๋ค.
- graph is connected (๋น์ฐ)
- every verte must have even degree (๋จ, start/end vertex๋ odd degree ๊ฐ๋ฅ)
Euler Path Theorem
Theorem.
A connected undirected graph has an Eulerian cycle iff every vertex has even degree.
Proof. $\implies$
Path๊ฐ vertex๋ฅผ ์ง๋๋ ์ํฉ์ ์๊ฐํด๋ณด์. ๊ทธ๋ฌ๋ฉด, ํด๋น vertex์ ๋ค์ด๊ฐ๋ ๊ฐ์ , ํด๋น vertex์์ ๋๊ฐ๋ ๊ฐ์ ์ด ๋ฌด์กฐ๊ฑด ํ์ํ๋ค. ๊ทธ๋์ Path๊ฐ vertex๋ฅผ ํ๋ฒ ์ง๋ ๋๋ง๋ค, ํด๋น vertex์ 2๊ฐ์ degree๊ฐ ๋ณด์ฅ๋๋ค๋ ๊ฒ์ ๋งํ๋ค.
Euler cycle์ ๊ทธ๋ํ์ ๋ชจ๋ vertex๋ฅผ ์ง๋๊ฒ ๋๋ค. ๊ทธ๋์ Euler cycle์ด ์ง๋๋ ๋ชจ๋ ์ ์ ์ path๊ฐ vertex๋ฅผ ๋ฐฉ๋ฌธํ๋ ํ์์ 2๋ฐฐ ๋งํผ์ ์ ์ ์ ๋ฐ๋์ ๊ฐ์ง๊ณ ์๋ค. ์ด๋, Euler cycle์ graph์ ๋ชจ๋ ๊ฐ์ ์ฆ, vertex์ ๋ชจ๋ edge๋ฅผ ์ง๋๋ฏ๋ก path๊ฐ vertex๋ฅผ ๋ฐฉ๋ฌธํ๋ฉฐ ํ๊ณ ๋จ์ edge๋ ์กด์ฌํ์ง ์๋๋ค.
๋ฐ๋ผ์, Euler cycle์ ๊ฐ๋ graph์ vertex๋ ๋ชจ๋ even degree๋ฅผ ๊ฐ๋๋ค. $\blacksquare$
Proof. $\impliedby$
-
ํ vertex์์ ์์ํด ์ธ์ ํ vertex ์ค ํ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ค. ์ด ๊ณผ์ ์ ์ ํ๋ฒ ๋ฐ๋ณตํ๋ฉด, ์ธ์ ๊ฐ ์ถ๋ฐํ๋ vertex๋ก ๋์์ค๊ฒ ๋๋ค! (even degree graph์ ์ฑ์ง์ ์ํด cycle์ด ๋ฐ๋์ ์กด์ฌํจ)
- ๋ง์ฝ ์ฐ๋ฆฌ๊ฐ ์์ vertex๋ก ๋์์์ ๋ graph์ ๋ชจ๋ ์ ์ ์ ๋ฐฉ๋ฌธํ ๊ฒ์ด๋ผ๋ฉด, ๊ทธ cycle์ด ๋ฐ๋ก Euler cycle์ด๋ค!
- ๋ง์ฝ ์์ง ๋ฐฉ๋ฌธํ์ง ์์ edge๊ฐ ๋จ์๋ค๋ฉด, ์ง์ ์ cycle์ ๊ธฐ์กด ๊ทธ๋ํ์์ ์ง์์ค๋ค. cycle์ ์ง์ ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ํ์ ๊ฐ์ ๋ ์ง์๊ฐ ๋งํผ ์ฌ๋ผ์ง๋ค.
- ์์ ๊ณผ์ ์ ๋ชจ๋ ์ ์ ์ ๋ฐฉ๋ฌธํ ๋๊น์ง ๋ฐ๋ณตํ๋ค.
$\blacksquare$
์๊ฐ ๋ณต์ก๋
์ฃผ์ด์ง ๊ทธ๋ํ๊ฐ Euler cycle์ธ์ง๋ $O(V)$ ๋ง์ ํ๋จํ ์ ์๋ค. ๋จ์ํ ๊ฐ ์ ์ ์ degree ๊ฐฏ์๊ฐ ๋ชจ๋ ์ง์ ๊ฐ์ธ์ง๋ง ์ธ๋ฉด ๋๊ธฐ ๋๋ฌธ์ด๋ค.
์ฃผ์ด์ง ๊ทธ๋ํ์์ Euler cycle์ ์ฐพ๋ ๊ฒ ์ญ์ ๋ง์ฐฌ๊ฐ์ง๋ค. ์ ์ ํ๋๋ฅผ ์ ํด DFS/BFS๋ก ์ ์ ์ ๋ฐฉ๋ฌธํ๋ฉฐ cycle์ ์์ฑํ๋ฉด ๋๋ค. cycle์ด ์์ฑ๋๋ฉด ํด๋น cycle์ ๊ทธ๋ํ์์ ์ง์์ค๋ค. ์ด ๊ณผ์ ์ ๋ฐ๋ณตํด ๋ฐฉ๋ฌธํ ์ ์ ์ ์์๊ฐ ๋ฐ๋ก Euler Cycle์ด๋ค. ๊ฐ ์ ์ ์ ํ๋ฒ์ฉ ๋ฐฉ๋ฌธํ๊ฒ ๋๊ธฐ ๋๋ฌธ์ $O(V)$์ ์๊ฐ์ ํด๊ฒฐํ ์ ์๋ค.
๋งบ์๋ง
<Euler Path Problem>๊ณผ ๋น์ทํ๊ฒ <Hamilton Path Problem>๋ ์กด์ฌํ๋ค. ์ด ๊ฒฝ์ฐ๋ ๋ชจ๋ ์ ์ ์ ํ๋ฒ์ฉ๋ง ๋ฐฉ๋ฌธํ๋ ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋์ง ํ๋ณํด์ผ ํ๋ค. <Euler Path Problem>๊ณผ ๋ฌ๋ฆฌ poly-time์ผ๋ก ํด๊ฒฐ๋๋ ์๊ณ ๋ฆฌ์ฆ์ด ์กด์ฌํ์ง ์๋๋ค. ๋ค์ ํฌ์คํธ์์ ์ด ๋ฌธ์ ์ ๋ํด ์ดํด๋ณด๊ฒ ๋ค.