예전 자유 게시판

루아 번역서 오타 신고 및 질문^^

리안 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는, 짐작하신 대로 작은 것이 우월한 것입니다. 다른 책에서는 "비용이 싸다" 같은 식으로 표현하기도 합니다.

좀 더 확인해보고 정오표를 갱신하겠습니다...