작성
·
33
·
수정됨
0
동적 계획법 알고리즘에서 사용되는 테이블을 캐시라고 말할께요.
만약, dp[y][x]에 값을 최초로 갱신하고 이후에 또 다른 경로 B로 (y,x)에 도달하게 되면 바로 dp[y][x]를 가져다 사용하게 될 겁니다.
하지만 만약에 저장했던 최초로 연산했던 최장 경로와 다른 경로 B가 겹치게 된다면 캐시값을 사용하지 않고 직접 연산했을 상황에서는 무한 loop가 발생한것이니, 이런 상황 때문에라도 위치 정보만으로 캐싱하면 안되는거 아닌가요? 그렇게 생각해서 저는 처음에 위치 정보 뿐만 아니라 방문한 정점 정보도 key 값으로 사용하려다 실패하고 큰돌님 강의를 봤네요.애초에 이런 일이 발생하지 않아서 위치 정보만으로 캐싱해도 되는 것인지, 아니면 제 생각이 잘못되었는지 궁금합니다.
답변 2
0
안녕하세요 병욱님 ㅎㅎ
하지만 만약에 저장했던 최초로 연산했던 최장 경로와 다른 경로 B가 겹치게 된다면 캐시값을 사용하지 않고 직접 연산했을 상황에서는 무한 loop가 발생한것
-> 혹시 이 경우 더 자세하게 얘기해주실 수 있나요?
이 문제에서 무한 루프가 발생하는 경우는 a -> b -> c -> a 이런식으로 사이클이 생겼을 때 입니다. 캐시와는 상관없는 것 같아서요.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 유병욱님의 질문에 대한 답변을 드리겠습니다.
유병욱님께서 언급하신 문제는 동적 계획법(DP)에서 흔히 발생할 수 있는 캐싱 문제로, 특히 경로 문제에서 어떤 상태로 다시 돌아올 때 발생할 수 있는 무한 루프와 관련이 있습니다.
이해를 돕기 위한 설명:
동적 계획법의 캐싱:
DP에서는 보통 문제의 각 상태를 특정 변수의 조합으로 표현하고, 그 상태에 대한 최적의 답을 dp
테이블에 저장합니다. dp[y][x]
와 같은 위치 기반의 캐시는 특정 위치 (y, x)
에 대해 계산된 최적의 결과를 저장하는 방식입니다.
경로와 상태 표현:
주어진 문제에서 경로를 찾아야 할 때, 단순히 위치 (y, x)
만을 상태로 저장하면 다르게 도달했지만 같은 상태로 보이는 경우 문제를 발생시킬 수 있습니다. 그래서 외판원 순회 문제(TSP) 같은 경우에는 방문한 정점 집합을 추가로 상태로 사용하여 (현재 정점, 방문정점 집합)
으로 DP를 해결하는 경우가 많습니다.
중복 경로와 오류 방지:
위치 정보만으로 캐싱했을 때, 문제에서 설명된 것처럼 이전에 계산된 최적 경로의 값이 나중에 다른 경로에 의해서 문제가 될 수 있습니다. 예를 들어, 이전 경로가 어떤 최적의 경로보다 길거나 불리하다면, 올바른 갱신이 어려울 수 있습니다. 따라서, 모든 가능한 상태(위치 + 방문 정보)를 고려하는 것이 중요합니다.
기존 지식 공유 및 추가 학습:
(현재 위치, 방문 상태)
같은 추가적인 정보가 포함된 상태로 정의되어야 합니다.저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.