๐[Search] ๋ฐฑํธ๋ํน์ ๋ํด์โฆ
๋ฐฑํธ๋ํน์ด๋?
๋ฐฑํธ๋ํน(Back Tracking)
์ด๋, ํด๊ฒฐ์ฑ
์ ๊ตฌํ๊ธฐ ์ํด ๋ชจ๋ ๊ฐ๋ฅ์ฑ์ ์๋ํด๋ณด๋ ๊ฒ์ด ์๋๋ผ, ํด๊ฒฐ์ฑ
์ ๋ํ ํ๋ณด๊ตฐ์ ๊ตฌ์ฑํ๊ณ ๊ทธ ํ๋ณด๊ตฐ์ด ๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋์ง ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํด๊ฐ๋ฉฐ ํด๋ต์ ์ฐพ์๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. (Notion AI ์ค๋ช
)
๋ํ์ ์ธ ๋ฌธ์ ๋ก โ์ค๋์ฟ โ, โN-Queenโ, โ์ํธํด๋
โ ๋ฑ์ด ์๋ค.
์ฆ, ๋ฐฑํธ๋ํน์ ํด๋ฅผ ์ฐพ๋ ๋์ค ๋งํ๋ฉด ๋๋์๊ฐ์ ๋ค์ ํด๋ฅผ ์ฐพ๋ ๋ฐฉ์์ด๋ค.
์ต์ ํ ๋ฌธ์
ํน์๊ฒฐ์ ๋ฌธ์
์์ ๋ง์ด ์ฌ์ฉํ๋ค.
๋ฐฑํธ๋ํน์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ?
for
๋ฌธ์ผ๋ก๋ ํ์ธ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ์ ์ฉํ๋ฉด ๋๋ค.
๋ฌด์จ ๋ง์ด๋? ๊น์ด๊ฐ ๋ฌ๋ผ์ง ๋ ์ฌ์ฉํ๋ฉด ๋๋ค. (์ ํ๋ธ - ๊ฐ๋ฐ์ ์ฅ๊ณ )
๋ฐฑํธ๋ํน์ ํน์ง
- ์ด๋ค ๋
ธ๋์ ์ ๋ง์ฑ์ ์ ๊ฒํ ํ์ ์ ๋งํ์ง ์๋ค๊ณ ํ๋จ๋๋ฉด ๊ทธ ๋
ธ๋์ ๋ถ๋ชจ๋ก ๋๋์๊ฐ ๊ทธ ๋ค์ ์์ ๋
ธ๋๋ฅผ ํ์ํ๋ค.
- ์ ๋ง์ฑ: ํด๋ต์ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒฝ์ฐ๋ฅผ ์ ๋งํ๋ค๊ณ ํจ.
- ์ด๋ค ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ์ ๋, ๊ทธ ๋ ธ๋๋ฅผ ํฌํจํ ๊ฒฝ๋ก๊ฐ ํด๋ต์ด ๋ ์ ์์ผ๋ฉด ๊ทธ ๋ ธ๋๋ ์ ๋งํ์ง ์๋ค.
- ๊ฐ์ง์น๊ธฐ ์ฌ์ฉ ๊ฐ๋ฅํ. (์ ๋งํ์ง ์์ ๋ ธ๋๊ฐ ํฌํจ๋๋ ๊ฒฝ๋ก๋ ๊ณ ๋ คํ์ง ์๋ ๊ธฐ๋ฒ์)
- ๊ธฐ๋ณธ์ ์ผ๋ก
์ฌ๊ท
์ ์ฑ๊ฒฉ์ ๋๋ ํํ.
๋ฐฑํธ๋ํน๊ณผ DFS์ ์ฐจ์ด์
๋ฐฑํธ๋ํน
- ์ด๋ค ๋ ธ๋์ฃ ์ถ๋ฐํ๋ ๊ฒฝ๋ก๊ฐ ๊ทธ ํด๊ฒฐ์ฑ ์ผ๋ก ์ด์ด์ง ๊ฒ ๊ฐ์ง ์์ผ๋ฉด ๋ ์ด์ ๊ฒฝ๋ก๋ฅผ ํ์ํ์ง ์์ -> ํ์ ๊ฐ์
- ๋ถํ์ํ ๊ฒฝ๋ก์ ์กฐ๊ธฐ ์ฐจ๋จ
- N! ๊ฐ์ง์ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ฐ์ง ๋ฌธ์ ์ ๋ํด ๋ฐฑํธ๋ํน์ ์๋ํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๊ฒฝ์ฐ์ ์๊ฐ ์ค์ด๋ค์ง๋ง, ์ต์ ์ ๊ฒฝ์ฐ์๋ ์ฒ๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํด์ง
- ๋ชจ๋ ํ๋ณด๋ฅผ ๊ฒ์ฌํ์ง ์์
DFS
- ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ์ถ์ ํจ
- N! ๊ฐ์ง์ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ฐ์ง ๋ฌธ์ ์ ๋ํด DFS๋ฅผ ์ด์ฉํ๋ฉด ์ฒ๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํจ
- ๋ชจ๋ ํ๋ณด๋ฅผ ๊ฒ์ฌํจ
์๋ ์ฝ๋
def ์ฌ๊ทํจ์(n):
if ์ ๋ต์ด๋ฉด :
์ถ๋ ฅ or ์ ์ฅ
else : ์ ๋ต์ด ์๋๋ฉด :
for ๋ชจ๋ ์์ ๋
ธ๋์ ๋ํด์:
if ์ ๋ต์ ์ ๋งํ๋ค๋ฉด(๋ต์ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฉด) :
์์๋
ธ๋๋ก์ด๋
์ฌ๊ทํจ์(n+1)
๋ถ๋ชจ๋
ธ๋๋ก ์ด๋
๋ฐฑํธ๋ํน์ ๊ฒฝ์ฐ, ์ ๋ง ์กฐ๊ฑด
์ ๋ฐ๋ก ํจ์๋ก ๋ง๋ค์ด์, ์๋์ ๊ฐ์ด ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค๊ณ ํ๋ค.
def ๋ฐฑํธ๋ํน(n):
if ์ ๋ต์ด๋ฉด :
์ถ๋ ฅ or ์ ์ฅ
else :
for ๋ชจ๋ ์์ ๋
ธ๋์ ๋ํด :
if ์ ๋งํ์งํ์ธ(m) :
์์๋
ธ๋๋ก ์ด๋
๋ฐฑํธ๋ํน(n+1)
๋ถ๋ชจ๋
ธ๋๋ก ์ด๋
def ์ ๋งํ์งํ์ธ(m):
if ์กฐ๊ฑด์ ์๋ง์ผ๋ฉด :
return False
return True
์ถ์ฒ: https://edder773.tistory.com/75 [๊ฐ๋ฐํ๋ ์ฐจ๋ฆฌ์ ๊ณต๋ถ ์ผ๊ธฐ:ํฐ์คํ ๋ฆฌ]
์ฐธ๊ณ ์๋ฃ
[ํ์ด์ฌ] ํ์ ์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ - ๋ฐฑํธ๋ํน
์ฝ๋ฉํ
์คํธ ์๊ณ ๋ฆฌ์ฆ - 3. ๋ฐฑํธ๋ํน
๋๊ธ๋จ๊ธฐ๊ธฐ