inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part3: 자료구조와 알고리즘

다익스트라 알고리즘 강의듣고 질문드립니다.

해결된 질문

166

시슴

작성한 질문수 10

0

안녕하세요
 
다익스트라 알고리즘 강의 듣고 질문드립니다.
 
다익스트라 알고리즘 코드 파일에서 Algorithm.cpp 파일 52~59번째 줄에
 
for (auto it = discovered.begin(); it != discovered.end(); it++)
{
  if (it->cost < bestCost)
  {
    bestCost = it->cost;
     bestIt = it;
  }
}
 
이런 코드가 있고
 
이 코드는 각 발견한 Vertex를 순회하면서 제일 좋은 후보를 찾는다고 되어 있는데
 
왜 최적의 Vertex를 찾아야 되는지 이해가 안되서 질문드립니다.
 
최적의 Vertex를 찾아도 discoverd가 empty()가 될때까지 모든 연결된 Vertex를 순회해서
 
최적인지 아닌지를 체크하는데도 미리 최적의 Vertex를 찾는지 궁금합니다.

기술면접

답변 1

0

Rookiss

다익스트라 알고리즘이 그렇게 동작하기 때문입니다.
발견한 여러 갈래의 길들 중에 가장 우수한 후보를 뽑아서 가는 것이고
그렇기 때문에 최단거리가 보장이 되는 것입니다.

0

시슴

항상 최적 경로의 Vertex만 선택해서 최적 경로로 거리를 갱신하므로
최단 경로가 보장되네요
이해 되었습니다 답변 감사합니다 

헤더파일에 관한 질문

0

449

1

이진 탐색 트리 삭제 질문

0

719

1

해당 문제 유형을 수학적으로 표현 가능할까요?

0

522

1

vs2022 미로 줄간격

0

1603

2

pos 구조체 초기화 문제

0

507

0

맵이 이상하게 나오는데 무슨 문제인가요?

0

523

1

자동완성 기능 질문

1

534

2

push_back emplace_back 질문있습니다.

0

407

1

Container, Predicate 질문입니다.

0

410

1

_size - 2 질문

0

428

1

Disjoint Set 질문있습니다

0

444

1

우선순위 큐 구현 연습 intellisense 질문

0

409

1

int32 관련 질문

0

282

1

c++에서 처음 보는 문법

0

396

1

학습에 크게 지장이 있는건 아니지만 단순 궁금해서 질문드립니다

0

333

1

힙 정렬과 병합 정렬

0

435

1

resize 질문

0

269

1

처음 보는 for문 문법

0

399

1

환경 설정.. 궁금점

0

398

1

이 비교 연산자를 넣어주는 이유가 있나요?

0

294

1

소멸자 관련 질문

0

257

1

&의 차이

0

295

1

프레임 관리 질문입니다.

0

342

1

연산자 오버로딩 관련 질문입니다.

1

213

1