O problema é o seguinte:
Temos uma matriz / grade bidimensional de números, cada um representando algum "benefício" ou "lucro". Temos também dois inteiros fixos e (para "width" e "height".) E um inteiro fixo .h n
Agora, desejamos sobrepor retângulos de dimensões na grade, de modo que a soma total dos valores das células nesses retângulos seja maximizada.w × h
O quadro que se segue é um exemplo de uma rede bidimensional com duas de tais rectângulos sobrepostos sobre ele (a imagem não demonstra a solução ideal, apenas uma possível sobreposição onde e )n = 2
Os retângulos não podem se cruzar (caso contrário, precisaríamos apenas encontrar a posição ideal para um retângulo e depois colocar todos os retângulos nessa posição.)
No exemplo acima, a soma total dos valores nas células seria
É semelhante a qualquer problema conhecido na otimização combinatória? para que eu possa começar a ler e tentar encontrar maneiras de resolvê-lo.
Mais alguns antecedentes para os interessados:
Até agora, as únicas idéias que tive foram um algoritmo ganancioso (que encontraria a melhor localização para o primeiro retângulo, depois encontraria o local não sobreposto para o segundo retângulo etc.) ou algumas metaheurísticas, como algoritmos genéticos.
Na realidade, desejo resolver esse problema com uma grade com cerca de um milhão de células e dezenas de mil (ou mesmo centenas de milhares) de retângulos, embora não seja necessário resolvê-lo em um curto espaço de tempo (isto é, seria aceitável para o algoritmo pode levar horas ou até dias.) Não estou esperando uma solução exata, mas quero obter uma que seja a melhor possível, dadas essas restrições.
Felicidades!