1. 휴리스틱 탐색
    1. 해답을 구하기 위해 솔루션 공간을 탐색할 때 사용하는 기법
    2. 기존의 깊이우선탐색(DFS), 너비우선탐색(BFS) 등의 방법은 해답을 구하기까지 많은 시간 소요
    3. 경험에 따라 명백히 잘못된 방안을 제거해 탐색 공간을 좁혀가는 방법, 여기서 경험이 휴리스틱임
    4. 휴리스틱(heuristic)을 적용하여 탐색 속도를 향상
    5. 주어진 정보나 규칙을 이용해 불필요한 경로를 걸러내는 정보 탐색(information search) 방법
  2.  A*(A star) 알고리즘
    1. 휴리스틱 탐색 방법 중 하나
    2. 시작 위치에서 목적지까지의 최소 비용이 드는 경로를 찾아가지 위해 3개의 함수 사용
    3. 함수 1 : G(x) = 시작 위치로부터 현재까지 소요되는 비용
    4. 함수 2 : H(x) = 현재위치에서 목적지까지의 예상 비용
    5. 함수 3 : F(x) = G(x) + H(x) ; 현재까지의 비용과 예상비용의 합
  3. 미로찾기에 사용되는 그래프이론 : URL      Sample,
  4. 미로 찾기에 A* 적용 과정 : 상하좌우의 4방향 이웃만 사용.

    opened_list = (                                                                    )
    closed_list = (                                                                      )

    1. 시작 위치를 opened_list에 추가
    2. opened_list에 노드가 없을 때까지 반복
      1. opened_list에서 F가 가장 작은 노드(cur_node)를 가져옴
      2. cur_node를 opened_list에서 삭제
      3. cur_node를 closed_list에 추가
      4. 목적지에 도착하면 경로를 추출한 후 리턴
        1. 현재 노드가 None이 될 때까지 반복
          1. path에 현재 노드의 위치 저장
          2. 현재 노드를 현재 노드의 부모로 변경
        2. path 리턴
      5. cur_node의 상하좌우의 G,H,F를 구함
        1. 상하좌우의 위치가 벽이거나 미로 밖이면 생략
        2. 상하좌우의 위치가 closed_list에 있으면 생략
        3. 상하좌우의 위치가 opened_list에 있고 기존 노드보다 G가 작다면 새 값으로 교체
  5. 미로 찾기에 A* 적용 과정 : 상하좌우/대각선4개 모두 8방향 이웃 사용
  6. A* 알고리즘을 직접 구현하여 미로 찾기
    1. 미로 만들기 : 제공된 엑셀파일을 이용하여 미로 만들기
    2. 파이썬으로 미로 출력하기
    3. Node 클래스 생성 : 맨 앞쪽에 추가하고 이전 코드 MAP과는 2줄 띄기
    4. get_location(maze, v) 메소드 추가 : Node 클래스 아래에 추가(2줄 띄기)
    5. astar() 메소드 추가 : get_location(maze, v) 메소드 아래에 추가(2줄 띄기)
    6. astar()를 호출하고 결과를 생성하는 코드 추가
    7. 실행 결과
    8. 전체 코드

       
error: Content is protected !!