Alocar uniformemente recursos em várias desinations

1

Eu não estou bastante familiarizado com o bash para descobrir isso corretamente, vou tentar ser breve com o que estou tentando descobrir!

Eu tenho muitos caminhos armazenados em um arquivo, junto com seu tamanho (em G), como abaixo: (sizegb, caminho)

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

Haveria centenas de caminhos como esse.

Eu terei um segundo arquivo com discos de destino para o qual eles serão movidos (por exemplo: GB representando espaço restante): (sizeGB, DISK)

376,DISK1
555,DISK2

Como geralmente há centenas de áreas, variando em tamanho, qual seria a melhor maneira de classificá-las "uniformemente" entre os dois discos? isto é, se eu tiver 600 GB para mover, alocar ~ 400G para DISK2 e ~ 200G para DISK1 (para que os tamanhos restantes sejam de 176 GB, DISK1 e 155 GB, DISK2)

com uma saída como:

PATH,DISK
PATH,DISK2

Obrigado antecipadamente!

PS

Eu também não estou pedindo para alguém fazer isso completamente, estou apenas procurando por algumas boas indicações sobre onde começar, ou idéias sobre como seria uma maneira prática de fazer isso!

    
por Kellen 22.12.2015 / 19:02

1 resposta

0

Carregue os dois arquivos em matrizes no seu idioma preferido. Iterar os arquivos e movê-lo para o destino com o maior espaço livre restante. Quando você diminui o espaço livre naquele destino pelo tamanho do arquivo que acabou de ser movido para lá.

Este método não faz com que você tenha o arranjo absolutamente mais equilibrado, mas encontrar essa solução não pode ser calculado em tempo polinomial (a menos que P = NP ... que não, confie em mim;)

    
por 22.12.2015 / 19:45