정사각형지도가 있습니다. 수평 및 수직 이동 만 허용됩니다 (대각선 없음). 이동 비용은 항상 1입니다.
맨해튼 거리 를 거리 휴리스틱으로 사용하여 해당 맵에서 A * 알고리즘을 구현 하고 있습니다. 이 휴리스틱은 일관됩니까? g(node)
CLOSED 세트에있는 노드에 대한 점검 을 피할 수 있습니까 ?
편집 : 일관성으로 나는 단조로운 것을 의미합니다.
정사각형지도가 있습니다. 수평 및 수직 이동 만 허용됩니다 (대각선 없음). 이동 비용은 항상 1입니다.
맨해튼 거리 를 거리 휴리스틱으로 사용하여 해당 맵에서 A * 알고리즘을 구현 하고 있습니다. 이 휴리스틱은 일관됩니까? g(node)
CLOSED 세트에있는 노드에 대한 점검 을 피할 수 있습니까 ?
편집 : 일관성으로 나는 단조로운 것을 의미합니다.
답변:
실제로 귀하의 질문에 대답하기 위해 : 가중 그리드를 따라 수직 / 수평으로 이동하도록 제한 되어 있을 때 manhatten 거리가 일관 됩니다 (wikipedia의 정의에 쉽게 표시 될 수 있음) . 따라서 귀하의 경우 닫힌 세트에서 노드를 다시 확인하지 않아도됩니다.
그러나 대각선 또는 모든 각도 이동을 허용하면 대각선 거리를 과대 평가하기 때문에 Manhatten 거리가 허용 되지 않습니다. 이는 반드시 일관성이 없음을 의미합니다.
h(x) = min(manhattan(p1), manhattan(p2))
(즉, p1 또는 p2가 좋은 종료 점이고 가장 가까운 도달점에 도달하려는 경우) 어떻게되는지 아는 것이 좋을 것 입니다. 이것은 h(x)
여전히 단조로운가?
h(x, p1)
와 h(x, p2)
일치하고 min(h(x,p1), h(x,p2))
도 일치합니다. 이 위키 피 디아의 정의에서 보여 쉽게 (우리는 것을 보여해야합니다 min(h(x, p1), h(x, p2)) <= distance(x,y) + min(h(y, p1), h(y, p2))
모든 노드 x
와 y
. 그들 사이의 가장자리 이제 가정 h(x, p1)
최소한, 당신이 확실히 있다고 보여줄 수있는 <=
사실이를 사용하여, 오른쪽 두 휴리스틱이 일관됩니까?)
예, 두 점 사이의 맨하탄 거리는 항상 두 점 사이의 일반 거리와 같습니다. 맨해튼 거리는 두 점 사이를 잇는 선의 X 및 Y 구성 요소라고 생각할 수 있습니다.
이 이미지 ( Wikipedia )는 이것을 잘 보여줍니다.
녹색 선은 실제 거리입니다.
청색 , 적색 및 황색 라인 모두 동일한 맨해튼 거리 (12 단위)를 나타낸다. 왼쪽 아래에서 오른쪽 아래로 이동 하는 움직임의 위와 오른쪽의 조합에 관계없이 동일한 총 맨해튼 거리를 얻게됩니다.
h(x) = 1000
, 이는 일관성이 없다) . 그는 수 의 노드를 다시 검사하지 않도록하지만, Manhatten에 거리가 일치하는 경우에만 있기 때문에,이 답변이 표시되지 않는다.
2*manhatten
이를 만족하지만 일관성이 없습니다.
Byte56의 대답의 확장에서 나는 특정 데이터 세트에서 사용하는 것을 지적하고 싶습니다 맨하탄 거리를 당신의 휴리스틱 함수로하는 것은 실제로 항상있을 것입니다 완벽한 발견 이 항상 반환한다는 점에서 실제 경로 비용 이 가정 ( 경로를 "차단"하는 것은 없습니다).
또한 올바른 방향 (수평 또는 수직)의 모든 노드는 목표에 동일한 경로가 많기 때문에 동일한 예상 거리를 산출합니다. 우선 순위 대기열 (오픈 세트)은 우선 순위가 묶인 경우 가장 최근에 추가 된 노드를 먼저 큐에서 제거해야합니다 (LIFO-Last In First Out). 그렇게함으로써 최적의 경로로 끝나는 노드 만 검사합니다 . FIFO (선입 선출) 방식으로 동일하게 적합한 노드를 검사 하면 최상의 경로에 속하는 모든 노드를 효과적으로 검사 하게 됩니다. 목표 노드에 동일한 경로가 여러 개 있기 때문에이 문제가 발생합니다.
"항상"일관성이 무엇을 의미하는지 잘 모르겠습니다. 고정 그리드에서 맨해튼 거리가 경로와 무관합니까? 예, Byte56의 답변이 말했듯이.
그러나 예를 들어 맨해튼 거리는 회전시 변하지 않습니다. 예를 들어, 원점과 점 사이 의 맨해튼 거리 ( L1-norm ) (10,10)
는 |10-0| + |10-0| = 20
입니다. 그러나 좌표를 45도 회전하면 (고정 점이 그리드의 방향 중 하나를 따릅니다) 이제 같은 점이에 (10sqrt(2),0)
있고 맨해튼의 원점과 거리가 10sqrt(2)~14.14
있습니다.