• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

분기 한정법과 배낭 문제

21.08.02 15:41 작성 조회수 215

0

안녕하세요! 이제 수업을 거의 다수강해 가고 있네요. 감사합니다!

그런데 분기 한정법과 배낭 문제에 몇가지 질문할 것이 있습니다.

첫번째,

bound : 현재 노드에서 앞으로 얻을 수 있는 최대 이익

이라고 하셨는데, 

이 식을 보면

(bound = (현재까지 얻은 이익+나머지 노드들 중 전부 담아도 W를 넘지 않는 이익) + (전부 담으면 W가 넘는 노드 k의 이익))

로 이해가 됩니다.

그런데, w_i배열의 마지막 값이 앞선 원소들의 합보다 월등히 크다면,

위 bound 식이 현재 노드에서 앞으로 얻을수 있는 최대 이익이 될 수 없을 것 같습니다.

그래서 제 생각에는 먼저 이익의 내림차순으로 정렬을 하면 bound의 정의를 만족할 것 같은데 제각 생각한것이 맞을까요?

두번째,

,   

위 두 그림에서 (3,1)과 (4,1)이 nonpromising한 이유가 bound 값이 maxprofit보다 작아서 라고 하셨는데,

제 생각에는 (bound = (현재까지 얻은 이익+나머지 노드들 중 전부 담아도 W를 넘지 않는 이익) + (전부 담으면 W가 넘는 노드 k의 이익)) 인데, 그렇다면 항상 (3,1)과 (4,1)에서의 bound 값은 maxprofit보다 크거나 같을 것 같습니다.

그래서 제 생각에는 nonpromising한 이유가 bound 값 때문이 아니라 무게의 합이 W보다 거쳐서 nonpromising 하다고 생각했는데 맞을까요?

항상 강의 잘 듣고 있습니다.

좋은강의에 늘 감사드립니다 :)

답변 1

답변을 작성해보세요.

0

질문하신 내용의 세부적인 내용까지는 제가 확인이 어렵군요.

이 부분은 워낙 복잡한 부분이라 

저도 강의하기 전에 확인해 보고, 강의 끝나면 까먹는 부분입니다. ^^;

예제 코드를 구현해서 적절한 시점에 print()를 걸고

profit, weight, maxprofit 값을 찍어보면서 PriorityQueue 상황을 체크해 보면

말씀하신 내용을 정확히 파악이 가능할 겁니다.

제가 강의 찍을 때는 대충 머리 속으로 계산한 것이라서

아마도 질문하신 내용이 맞을 것 같습니다.

hyb9579님의 프로필

hyb9579

질문자

2021.08.03

네 한번 확인해 봐야겠네요!