๐ ๋ฌธ์
๐ญ ์๊ฐ์ ํ๋ฆ
์ผ๋จ ๋ฌธ์ ์์ฒด์์ DFS๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ดํด์ ํ์ํ๋ผ๊ณ ํ๋ค.
์ ์์ ์ธ DFS recursive function์ ์์ฑํ๊ณ ์ฌ์ดํด ์๊ธฐ๋ ์์ ์ true๋ง ๋ฆฌํดํ๋ฉด ๋๋ค๊ณ ์๊ฐํ๋ค.
Q. ์ฌ์ดํด์ด ์๊ธฐ๋ ์์ ์ด ์ธ์ ์ธ๊ฐ?
A. BackEdge (๋ถ๋ชจ๋ ธ๋ ์ด์ธ์ ๋ ธ๋์ ์ฐ๊ฒฐ๋๋ ์ ์ด ๋ฐ๊ฒฌ๋๋ ์์ )
๋ฐ๋ผ์ visited (๋ฐฉ๋ฌธ ๊ธฐ๋ก) ๋ฐฐ์ด์ ๋๊ณ
visited ์์ ๋ฐฉ๋ฌธ๋ ์ํ๋ก ๊ธฐ๋ก๋์์ผ๋ฉด์ parent ๋ ธ๋๊ฐ ์๋ ๋ ธ๋๋ก ์ฐ๊ฒฐ๋์์ ๊ฒฝ์ฐ ๋ฐ๋ก true (์ฌ์ดํด์ด ์กด์ฌ)๋ฅผ ๋ฆฌํดํ๋๋ก ํ๋ค.
โ ๏ธ ์ค์
์๋ ๊ทธ๋ฆผ ์ฒ๋ผ ๊ทธ๋ํ๊ฐ 2๊ฐ ์ด์ ์ฃผ์ด์ง ์๋ ์๋ค.
๋ฌธ์ ๋ฅผ ๋๊น์ง ์ฝ์ด๋ณด๋ฉด ๋ค์์ ๊ทธ๋ํ๋ฅผ input์ผ๋ก ์ฃผ๊ณ 1๊ฐ๋ผ๋ ์ฌ์ดํด์ด ์กด์ฌํ๋ฉด true๋ฅผ ๋ฆฌํดํ๋๋ก ์๊ตฌํ๋ค.
visited ์์ ๋ฐฉ๋ฌธ๋ ์ํ๋ก ๊ธฐ๋ก๋์์ผ๋ฉด์ parent ๋ ธ๋๊ฐ ์๋ ๋ ธ๋๋ก ์ฐ๊ฒฐ๋์์ ๊ฒฝ์ฐ ๋ฐ๋ก true (์ฌ์ดํด์ด ์กด์ฌ)๋ฅผ ๋ฆฌํดํ๋๋ก ํ๋ค.
=> ์ด ๋ฐฉ์์ด ํ๋ฆฐ๊ฒ์ ์๋๋ ํ๋๋ผ๋ true๋ฅผ ๋ฆฌํดํ๋ค๋ฉด ๋๋จธ์ง ์์ ์ ๋์ด์ DFS ํ์์ ํ ํ์๊ฐ ์๋ค.
๋ฐ๋ผ์ sub graph DFS loop ์์์ ํ๋๋ผ๋ true๊ฐ ์๋ณ๋ ๋ return trueํ๋๋ก ์ฝ๋๋ฅผ ๊ฐ์ ํด์ผํ๋ค.
๋ชจ๋ ๋ ธ๋์ ๋ํด ํ์์ ์๋ํ๋ค๊ฐ ์๊ฐ ์ด๊ณผ๋ฅผ ๋ง์๋ค ใ กใ ใ ก.
๐ ํ์ด
'Algorithm > Algorithm (๋ฌธ์ ํ์ด)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[GeeksForGeeks] Detect Cycle in a directed graph (0) | 2021.02.05 |
---|---|
[GeeksForGeeks] Topological Sort using Kahn's Algorithm (0) | 2021.02.04 |
[Programmers] ๊ฐ์ฅ ํฐ ์ (0) | 2021.01.11 |
[Programmers] N๊ฐ์ ์ต์๊ณต๋ฐฐ์ (0) | 2021.01.11 |
[Programmers] 124 ๋๋ผ์ ์ซ์ (0) | 2021.01.04 |