Considérez la tâche algorithmique suivante:
Entrée: un entier positif , avec sa factorisation première
Trouver: des entiers positifs qui minimisent , sous réserve de la restriction quex , y , z x y + y z + x z x y z = n
Quelle est la complexité de ce problème? Existe-t-il un algorithme à temps polynomial? Est-ce NP-difficile?
Ce problème pose essentiellement: parmi tous les solides rectangulaires dont le volume est et dont les dimensions sont tous des entiers, lequel a la plus petite surface?
Ce problème a été posé par Dan Meyer, sous le titre Le problème mathématique que 1000 professeurs de mathématiques n'ont pas pu résoudre . Jusqu'à présent, aucun des professeurs de mathématiques avec lesquels il a travaillé n'a trouvé d'algorithme raisonnable pour ce problème. Dans son contexte, la définition de «raisonnable» est un peu imprécise, mais en tant qu'informaticiens, nous pouvons poser une question plus précise sur la complexité de ce problème.
L'approche évidente consiste à énumérer toutes les possibilités pour , mais cela prend un temps exponentiel. Les commentateurs du blog de Dan Meyer ont proposé de nombreux algorithmes candidats efficaces qui se sont malheureusement tous révélés incorrects. Martin Strauss suggère que ce problème semble vaguement faire penser à 3 partitions , mais je ne vois pas de réduction.
Permettez-moi également de clarifier certaines idées fausses que j'ai vues dans les commentaires / réponses:
Vous ne pouvez pas réduire à partir de 3 partitions en remplaçant simplement chaque nombre par sa puissance , car les fonctions objectives des deux problèmes sont différentes. La réduction évidente ne fonctionne tout simplement pas.2 q
Il n'est pas vrai que la solution optimale implique de choisir l'un des pour être le diviseur le plus proche de à . Je vois plusieurs personnes qui supposent que c'est le cas, mais en fait, ce n'est pas correct. Cela a déjà été réfuté sur le blog de Dan Meyer. Par exemple, considérons ; et 4 divise 68, donc vous pourriez penser qu’au moins un des devrait être 4; cependant, ce n'est pas correct. La solution optimale est , , . Un autre contre-exemple est , , mais la solution optimale estn 3 √ n=683 √x,y,zx=2y=2z=17n=2223 √x=37 , , . (Il pourrait être vrai que pour tout , la solution optimale implique de faire au moins un de égal au plus petit diviseur de supérieur à ou au plus grand diviseur de plus petit que - Je n'ai pas de contre-exemple pour le moment - mais si vous pensez que cette affirmation est vraie, elle aurait besoin d'une preuve. Vous ne pouvez absolument pas supposer qu'elle est vraie.)
"Faire en sorte que soient de la même taille" ne semble pas nécessairement donner la réponse optimale dans tous les cas; voir le blog de Dan Meyer pour les contre-exemples. Ou, au moins, pour certaines interprétations raisonnables de l'expression "faites-les à peu près la même taille", il existe des contre-exemples montrant que cette stratégie n'est pas en fait optimale. Si vous souhaitez essayer une stratégie de ce type, assurez-vous de formuler la réclamation avec précision, puis fournissez une preuve mathématique précise.
Un temps d'exécution de n'est pas polynomial. Pour que ce problème soit en P, le temps d'exécution doit être un polynôme dans la longueur de l'entrée . La longueur de l'entrée est quelque chose comme , pas . L'algorithme de force brute évident peut être fait pour fonctionner en temps ou , mais c'est exponentiel en et compte donc comme un algorithme temps exponentiel. Ce n'est donc pas utile.