-
Heuristic 과 Relaxed problem인공지능 2020. 10. 17. 20:50728x90
Heuristic
8-퍼즐을 푸는데 보통 22 step 정도가 필요하며 branching factor 는 평균 3이 됩니다. 가운데에 있을 때는 상하좌우 다 갈 수 있지만 구석에 있을 때는 Action 의 방향에 제약이 생기기 때문입니다. tree search 의 경우 3 ^ 22 개의 노드를 방문해야하며 이는 10 ^ 10에 달하는 큰 수입니다.
그래프 서치에도 170,000개 정도 되며 15퍼즐만 되어도 10^13 개가 됩니다.
두 개의 Admissible heuristics 를 제시합니다.
-
h1 = 잘못 위치된 타일의 수
-
h2 = 잘못 위치된 타일의 위치와 정상 위치와의 맨해튼 거리의 합
위 사진에서 start state 의 h1 = 8, h2 = 18 입니다.
비교
IDS와 A*(h1), A*(h2) 를 비교해보겠습니다.
공정한 비교를 위해 solution depth 가 2, 4, 6, …, 24 인 문제를 각 100개씩 만들어 시뮬레이션하고, 그 평균값을 비교합니다.
IDS 탐색법은 depth 가 12 이상인 문제들부터는 시간이 너무 오래걸려 풀기 어려운 모습을 보입니다.
A* 끼리도 h2 휴리스틱을 쓴 탐색이 h1 보다 더 효율적인 모습을 보입니다.
h2 는 언제나 h1 보다 더 좋은 결과를 내놓으며 이를 h2가 h1을 dominate (지배)했다. 라고 말합니다.
즉, h2 는 절대 h1이 expand 한 노드 수보다 많은 노드 수를 expand 할 수 없다는 것을 말합니다.
증명
f(n) < C* 인 모든 노드는 expand 됩니다.
f(n) = g(n) + h(n) < C*
h(n) < C* - g(n)
h1 을 이용한 A* 는 h2 를 이용한 A*가 만들어낸 모든 노드를 만들어냅니다.
왜냐하면 h1(n) <= h2(n) < C* - g(n) 이기 때문입니다.
Relaxed(simplified) problem
위에서 정의했던 h1과 h2 는 heuristic 이지만 이것 자체가 원래 문제를 변형한 문제에서는 정답이 될 수 있습니다.
그러한 변형 문제를 Relaxed problem 이라고 합니다.
예를 들면
-
h1 : 8 퍼즐 문제에서 타일을 뜯고, 겹치는 식으로 해서 아무데나로 바로바로 옮길 수 있는 변형문제
-
h2 : 어느 방향으로나 빈칸인지 아닌지에 상관 없이 옮길 수 있는 변형문제
에서의 정답이 될 것입니다.
Relaxed problem 은 원래 문제의 state space 에 edge를 추가합니다. 여기서 edge 는 action을 의미합니다.
당연하게도 원래 문제는 Relaxed problem 보다 풀기 어렵기에 원래 문제의 정답은 Relaxed problem 의 정답이기도 합니다.
하지만 변형 문제는 좋은 action을 갖고 있기 때문에 더 좋은 solution 을 갖고 있으며 이는 원래 문제의 heuristic 으로 쓰일 수 있습니다.
이를 위해서는 문제 정의를 위한 formal language 언어가 필요합니다.
n-puzzle 문제의 경우
-
아래 조건을 만족시킨다면 타일은 위치 A에서 위치 B로 이동할 수 있습니다.
-
A와 B는 가로나 세로로 인접해있습니다.
-
B는 빈칸입니다.
-
3가지 relaxed problem 파생 가능
-
B가 빈칸이 아니여도 인접하기만 하면 이동할 수 있습니다. : h2
-
B가 인접하지 않더라도 빈칸이기만 하면 이동할 수 있습니다. : h3
-
B가 어떻든간에 무조건 이동할 수 있습니다. : h1
단 Relaxed problem 이 원래 문제의 heuristic 이 되려면 그 문제가 굉장히 쉽고 빠르게 풀릴 수 있는 Relaxed problem 이여야합니다.
왜냐하면 heuristic 으로 쓰려고 푸는 문제가 오래걸려버리면 배 보다 배꼽이 더 커질 수 있기 때문입니다.
'인공지능' 카테고리의 다른 글
Local search, Hill-climbing search (0) 2020.10.17 AI heuristic sub problem, Learning (0) 2020.10.17 AI Informed search, Greedy Best-first Search, A* Serach (0) 2020.10.17 Iterative deepening DFS, Bidirectional Search (0) 2020.10.17 AI DFS, Depth-Limited-Search (0) 2020.10.17 -