A maior dificuldade do método está na quantidade de memória que o algoritmo necessita. Precisa-se armazenar, para cada subproblema, a quantidade de retângulos empacotados, o tipo de solução utilizado e o ponto de divisão (informação complementar ao tipo de solução). Em [26], esses dados foram armazendos usando uma estrutura de dados chamado PHORMA (Perfect Hashed Order Restricted Multidimensional Array) [24,12]. Essa estrutura de dados usa dígrafos para indexar as peças.
Seja e
as cardinalidades dos conjuntos
e
respectivamente. Como, por definição,
, então
.
Na nossa implementação armazenamos esse dados em 3 vetores de
tamanho
cada um.
Para ter acesso direto aos dados precisamos, dado um subproblema
, calcular o índice dos vetores onde seus dados estão
armazenados. Para isto, fizemos uma função bijetora
que serve para associar cada
a um índice
. Seja
o tamanho da largura do retângulo maior.
Então definimos essa função bijetora como:
![]() |
![]() |
Usando PHORMA, reduz-se a quantidade de memória necessária para resolver
os problemas, mas em compensação demora mais comparando com a nossa
implementação. Com a nossa implementação, tivemos alguns problemas devido
à grande quantidade de memória que o algoritmo necessitava para resolver
alguns problemas. Note que não são usadas todas as posições dos vetores
que armazenam os dados (veja Tabela na Seção
).