GameChoi
Choi Programming
GameChoi
전체 방문자
오늘
어제
  • 분류 전체보기 (468)
    • C++ Algorithm & Study (184)
      • C++ & Algorithm Strategies (45)
      • Game Math & DirectX 11 (72)
      • Server + UE5 (29)
      • Lyra Clone Coding (37)
    • Create Game (284)
      • [Window API] Game Client & .. (55)
      • [DirectX] DirectX 2D & 3D (155)
      • [UE5] BLUEPRINT & C++ (74)
    • odds and ends (0)
      • English (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • protobuf
  • Direct3D
  • Game Room
  • server
  • Player State
  • Destination Move Packet
  • RPG Game
  • Game Server
  • UE5
  • core
  • Network Worker
  • GAME Client
  • job queue
  • client
  • Other Character
  • session
  • Algorithm Strategies
  • c++
  • Direct11
  • Player Move Packet

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
GameChoi

Choi Programming

[Algorithm Strategies] 04. Exhaustive Search - Traveling Sale
C++ Algorithm & Study/C++ & Algorithm Strategies

[Algorithm Strategies] 04. Exhaustive Search - Traveling Sale

2023. 7. 12. 19:56

1. Exhaustive Search

1.1 Traveling Sale - Optimization Problem

1.1.1 Problem

- 어떤 나라에 n개의 큰 도시, 각 도시들은 모두 직선 도로로 연결

   - 한 영업 사원이 한 도시에서 출발해 다른 도시들을 전부 한번 씩 방문한 뒤 시작 도시로 돌아오려고 함

     - 이때 모든 경로 중 가장 짧은 경로로 찾는 방법

1.1.2 Algorithm Strategy

- 나머지 도시들을 모두 방문하는 경로들 중 가장 짧은 것의 길이를 반환

double Exhaustive::shortestPath(vector<int>& path, vector<bool>& visited, double currentLength);

   - 모든 도시를 방문하는 방법 중 가장 거리가 짧은 위치를 찾아 값을 반환

1.1.3 implementation

- 모든 도시들을 방문했을 경우 거리를 반환하고 함수 종료

if (path.size() == n) return currentLength + dist[path[0]][path.back()];

   - 무한대의 값을 설정한 후 n개의 도시들을 돌면서 가장 짧은 거리를 계산

     - 가장 짧은 거리가 나올 경우 그 값을 반환하여 도시를 모두 방문하면서 가장 짧은 거리를 구할 수 있음

double ret = numeric_limits<double>::max();
for (int next = 0; next = n; next++)
{
    if (visited[next]) continue;
    int here = path.back(); path.push_back(next); visited[next] = true;
    double cand = shortestPath(path, visited, currentLength + dist[here][next]);
    ret = min(ret, cand); visited[next] = false; path.pop_back();
}
return ret;
저작자표시 (새창열림)

'C++ Algorithm & Study > C++ & Algorithm Strategies' 카테고리의 다른 글

[Algorithm Strategies] 06. Divide & Conquer - Karatsuba Multipy  (0) 2023.07.14
[Algorithm Strategies] 05. Exhaustive Search - Clock Sync  (0) 2023.07.13
[Algorithm Strategies] 03. Exhaustive Search - Board Cover  (0) 2023.07.12
[Algorithm Strategies] 02. Exhaustive Search - Picnic  (0) 2023.07.11
[Algorithm Strategies] 01. Exhaustive Search - Boggle  (0) 2023.07.10
    'C++ Algorithm & Study/C++ & Algorithm Strategies' 카테고리의 다른 글
    • [Algorithm Strategies] 06. Divide & Conquer - Karatsuba Multipy
    • [Algorithm Strategies] 05. Exhaustive Search - Clock Sync
    • [Algorithm Strategies] 03. Exhaustive Search - Board Cover
    • [Algorithm Strategies] 02. Exhaustive Search - Picnic
    GameChoi
    GameChoi

    티스토리툴바