큰 나무가 재귀를 사용하여 통과하는 보드 게임 알고리즘에서 작업하고 있지만 예상대로 작동하지 않습니다. 이 문제를 어떻게 처리하며 이러한 상황에서 어떤 경험이 있습니까?깊은 재귀를 디버깅하는 데 도움이되는 유용한 팁이 있습니까?
상황을 악화 시키려면 알파 베타 제거 기능을 사용합니다. 즉, 트리의 전체 부분을 방문하지 않고 특정 조건이 충족 될 때 재귀를 중지하는 것입니다. 결정 깊이있는 동안 검색 깊이에 따라 검색 결과가 달라질 수 있고 검색 깊이가 낮을 때 예상대로 작동 할 수 있기 때문에 검색 깊이를 더 낮은 숫자로 변경할 수 없습니다.
이제 "내 코드에서 문제가있는 곳은 어디입니까?"라고 묻지 않을 것입니다. 하지만 난 일반적인 팁, 도구, 시각화, 아무것도 이런 식으로 코드를 디버깅을 찾고 있습니다. 개인적으로 C#으로 개발 중이지만 모든 도구를 환영합니다. 비록 이것이 명령형 언어에 가장 잘 적용될 수 있다고 생각합니다.
글쎄요,이 시점에서 단위 테스트는 제가 이미 알고있는 것은 작동하지 않는다고 말할 것입니다 : p – JulianR
더 제어 된 방식으로 문제를 해결할 수있게 해주고, 제안. – krosenvold
그리고 단위 테스트를 사용할 때 훨씬 간단한 문제 공간, 아마도 깊이가 2 인 문제를 재현 할 수 있습니다. 로깅이이 스레드의 기본 솔루션 인 것처럼 보이지만 아주 좋은 해결책은 아닙니다. 로깅은 미래에 유용한 정보를 많이 보유하지 않습니다. 테스트 커버리지가 좋으면 로그 범위가 대폭 줄어 듭니다. – krosenvold