공부/Algorithm 6

JPS(Jump Point Search) Algorithm

게임업계에서 길찾기 알고리즘에 많이 사용된다는 JPS알고리즘을 공부했다. JPS알고리즘은 A* 알고리즘과 유사하지만 대부분의 경우 A* 알고리즘보다 성능이 좋다고 한다. 우선 JPS의 핵심은 Jump Point를 찾는 것인데 그 Jump Point만 열린 목록에 넣고 A*에서 하듯이 비용을 검사한다. 당연히 A*처럼 가능한 모든 경로에 있는 노드들을 열린 목록에 넣고 검사하는 것이 아니라 비용이 더 적다. Jump Point를 찾는 방법은 2가지가 있는데 첫번째 방법은 Jumping Straight경우를 살펴보는 것이다. Jumping Straight Figure(a)가 Jumping Straight Case이다. p(x)는 x의 부모이다. p(x) 기준으로 상하좌우 중에서 오른쪽으로만 갈 수 있으니 오..

공부/Algorithm 2022.02.17

마스터 정리(Master Method), Big-Oh, Theta, Omega Notation

시간 복잡도가 점화식으로 정의될 때, 마스터 정리를 이용해서 시간 복잡도를 계산할 수 있다. 마스터 정리와 마스터 정리의 사용 조건에 대해 간단히 정리해보자. 마스터 정리 조건 시간 복잡도 T(n) = aT(n/b) + f(n)으로 정의될 때, f(n)이 다항식(polynomial function)이어야 한다 a >=1 && b >=1 인 양의 실수이어야 한다. 그 말은 즉 문제를 분할 했을 때 더 작은 문제가 되어야 한다는 의미이다. 만약 b가 1보다 작은 양의 실수면 문제를 분할했을 때 더 큰 문제가 되므로 안된다 정규 조건(Regularity Condition)을 의미하는 a*f(n/b)

공부/Algorithm 2021.08.07