1

나는이 문제 (https://github.com/alexpchung/File-Distribution-Planning/blob/master/README.pdf)에서 노드에 파일을 배치하는 최적의 솔루션을 찾아야했습니다. 여기 여러 용량의 가방에 맞는 최적의 솔루션

는 지금까지

이 가
  • 는 말 노드의 수는 을 통해 모든 노드를 반복 처리에 사용 가능한 파일 크기의
  • 킵 트랙 모든 파일 N.

    , 그것은이

      사용하고 내 알고리즘입니다 N의 선택은로 이동

    • 은 재귀 적으로 모든

    에 대한 평가 (가정 파일 등에 맞는)

    내가 생각한 또 다른 솔루션은 각 노드를 반복하고 배낭 0/1을 수행하는 것입니다. 불행히도 노드 크기가 고정되어 있지 않기 때문에 부적절한 솔루션이 될 것이기 때문에 충격을 받았습니다.

    훌륭한 포인터가 있다면.

    감사합니다.

  • 답변

    0

    아마 당신이 할 수있는 기준이 :

    • 정렬이 목록 (용량, 크기, 모두 증가) 가장 큰 파일에서

    • 시작..

    • 가장 큰 노드부터 시작하십시오.
    • 확인이
      • 사실 맞는 경우 :
      • 거짓에 넣어 : 크지 노드가 존재 이후가 "실패"목록을 넣어. 선택 (가장 큰) 노드가 가득 찬 경우
    • 옆 작은 노드에게
    • 반복 옆에 작은 파일을 반복.하나
      • 모든 파일이 할당 된 진정한 조건 중 하나가 빈 노드가
      • 모든 노드에 존재 때까지
      • 전체, 배치되지 않은 파일이
    • (*)는 일종의에서만 노드 존재 확인 단계로 돌아가 자신의 빈 공간은 반대 순서로
      • 중복 된 노드 목록 (빈 노드 = true 또는 둘 다 진정한 존재)
          "최근 추가 된 파일은"최소한의 "빈 공간"D는 가장 큰 "빈 공간"D 노드와 들어갈 수
        • 체크하면 경우 전환 수율에 동일/균형 빈 공간을 모두
          • 사실 : 해당 노드에 파일을 보내
          • 거짓 : 해당 파일이
      • 을 다른 사람이
    • 으로 반복 두 목록을 neighter에 맞게 (및 목록에서 세련된 쌍을 제거) 할 수 없기 때문에 다음 "최소한 빈 공간"노드에서 반복
    • 최소 1 개의 파일을 정제 할 수 있다면 (*)로 이동하십시오.
    +0

    이 단계를 설명해 주실 수 있습니까? _ (*) ​​공백의 노드 만 정렬 (빈 노드가 존재 함 = true 또는 둘 모두 참) _ 중복 노드 목록을 반대 순서로 - "가장 최근에 추가 된 파일"이 최소 "빈 공간" "빈 공간"d 노드이고 전환이 양쪽에서 동일/균형 공백을 산출하는 경우 참 : 해당 노드에 파일 보내기 false : 다음 파일의 다른 노드에 맞지 않기 때문에 다음 "최소 공백"노드에서 반복합니다. _ 반복 모두 _ 적어도 하나의 파일을 정제 할 수 있다면, (*) – knightcoder1108

    +0

    첫 번째 노드와 마지막 노드를 바인딩 한 다음 아마 n-1th를 2로하고 아마 n-2nd를 3rd로 바인딩하십시오. ... 그래서 대부분은 완전한 것들은 대부분 빈 것들과 공유 할 것입니다. –

    관련 문제