2014-12-12 2 views
1

학교 과제를 위해 다음 문제에 대한 Javacode를 만들려고합니다. 실제 자바 코드가 아닌 팁과 도움이 필요합니다. 재귀 적이어야합니다. 개인적으로, 나는 배낭 문제 또는 가중치 간격 예약에 대한 일종의 변형이라고 생각합니다. 어쨌든이 문제는 다음과 같습니다.번들 업데이트 비용 최소화 (역 가방)

운영 체제를 사용하는 회사는 인터넷을 통해 보안 업데이트를 제공합니다. 특정 순간에 많은 업데이트가 개발에 있으며 각 업데이트에 대해 준비가 된 날짜를 알 수 있습니다.

업데이트 배송에는 일정한 비용 (각각 업데이트에 해당)과 업데이트 비용이 다를 수있는 가변 비용이 포함되어 있습니다.

비용을 최소화하기 위해 회사는 번들 업데이트 가능성을 모색하고 있습니다. 번들은 한 번만 으로 배송되는 일련의 업데이트입니다. 번들의 고정 비용은 하나의 업데이트의 고정 비용 과 동일하지만 번들의 가변 비용은 의 업데이트 비용 변동 금액의 합으로 정의됩니다.

번들링 업데이트로 인해 지속적인 비용이 감소 할 수 있지만 번들 준비가 완료 될 때까지 모든 보안 업데이트가 번들로 연기되므로 사용자가 더 이상 위험에 처한 것을 의미합니다. 이 위험은 추가 비용으로 모델링 된 입니다. 본질적으로 업데이트를 직접 (일정한 비용의 총합이 많음) 또는 사이에 교환하여 위험이 높은 번들로 제공합니다.

업데이트가 준비 될 때 정렬한다고 가정합니다. 업데이트가 제공 될 때 이라고 가정하면 이전에 준비된 모든 업데이트가 함께 제공됩니다 (동일한 번들 또는 이전 번들에 있음). 회사는 업데이트를 번들하는 방법을 알고 싶어하므로 모든 번들의 총 금액은 입니다.

다음 정보가 제공됩니다 : 번호가 보안 업데이트의

  • 목록, 그들은 준비가 날짜 기준으로 정렬 (.. 업데이트가 1, 2 ,.으로 표시됩니다)
  • 각 업데이트에 대한 번들
  • 운송의 일정 비용, 업데이트의 각 쌍, 최대 처음부터 모든 업데이트를 연기하는 비용을 위해
  • 운송의 가변 비용 날짜는 두 번째 업데이트가 배송 될 때까지 두 번째 업데이트로 변경됩니다.
+1

올해 크리스마스 선물이 없습니다 ... :) –

답변

1

k까지 모든 업데이트를 보내는 최소 비용 f (k)를 계산하는 방법을 생각해보십시오.

이것은 재귀 적으로 계산할 수 있지만 함수 호출 결과를 메모 해 두거나 복잡성이 지수가되도록하십시오.

+0

답장을 보내 주셔서 감사합니다. 그러나 재귀 적으로 최소 비용 f (k)를 계산하는 방법에 대해 생각하지 않습니다 ... – senpairamen

+0

@heyitsme 마지막 번들에있을 업데이트 수를 고려하십시오. 마지막 번들에 x가 있다는 것을 알았다면 비용은 f (k-x) + 마지막 x를 묶는 비용이됩니다. –