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