Balloon208 / Simple_Astar_Project

Simple Project using A* algorithm
0 stars 0 forks source link

Day 4 - Test Case 여러개 작성해 보기 #3

Open Balloon208 opened 9 months ago

Balloon208 commented 9 months ago

테스트 케이스를 여러 개 짬으로써, 제가 구현한 A* 알고리즘의 반례나 한계점을 찾아보기 위함입니다.

2는 시작점이고, 3은 도착점이며, 시작점과 도착점은 각각 1개씩만 있어야 합니다.

0은 빈 공간이며, 1은 벽(장애물) 입니다.

입력은 다음과 같은 예시로 작성하시면 됩니다.

4 8
1 0 0 1 0 0 0 0
0 1 0 1 0 1 0 0
0 1 0 0 0 1 0 0
2 0 0 0 0 1 0 3

출력

10010*00
0101*1*0
010*010*
***0010*

주의 : 맵을 그릴 때, 숫자간의 띄어쓰기는 필수입니다.

Balloon208 commented 9 months ago

Q1.

1 0
0 1

상태에서

1 *
* 1

으로 지나가집니다. 사선으로 되어있는 벽으로 생각이 되는데, 막아야 할까요?

Balloon208 commented 9 months ago

Q2.

1 0
0 0

상태에서

1 *
* 0

으로 갈지

1 *
* *

으로 갈지 고민입니다.

Balloon208 commented 9 months ago

전체에 관한 해답 Q1

Q2 위의 경우로 할 경우, 대각선의 else if 문을 다음과 같이 수정합니다.

else if(!closedlist[ny][nx] && isUnBlocked(map, ny, nx) && (isUnBlocked(map, y, nx) || isUnBlocked(map, ny, x)))

아래의 경우로 할 경우, 대각선의 else if과 도착 조건문을 다음과 같이 수정합니다.

// 도착 조건 문
if(isDestination(ny, nx, dst) && (isUnBlocked(map, y, nx) && isUnBlocked(map, ny, x)))
// 대각선
else if(!closedlist[ny][nx] && isUnBlocked(map, ny, nx) && (isUnBlocked(map, y, nx) && isUnBlocked(map, ny, x)))

현재 어떤 방식으로 할 지 고민중입니다.

Balloon208 commented 9 months ago
// 도착 조건 문
if(isDestination(ny, nx, dst) && (isUnBlocked(map, y, nx) && isUnBlocked(map, ny, x)))

을 사용하기로 결정했습니다!