예전 자유 게시판
루아 번역서 오타 신고 및 질문^^
리안 2007-03-05 00:03
p.261쪽 4번째 줄에
"만일 이웃 노드의 것이 더 작으면 크면 이웃 노드의..."
이것을
"만일 이웃 노드의 것이 더 크면 이웃 노드의..."
이렇게 고쳐야 할거 같습니다.^^
질문은 책에 나온 A* 알고리즘 기본적 과정중 8번을 보면 '현재노드의 G값'과 열린 목록에 존재하는 '이웃 노드의 G값'을 비교한다고 하는데요. 실제 코드를 보면
newG = '현재 노드의 G값' + '현재 노드에서 이웃 노드까지의 G값'
이 'newG 값'과 '이웃 노드의 G값'을 비교해서 newG 값이 적을 때 갱신을 하고 있습니다.
코드는 잘 동작하는 것으로 봐서 설명이 잘못된거 같습니다.^^
또 한가지 헷갈리는 것이 p.269쪽의 설명을 보면
".. 이 노드(이웃 노드)의 G값이 현재 노드보다 더 우월한지 판정한다. 더 우월하다면 열린 목록에서 부모 관계를 갱신한다."
이렇게 나오는데 저는 여기서 '우월하다'라는 표현을 G값이 보다 작은 것이라고 해석했습니다.
왜냐하면 G값이 작은 것이 더 나은 경로일 테니까요. 그래서 이웃 노드의 G값이 작을 때 갱신을
한다고 해석이 되고 그러면 코드와는 정반대가 되버려서 헷갈리더군요^^
이 부분에 대한 설명 부탁드립니다~^^
류광 2007-03-06 01:03
보고 고맙습니다~
코드의 newG는 이웃노드의 G 값인 것 같습니다. 현재 노드의 G 값 더하기 현재 노드에서 이웃노드로의 비용(10 아니면 14)이니까요... 그렇게 봤을 때 p.261은 이웃 노드의 것이 더 "작으면"이 되어야 코드와 일치합니다.
p.269는, 짐작하신 대로 작은 것이 우월한 것입니다. 다른 책에서는 "비용이 싸다" 같은 식으로 표현하기도 합니다.
좀 더 확인해보고 정오표를 갱신하겠습니다...