Problema: Para provar odo problema de "Packing Squares (com diferentes comprimentos laterais) em um retângulo" , é reduzido, como mostra a figura a seguir.
No exemplo, existem elementos . A soma designada é .
Na redução, é um número enorme (constante) e cada é representado por um quadrado. O espaço em branco no retângulo será preenchido por unidade () quadrados.
Perguntas: Não entendo bem o truque de "adicionar um grande número"na redução. Acho que é usado para forçar que qualquer esquema de embalagem dê uma solução para . Mas como?
Pergunta 1: Qual é o truque de "adicionar um número enorme" para a redução de ? Especificamente, por que essa redução funciona? Por que esse truque é necessário, ou seja, por que a redução não funcionaria se deixássemos de fora (conjunto )?
Tentei identificar a falha da prova de "qualquer embalagem dá uma partição 3", mas não consegui entender o ponto-chave.
Na verdade, eu também vi outras reduções de que também usam esse truque. Assim,
Pergunta 2: Qual é o objetivo geral desse truque de "adicionar um número enorme" nas reduções de ( se houver )?
Nota: Esse problema é da vídeo aula (de 01:15:15) do Prof. Erik Demaine. Eu deveria ter verificado primeiro o artigo original "Empacotando quadrados em um quadrado" . No entanto, ele não está acessível para mim na Internet. Se você possui uma cópia e gostaria de compartilhar, pode encontrar minha caixa de correio em meu perfil. Desde já, obrigado.
Respostas:
O grandeB está aqui para garantir que os quadrados sigam o padrão mostrado na figura.
Na parte "existe uma embalagem⇒ existe uma partição 3 ". Você precisa exibir tripples de números inteiros com soma = t . Isso é fácil se os quadrados de codificação na embalagem estiverem dispostos 3 a 3 como na figura, mas como você sabe que é esse o caso? Por exemplo, com quadrados azuis muito ligeiramente menores, você pode ter dois quadrados pequenos lado a lado na mesma coluna e, em seguida, terá problemas.
Uma maneira de usar o truque doB constante é dizer que não é possível fazer com que nenhuma linha horizontal cruze estritamente mais do que n / 3 quadrados (essa linha tem comprimento ( B + t )n3 , um quadrado tem tamanho pelo menos B e B > tn3 ) Portanto, cada linha horizontal encontra um 1º quadrado, um 2º quadrado, etc., e então você pode mostrar (novamente usando o grandeB ), que o Eu os quadrados de cada linha devem se encontrar na mesma coluna. Depois de conseguir isso, você obtém uma 3 partição.
Sobre a pergunta 2, é obviamente difícil dar uma resposta formal, mas o padrão geral é o seguinte: com 3 partições, é necessário introduzir algum tipo de folga para permitir que qualquer número inteiro em um intervalo[ m i n , m a x ] de alguma forma, pode ser codificado e incorporado em um slot (que deve corresponder ao tamanho máximo possível). Porém, um problema comum é ter dois números inteiros no mesmo slot ou, geralmente, outros problemas sobrepostos (como nos quadrados aqui). Isso é resolvido certificando-se de que om i n é grande o suficiente em comparação com o tamanho do slot (geralmente precisamos m i n > m a x / 2 ou m i n > m a x ∗ ( n - 1 ) / ( n ) aqui): isso é facilmente alcançado com uma constante aditiva B .
Editar instância de amostra em queB é necessário: deixe a instância da 3-partição ser ( 10 , 7 , 2 , 10 , 9 , 2 ) com t = 20 . Esta não é uma instância. No entanto, comB = 0 , você tem uma embalagem válida do 40 × 20 retângulo: use uma primeira coluna com quatro quadrados ( 10 , 7 , 2 , 2 ) , os dois últimos lado a lado e uma segunda coluna com apenas ( 10 , 9 ) . Isso não é possível com, digamos,B = 100 e um 240 × 320 retângulo.
fonte