lsc4719   8년 전

전 다익스트라 알고리즘을 곧이 곧대로 적용하면 풀리는 문제라고 생각했습니다.
하지만 자꾸 틀리다고 하네요.
제 알고리즘은 다음과 같습니다.
1. 입력을 받아 그래프를 구성한다.
2. 그래프의 1번 노드부터 힙을 이용하여 그리디하게 최단경로를 구한다. (다익스트라 알고리즘)
 * 단, 귀가중에 길이 막히면, 천천히 간다.
3. 1번부터 N번까지 총 N개의 노드 중 가장 늦게 귀가한 집의 귀가시간을 출력한다.
사실 2번 단계의 알고리즘이 항상 최적해를 내주는지 확신하지 못하겠습니다.
하지만, 제가 아는 한도 내에선.. 이렇게 큰 입력이 주어지는 문제는 dp 아니면 다익스트라 알고리즘밖에 해결책이 생각나지 않습니다.
알고리즘에 문제가 있나요?
ps. 그래프의 간선이 갖는 무게는 double 자료형 변수에 저장하였습니다. 혹시 이게 문제가 될까요?

lsc4719   8년 전

정말 감사합니다ㅠㅠㅠㅠ 너무 좌절하고 있었는데 ㅋㅋ.. 감사해요!!! 문제의 저지가 스페셜 저지가 아닌데, 실수를 출력해야 하는 문제는, 출력에 신경을 써야겠어요!!

lsc4719   8년 전

위의 질문에 이어서인데요,

이 문제가 다익스트라로 풀릴 수 있는 이유가 무엇일까요?

Q. 모든 edge의 weight이 0이상이면 '항상' 다익스트라 알고리즘으로 최단 경로 문제를 해결할 수 있나요?

 * 이 문제에서처럼 경로에 따라서 edge의 weight이 달라진다고 해도?

lsc4719   8년 전

그 변화가 항상 일정하다는 게 어떤 변화를 말씀하시는 건가요?

퇴근시간이 되면 간선의 가중치가 변하지만, 그 변화가 일정하다는 건가요? 뭔가 일정하다는 것이 무엇인지 잘 모르겠습니다. 혹시 알려주실 수 있나요?

lsc4719   8년 전

Edge u->v의 중량이 u->v->s 경로로 이동할 때, v->s에서는 이미 지나온 u->v의 중량을 바꿀 수 없고, 이처럼 경로에따라 지나온 경로의 중량이 변할 수 없고 + 모든 간선의 중량이 음이 아닐 때 => 다익스트라를 사용할 수 있다는 건가요?

댓글을 작성하려면 로그인해야 합니다.