정보 검색(Informed Search) 전략은 문제 자체의 정의를 넘어서 문제에 대한 특정 지식을 사용합니다. 이는 목표 상태에 대한 정보를 갖고 있으며, 탐색 과정에서 각 노드의 가치를 평가하여 확장할 노드를 선택합니다. 이는 비정보 검색(Uninformed Search)과 대조적입니다. 비정보 검색은 목표 상태에 대한 정보 없이 가능한 모든 방향으로 탐색을 진행합니다.
최선 우선 탐색(Best-First Search)은 정보 검색의 한 유형입니다. 이는 노드를 확장할 때 평가 함수(𝒇)를 기반으로 노드를 선택합니다. 이 평가 함수는 "비용 추정"을 제공하며, 가장 낮은 평가를 가진 노드가 먼저 확장됩니다. 즉, 가장 유망한 후보 노드를 우선적으로 탐색합니다.
특징:
정보 검색 전략은 탐색 공간을 효율적으로 활용하고 최적의 경로를 찾을 수 있도록 도와줍니다. 그러나 적절한 평가 함수를 설계하는 것이 중요하며, 잘못된 평가 함수는 비효율적인 탐색을 유발할 수 있습니다.
최선 우선 탐색(Best-First Search)은 노드를 평가 함수를 기반으로 우선적으로 확장하는 탐색 전략입니다. 이 평가 함수는 노드의 "원하는 정도"를 추정하는 데 사용됩니다. 탐색은 가장 원하는 정도가 높은, 즉 평가 함수 값이 가장 작은 미확장 노드를 선택하여 확장됩니다.
특징:
최선 우선 탐색은 탐색 과정에서 미래 상태를 가장 잘 예측할 수 있는 방법을 선택하는 것으로, 평가 함수의 설계가 매우 중요합니다. 이 함수는 주어진 문제에 맞춰야 하며, 목표에 가까운 노드를 먼저 확장함으로써 효율적인 탐색을 가능하게 합니다.
탐욕적 최선 우선 탐색(Greedy Best-First Search)은 평가 함수로 휴리스틱 함수 ℎ(𝑛)을 사용하여 노드를 확장하는 최선 우선 탐색의 한 형태입니다. 이 휴리스틱 함수는 노드 𝑛으로부터 가장 가까운 목표까지의 비용을 추정하는데 사용됩니다. 보통 이는 노드와 가장 가까운 목표까지의 거리를 추정합니다. 이러한 휴리스틱은 예를 들어 유클리드 거리나 맨하탄 거리를 사용하여 경로를 측정합니다.
특징:
탐욕적 최선 우선 탐색은 주어진 문제에 대해 상당히 효율적이지만, 잘못된 휴리스틱 함수를 사용할 경우 최적의 해를 보장하지 않을 수 있습니다. 따라서 휴리스틱 함수를 신중하게 선택하고 문제에 적절하게 적용하는 것이 중요합니다.
A 검색(A Search)은 전체 예상 솔루션 비용을 최소화하기 위한 탐색 알고리즘입니다. 이를 달성하기 위해 이미 비용이 높은 경로를 확장하는 것을 피합니다.
특징:
A 검색은 효율적으로 최적의 경로를 찾을 수 있습니다. 그러나 휴리스틱 함수의 선택이 중요하며, 휴리스틱이 실제 비용을 과소평가하지 않도록 주의해야 합니다. 만약 휴리스틱이 너무 낙관적이라면, A 검색은 비효율적인 경로를 선택할 수 있습니다.
여기에 몇 가지 추가 정보가 있습니다:
평가 함수 (Evaluation Function) 설명:
휴리스틱 함수 (Heuristic Function) 설명:
최적성 증명 설명:
"적절성(Admissibility)"은 휴리스틱 함수가 최적의 해를 찾는 것을 보장하는지 여부를 나타냅니다.
비적절성(Inadmissibility): 비적절한 휴리스틱 함수는 최적의 해를 찾지 못할 수 있습니다. 이러한 휴리스틱은 종종 최적의 경로를 놓치거나 부정확한 정보로 인해 잘못된 결정을 내릴 수 있습니다. 비적절한 휴리스틱은 최적성을 보장하지 않으며, 때로는 좋은 계획을 최적의 경로가 아닌 경로에 갇히게 할 수 있습니다.
적절성(Admissibility): 적절한 휴리스틱 함수는 최적의 해를 찾을 수 있는 것으로 입증됩니다. 이러한 휴리스틱은 종종 더 많은 계산 비용을 요구하지만, 최적의 해를 보장하기 위해 실제 비용과 일치하는 것으로 알려져 있습니다. 즉, 적절한 휴리스틱은 항상 실제 비용을 과소 평가합니다.
예시: 예를 들어, 길찾기 문제에서 적절한 휴리스틱은 두 지점 간의 최단 거리를 과소평가하지만, 올바른 경로에 갇히거나 잘못된 결정을 내리지 않고 최적의 경로를 찾을 수 있습니다.
따라서 적절한 휴리스틱은 효율적인 탐색을 지원하면서도 최적의 해를 보장합니다.
A* 검색의 최적성에 대해 좀 더 자세히 설명하겠습니다.
A* 알고리즘의 최적성: A* 검색은 다음과 같은 이유로 최적의 해를 찾을 수 있습니다.
노드 확장 순서: A*는 노드를 확장할 때, 즉시 목표에 도달할 것으로 예상되는 노드부터 먼저 확장합니다. 이는 𝑓(𝑛) 값이 즉시 목표에 도달할 것으로 예상되는 노드에서부터 증가하는 순서로 확장됨을 의미합니다.
𝑓-contours 추가: A*는 최적의 해에 이르는 경로와 그렇지 않은 경로를 분리하기 위해 "𝑓-contours"를 추가합니다. 이러한 contours는 현재까지 확장된 경로의 비용을 나타내며, 최적의 경로를 찾는 데 필요한 최소 비용을 보장합니다.
최적성 증명: A*가 모든 𝑓(𝑛) 값이 최소 경로의 비용보다 작은 노드만 확장하면, 다음 두 가지 사실로부터 최적성이 증명됩니다.
이러한 이유로 A 검색은 최적의 해를 보장할 수 있습니다. 하지만 이러한 최적성은 적절한 휴리스틱 함수를 사용하여 얻어집니다. 휴리스틱 함수가 비적절하게 설계된 경우, A가 최적의 해를 찾지 못할 수 있습니다.
A* 검색의 특징에 대해 자세히 설명하겠습니다.
완전성(Completeness): A* 검색은 목표 상태에 도달할 수 있는 경우에는 항상 해를 찾을 수 있습니다. 다만, 𝑓 값이 목표 상태의 𝑓 값보다 작거나 같은 무한한 수의 노드가 있는 경우에는 완전성을 보장할 수 없습니다.
시간 복잡도(Time Complexity): A* 검색의 시간 복잡도는 휴리스틱 함수의 상대 오차와 해의 길이에 지수적으로 의존합니다. 즉, 휴리스틱 함수가 해의 비용을 얼마나 잘 추정하는지에 따라 시간이 크게 변동할 수 있습니다.
공간 복잡도(Space Complexity): A*는 모든 생성된 노드를 메모리에 유지합니다. 따라서 공간 복잡도는 생성된 노드의 수에 비례합니다.
최적성(Optimality): A 검색은 최적의 해를 보장합니다. 이는 A가 더 나은 해가 있는 경로를 찾을 수 없도록 현재까지 최적의 경로를 발견하기 전에 더 비용이 많이 드는 경로를 확장하지 않기 때문입니다. 즉, A*는 목표 상태에 도달할 때까지 비용이 최적인 경로만을 확장합니다.
따라서 A* 검색은 적절한 휴리스틱 함수를 사용할 경우에는 최적의 해를 보장하며, 완전성을 가지고 있습니다. 그러나 휴리스틱 함수의 품질에 따라 검색의 시간과 공간 복잡도가 크게 달라질 수 있습니다.
일관성(Consistency)은 휴리스틱 함수가 A* 알고리즘이 최적의 경로를 찾는 것을 보장하는 데 기여하는 속성 중 하나입니다. 다음은 일관성의 개념과 그 의미에 대한 설명입니다:
일관성의 정의: 휴리스틱 함수 ℎ(𝑛)가 현재 상태 𝑛에서 가능한 모든 행동을 했을 때 다음 상태 𝑛′까지의 비용에 대한 휴리스틱 예측이 해당 행동의 비용과 함께 고려할 때, 일관성을 갖는다고 말합니다.
수식적 설명: 휴리스틱 함수 ℎ(𝑛)가 일관성을 갖는다면, 𝑛에서 시작하여 어떤 행동을 통해 다음 상태인 𝑛′로 이동했을 때, 그 경로의 비용(𝑓(𝑛′))은 현재 상태의 경로 비용(𝑓(𝑛))보다 크거나 같을 것입니다. 수식적으로는 다음과 같이 나타낼 수 있습니다:
[ \begin{align} \text{If } \quad h(n) &\leq c(n, a, n') + h(n') \ \text{Then } \quad f(n') &= g(n') + h(n') \ &= g(n) + c(n, a, n') + h(n') \ &\geq g(n) + h(n) \ &= f(n) \end{align} ]
의미: 일관성이라는 개념은 A 알고리즘이 최적의 해를 찾는 데 중요한 역할을 합니다. 휴리스틱 함수가 일관성을 갖는다면, A 알고리즘이 확장하는 경로의 비용이 계속 증가하므로, 최적의 해를 찾을 수 있습니다.
따라서 휴리스틱 함수가 일관성을 가질 때, A 알고리즘은 최적의 해를 찾을 수 있으며, 이는 A 알고리즘이 경로를 확장함에 따라 비용이 계속 증가함을 보장합니다.
적절한 휴리스틱 함수(Admissible Heuristics)는 A* 알고리즘이 최적의 해를 찾을 수 있도록 보장하는 휴리스틱 함수입니다. 주어진 문제에 대한 휴리스틱 함수가 적절하려면 다음 조건을 만족해야 합니다:
최적성(Optimality): 휴리스틱 함수는 항상 실제 최적 해의 비용을 과소 평가해야 합니다. 이는 휴리스틱 함수의 값이 실제 해의 비용보다 작거나 같아야 함을 의미합니다.
일관성(Consistency): 휴리스틱 함수는 일관성을 유지해야 합니다. 이는 각 상태에서 가능한 모든 행동의 비용과 함께 다음 상태의 휴리스틱 값이 해당 행동의 비용을 고려할 때 그 상태의 휴리스틱 값보다 작거나 같아야 함을 의미합니다.
주어진 8-puzzle 문제에 대해 두 가지 적절한 휴리스틱 함수 예시가 있습니다:
ℎ1(𝑛) - 타일의 위치가 올바르지 않은 타일의 수: 이 휴리스틱은 현재 상태에서 목표 상태까지 이동하는 데 필요한 최소 횟수를 과소 평가합니다. 따라서 이 휴리스틱은 적절합니다.
ℎ2(𝑛) - 맨하탄 거리의 합: 이 휴리스틱은 현재 위치에서 각 타일이 목표 위치로 이동하는 데 필요한 맨하탄 거리의 총합입니다. 이 휴리스틱 또한 실제 비용을 과소 평가하므로 적절합니다.
따라서 두 휴리스틱 함수 모두 적절하며, A* 알고리즘이 최적의 해를 찾을 수 있도록 보장합니다.
지배(Dominance)는 두 개의 휴리스틱 함수가 주어진 문제에 대해 서로를 비교할 때 사용되는 개념입니다. 다음은 지배의 의미와 관련된 설명입니다:
휴리스틱 함수의 비교: 두 휴리스틱 함수 ℎ1(𝑛)과 ℎ2(𝑛)가 모든 상태 𝑛에 대해 ℎ1(𝑛) ≤ ℎ2(𝑛)를 만족하고, 두 휴리스틱 함수가 모두 적절하다면, ℎ2는 ℎ1을 지배하며 ℎ2가 더 나은 휴리스틱으로 간주됩니다.
효율성 비교: ℎ2가 ℎ1을 지배한다면, A* 알고리즘을 사용하여 ℎ2를 이용한 경우 ℎ1을 이용한 경우보다 더 적은 수의 노드를 확장할 것으로 예상됩니다. 이는 ℎ2가 더 정확하게 실제 최적 비용을 추정하기 때문입니다.
확장된 노드 비교: ℎ2가 ℎ1을 지배한다면, ℎ2를 사용하여 확장된 노드의 모든 하위 집합이 ℎ1을 사용하여 확장된 노드의 하위 집합보다 더 작거나 같습니다. 즉, ℎ2를 사용하여 확장된 모든 노드는 ℎ1을 사용하여 확장된 모든 노드보다 더 비용이 낮거나 동일합니다.
최적성과의 관련: ℎ2가 ℎ1을 지배한다면, ℎ2를 사용하는 A 알고리즘은 ℎ1을 사용하는 A 알고리즘보다 더 적은 수의 노드를 확장하며, 따라서 최적의 해를 더 효율적으로 찾을 수 있습니다.
따라서 휴리스틱 함수를 선택할 때 ℎ2가 ℎ1을 지배하는지 여부를 고려하는 것이 중요합니다. ℎ2가 ℎ1을 지배한다면, 더 나은 휴리스틱 함수로 간주됩니다.
"완화된 문제(Relaxed Problems)"는 휴리스틱 함수를 유도하기 위한 중요한 개념 중 하나입니다. 정확한 해결 방법에서 완화된 문제의 비용을 이용하여 휴리스틱을 도출할 수 있습니다.
예시: 예를 들어, 8-puzzle 문제에서 각 타일이 어디로든 이동할 수 있는 완화된 버전을 고려할 수 있습니다. 이런 식으로 완화된 버전에서 최단 해결 방법을 찾을 수 있습니다.
완화된 문제의 최적 솔루션 비용: 완화된 문제의 최적 솔루션 비용은 실제 문제의 최적 솔루션 비용보다 크지 않습니다. 즉, 실제 문제의 해결 방법을 찾는 것보다 완화된 문제의 해결 방법을 찾는 것이 더 쉬울 수 있습니다. 이를 통해 휴리스틱 함수를 유도할 수 있습니다.
따라서 완화된 문제를 사용하여 휴리스틱을 유도하면 실제 문제에 대한 좋은 휴리스틱을 얻을 수 있습니다. 이는 A* 알고리즘이 최적의 해를 효율적으로 찾는 데 도움이 됩니다.
경험으로부터 휴리스틱을 학습하는 것은 A* 알고리즘이 최적의 해를 찾는 데에 유용한 방법 중 하나입니다. 이를 통해 각 상태의 휴리스틱 값을 추정할 수 있습니다. 이러한 학습 과정은 다음과 같이 진행됩니다:
1. 휴리스틱 함수 정의: 휴리스틱 함수 ℎ(𝑛)는 노드 𝑛의 상태에서 목표 상태까지 이동하는 데 필요한 예상 비용을 추정합니다.
2. 기능 생성: 상태의 관찰을 특징으로 변환하여 입력 기능을 생성합니다. 이것은 각 상태를 설명하는 관찰 데이터로부터 파생됩니다.
3. 모델 구성: 기능과 목표 값(실제 비용 또는 비용의 추정치)을 사용하여 머신 러닝 모델을 구성합니다. 선형 회귀, 의사 결정 트리, 신경망과 같은 다양한 모델을 사용할 수 있습니다.
4. 훈련: 훈련 데이터를 사용하여 모델을 학습시킵니다. 학습 데이터는 각 상태에서 실제 비용이나 비용의 추정치를 포함합니다.
5. 평가: 학습된 모델을 평가하여 예측 정확도를 확인합니다. 이 평가는 테스트 데이터를 사용하여 수행됩니다.
6. 배포: 최종 모델을 사용하여 A* 알고리즘 또는 기타 검색 알고리즘과 통합하여 사용합니다.
이러한 방법을 통해 경험으로부터 휴리스틱을 학습할 수 있으며, 이는 검색 알고리즘이 최적의 해를 효과적으로 찾는 데에 도움이 됩니다. Reinforcement learning과 같은 기계 학습 방법은 더 복잡한 문제에 적용될 수 있으며, 휴리스틱 함수를 더 정교하게 조정할 수 있습니다.