Backtracking
Backtracking ๊ฐ๋
์ฌ๋ฌ ๊ฐ์ง ์ ํ์ง๋ค์ด ์กด์ฌํ๋ ์ํฉ์์ ํ๊ฐ์ง๋ฅผ ์ ํ
์ ํ์ด ์ด๋ฃจ์ด์ง๋ฉด ์๋ก์ด ์ ํ์ง๋ค์ ์งํฉ์ด ์์ฑ๋จ
์ด๋ฐ ์ ํ์ ๋ฐ๋ณตํ๋ฉด์ ์ต์ข ์ํ์ ๋๋ฌ
์ฌ๋ฐ๋ฅธ ์ ํ์ ๊ณ์ํ๋ฉด ๋ชฉํ ์ํ(goal state)์ ๋๋ฌํ๋ค!
Backtracking๊ณผ DFS์ ์ฐจ์ด
์ด๋ค node์์ ์ถ๋ฐํ๋ ๊ฒฝ๋ก๊ฐ ํด๊ฒฐ์ฑ ์ผ๋ก ์ด์ด์ง ๊ฒ ๊ฐ์ง ์์ผ๋ฉด ๋ ์ด์ ๊ทธ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ๊ฐ์ง ์์์ผ๋ก์จ ์๋์ ํ์๋ฅผ ์ค์
Prunning (๊ฐ์ง์น๊ธฐ)
DFS๊ฐ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ์ถ์ ํ๋๋ฐ ๋นํด Backtacking์ ๋ถํ์ํ ๊ฒฝ๋ก๋ฅผ ์กฐ๊ธฐ์ ์ฐจ๋จํจ
DFS๋ฅผ ํ๊ธฐ์๋ ๊ฒฝ์ฐ์ ์๊ฐ ๋๋ฌด ๋ง์ ๋
N! ๊ฐ์ง์ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ฐ์ง ๋ฌธ์ ์ ๋ํด DFS๋ฅผ ํ๋ฉด ์ฒ๋ฆฌ ๋ถ๊ฐ๋ฅํ๋ค
Back Tracking ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๊ฒฝ์ฐ์ ์๊ฐ ์ค์ด๋ค์ง๋ง, ์ด ์ญ์ ์ต์ ์ ๊ฒฝ์ฐ์๋ ์ฌ์ ํ ์ง์ํจ์ ์๊ฐ (Exponential Time)์ ์ํ๋ฏ๋ก ์ฒ๋ฆฌ ๋ถ๊ฐ๋ฅ
Root node์์ Leaf node ๊น์ง์ ๊ฒฝ๋ก๋ ํด๋ต ํ๋ณด (candidate solution)๊ฐ ๋๋๋ฐ, DFS๋ฅผ ํ์ฌ ๊ทธ ํด๋ต ํ๋ณด ์ค์์ ํด๋ต์ ์ฐพ์ ์ ์์
but, ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ํด๋ต์ด ๋ ๊ฐ๋ฅ์ฑ์ด ์ ํ ์๋ node์ ์์ node (descendant) ๋ค๋ ๋ชจ๋ ๊ฒ์ํด์ผ ํ๋ฏ๋ก ๋นํจ์จ์
Backtracking ๊ธฐ๋ฒ
์ด๋ค node์ ์ ๋ง์ฑ์ ์ ๊ฒํ ํ์ ์ ๋ง(promising) ํ์ง ์๋ค๊ณ ๊ฒฐ์ ๋๋ฉด ๊ทธ node์ ๋ถ๋ชจ๋ก ๋๋์๊ฐ์ (
backtracking
) ๋ค์ ์์ node๋ก ๊ฐ์ด๋ค node๋ฅผ ๋ฐฉ๋ฌธํ์์ ๋
๊ทธ node๋ฅผ ํฌํจํ ๊ฒฝ๋ก๊ฐ ํด๋ต์ด ๋ ์ ์์ผ๋ฉด ๊ทธ node๋ ์ ๋งํ์ง ์๋ค๊ณ ํจ
ํด๋ต์ด ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ช ์ ๋งํ๋ค๊ณ ํจ
๊ฐ์ง์น๊ธฐ (prunning)
: ์ ๋งํ์ง ์์ node๊ฐ ํฌํจ๋ ๊ฒฝ๋ก๋ ๋ ์ด์ ๊ณ ๋ คํ์ง ์๋๋ค
Backtracking์ ์ด์ฉํ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฐจ
์ํ ๊ณต๊ฐ ํธ๋ฆฌ์ DFS (๊น์ด ์ฐ์ ๊ฒ์)์ ์ค์ํ๋ค
๊ฐ node๊ฐ ์ ๋งํ์ง๋ฅผ ์ ๊ฒํ๋ค
๋ง์ผ ๊ทธ node๊ฐ ์ ๋งํ์ง ์์ผ๋ฉด, ๊ทธ node์ ๋ถ๋ชจ node๋ก ๋์๊ฐ์ ๊ฒ์์ ๊ณ์ํ๋ค
N-Queen ๋ฌธ์
SWEA 2806
Subset
๋ถ๋ถ์งํฉ ๊ตฌํ๊ธฐ
ex)
Space State Tree๋ฅผ ๊ตฌ์ถํ์ฌ ๋ฌธ์ ํด๊ฒฐํ๊ธฐ
Backtracking์ ์ด์ฉํ์ฌ ์์ด ๊ตฌํ๊ธฐ
์ ๊ทผ ๋ฐฉ๋ฒ์ ๋ถ๋ถ์งํฉ ๊ตฌํ๋ ๋ฐฉ๋ฒ๊ณผ ์ ์ฌ
ex)
Last updated
Was this helpful?