여러 대상에 리소스를 균등하게 배포

여러 대상에 리소스를 균등하게 배포

저는 이 문제를 제대로 해결할 만큼 bash에 익숙하지 않습니다. 제가 해결하려는 내용에 대해 간략하게 설명하겠습니다!

나는 다음과 같은 파일에 G의 여러 경로와 크기를 저장합니다.

1,/bin/path1
5,/bin/path2
25,/bin/path3

그러한 경로는 수백 가지가 있습니다.

이동할 대상 디스크가 포함된 두 번째 파일이 있습니다. 예를 들어 GB는 남은 공간을 나타냅니다. (sizeGB,DISK)

376,DISK1
555,DISK2

일반적으로 다양한 크기의 수백 개의 영역이 있으므로 두 디스크 간에 영역을 "균등하게" 정렬하는 가장 좋은 방법은 무엇입니까? 즉, 이동할 공간이 600GB인 경우 DISK2에 ~400G, DISK1에 ~200G를 할당합니다(따라서 남은 크기는 DISK1의 경우 176GB, DISK2의 경우 155GB가 됩니다).

출력은 다음과 같습니다.

PATH,DISK
PATH,DISK2

미리 감사드립니다!

추신,

나는 또한 다른 사람들에게 이 일을 정확히 하라고 요구하는 것이 아닙니다. 나는 단지 어디서 시작해야 할지에 대한 좋은 조언이나 이 일을 하는 실용적인 방법에 대한 아이디어를 찾고 있을 뿐입니다!

답변1

이 두 파일을 원하는 언어의 배열로 로드하세요. 파일을 반복하여 남은 여유 공간이 가장 큰 대상으로 이동합니다. 해당 대상의 여유 공간을 방금 이동한 파일 크기로 줄이면 됩니다.

이 접근 방식은 절대적으로 가장 균형 잡힌 배열을 제공하지는 않지만 다항식 시간으로 해를 계산할 수 없다는 것을 알게 될 것입니다(P=NP가 아닌 한... 그렇지 않은 경우, 저를 믿으십시오;)

관련 정보