Considere a seguinte tarefa algorítmica:
Entrada: um número inteiro positivo , juntamente com sua fatoração primária.
Encontre: números inteiros positivos que minimizam , sujeitos à restrição de que
Qual é a complexidade desse problema? Existe um algoritmo de tempo polinomial? É NP-difícil?
Esse problema basicamente pergunta: de todos os sólidos retangulares cujo volume é e cujas dimensões são todas inteiras, qual possui a menor área de superfície?
Esse problema foi proposto por Dan Meyer, sob o título O problema de matemática que mil professores de matemática não conseguiram resolver . Até agora, nenhum dos professores de matemática com quem ele trabalhou encontrou um algoritmo razoável para esse problema. No seu contexto, a definição de "razoável" é um pouco imprecisa, mas, como cientistas da computação, podemos fazer uma pergunta mais precisa sobre a complexidade desse problema.
A abordagem óbvia é enumerar todas as possibilidades para , mas isso leva tempo exponencial. Os comentaristas do blog de Dan Meyer propuseram muitos algoritmos candidatos eficientes que, infelizmente, todos estavam incorretos. Martin Strauss sugere que esse problema parece vagamente remanescente de 3 partições , mas não vejo uma redução.
Deixe-me também esclarecer alguns conceitos errôneos que eu vi nos comentários / respostas:
Você não pode reduzir a partir de 3 partições simplesmente substituindo cada número por sua potência 2 q , pois as funções objetivas dos dois problemas são diferentes. A redução óbvia simplesmente não funciona.
Não é verdade que a solução ideal envolva escolher um de para ser o divisor mais próximo de n a 3 √ . Vejo várias pessoas que estão assumindo que isso é verdade, mas, na verdade, isso não está correto. Isso já foi refutado no blog de Dan Meyer. Por exemplo, consideren=68; 3 √e 4 divide 68, então você pode pensar que pelo menos um dex,y,zdeve ser 4; no entanto, isso não está correto. A solução ideal éx=2,y=2,z=17. Outro contra-exemplo én=222,3 √, mas a solução ideal éx=37,y=3,z=2. (Elapodeser verdade que, para todos osn, a solução ideal envolve fazer, pelo menos, um dex,y,zser igual quer a menor divisor denmaior do que3 √ ouo maior divisor denmenor que3 √ - não tenho um contra-exemplo no momento - mas se você acha que essa afirmação é verdadeira, seria necessária uma prova. Você absolutamente não pode assumir que é verdade.)
"Fazer ter o mesmo tamanho" não parece necessariamente produzir a resposta ideal em todos os casos; veja a publicação no blog de Dan Meyer para obter contra-exemplos. Ou, pelo menos, para algumas interpretações razoáveis da frase "torná-las aproximadamente do mesmo tamanho", há contra-exemplos que mostram que essa estratégia não é de fato ideal. Se você quiser tentar alguma estratégia desse tipo, declare com precisão a afirmação e forneça uma prova matemática cuidadosa.
Um tempo de execução de não é polinomial. Para que esse problema esteja em P, o tempo de execução deve ser um polinômio no comprimento da entrada . O comprimento da entrada é algo como lg n , não n . O algoritmo óbvio de força bruta pode ser executado no tempo O ( n 3 ) ou O ( n 2 ) , mas isso é exponencial em lg n e, portanto, conta como um algoritmo de tempo exponencial. Portanto, isso não ajuda.