Loading AI tools
De Wikipédia, l'encyclopédie libre
Un schéma d'approximation en temps entièrement polynomial (FPTAS, pour « Fully Polynomial-Time Scheme ») est un algorithme permettant de trouver des solutions approximatives aux problèmes fonctionnels, en particulier aux problèmes d'optimisation. Un FPTAS prend en entrée une instance du problème et un paramètre ε > 0. Il renvoie en sortie une valeur d'au moins fois la valeur correcte, et au plus fois la valeur correcte.
Dans le contexte des problèmes d'optimisation, ce qu'on appelle valeur correcte est la valeur de la solution optimale. Il est souvent sous-entendu qu'un FPTAS doit produire une solution valide (et pas seulement la valeur de la solution). Retourner une valeur et trouver une solution avec cette valeur sont équivalents si l'on suppose que le problème possède une autoréductibilité.
Pour un FPTAS, on demande que le temps d'exécution soit polynomial en la taille de l'instance et en 1/ε. Ainsi, un FPTAS est plus contraint qu'un schéma général d'approximation en temps polynomial (PTAS). Le temps d'exécution d'un PTAS général est polynomial dans la taille du problème pour chaque ε spécifique, mais peut être exponentiel en 1/ε[1].
Le terme FPTAS peut également être utilisé pour désigner la classe de problèmes qui ont un FPTAS. FPTAS est un sous-ensemble de PTAS qui, sauf si P=NP est un sous-ensemble strict[2].
Tous les problèmes dans FPTAS sont traitables à paramètres fixes par rapport à la paramétrisation standard[3].
Tout problème d'optimisation fortement NP-difficile (autrement dit qui reste NP-difficile si on considère les nombres de l'instance écrit en unaire) avec une fonction objectif polynômialement bornée ne peut pas avoir de FPTAS à moins que P = NP[4] Cependant, la réciproque n'est pas vrai : par exemple, si P n'est pas égal à NP, le sac à dos avec deux contraintes n'est pas fortement NP-difficile, mais n'a pas de FPTAS même lorsque l'objectif optimal est polynômialement borné[5].
Woeginger[6] a présenté une méthode générale pour transformer une certaine classe de programmes dynamiques en FPTAS.
La méthode traite les problèmes d'optimisation dans lesquels l'entrée est définie comme suit :
On suppose que le problème admet un algorithme de programmation dynamique (APD) utilisant des états. Chaque état est un vecteur composé de entiers non négatifs, où est indépendant de l'entrée. L'APD fonctionne en n étapes. A chaque étape i, il traite l'entrée x i, et construit un ensemble d'états S i. Chaque état code une solution partielle au problème, en utilisant les entrées x 1 ,..., x i. Les composants de l'APD sont :
L'algorithme de l'APD est :
Le temps d'exécution de l'APD est linéaire en le nombre d'états possibles. En général, ce nombre peut être exponentiel dans la taille du problème d'entrée : il peut être en O( n V b ), où V est le plus grand entier pouvant apparaître dans un état. Si V est en O( X ), alors le temps d'exécution est en O( n X b ), qui n'est qu'un temps pseudo-polynomial, puisqu'il est exponentiel en la taille du problème qui est en O(log X ).
La façon de le rendre polynomial est de réduire l'espace d'états : au lieu de conserver tous les états possibles à chaque étape, ne conserver qu'un sous-ensemble des états ; supprimer les États "suffisamment proches" des autres États. Sous certaines conditions, cet ajustement peut être effectué de manière à ne pas trop modifier la valeur de l'objectif.
Pour formaliser cela, nous supposons que le problème à résoudre a un vecteur entier non négatif d = ( d 1 ,..., d b ), appelé le vecteur degré du problème. Pour tout nombre réel r >1, on dit que deux vecteurs d'état s 1, s 2 sont (d,r)-proches si, pour chaque coordonnée j dans 1,..., b : (en particulier, si d j =0 pour certains j, alors )
Un problème est dit extrêmement bienveillant s'il satisfait les trois conditions suivantes :
Pour chaque problème extrêmement bienveillant, le programme dynamique peut être converti en FPTAS. Définissons :
Le FPTAS fonctionne de manière similaire à l'APD, mais à chaque étape, il réduit l'ensemble d'états en un ensemble plus petit T k, qui contient exactement un état dans chaque r -box. L'algorithme du FPTAS est :
Le temps d'exécution du FPTAS est polynomial dans le nombre total d'états possibles dans chaque T i, qui est au plus le nombre total de r -boîtes, qui est au plus R, qui est polynomial en n, log( X ), et .
Notons que, pour chaque état s u dans U k, son sous-ensemble T k contient au moins un état s t qui est (d,r)-proche de s u. De même, chaque U k est un sous-ensemble des S k dans l'APD d'origine (non réduit). Le lemme principal pour prouver la correction du FPTAS est[7](Lem.3.3) :
« Pour tout entier k dans 0,..., n, pour tout état s s dans S k, il existe un état s t dans T k qui est ( d, r k )-proche de s s. »
La preuve est par récurrence sur k. Pour k =0 on a T k = S k ; tout état est ( d ,1)-proche de lui-même. Supposons que le lemme soit vrai pour k -1. Pour tout état s s dans S k, soit s s- un de ses prédécesseurs dans S k-1, de sorte que f ( s s −, x )= s s. Par hypothèse de récurrence, il existe un état s t- dans T k-1, c'est-à-dire ( d, r k-1 )-proche de s s −. Comme la proximité est préservée par les transitions (Condition 1 ci-dessus), f ( s t −, x ) est ( d, r k-1 )-proche de f ( s s −, x )= s s. Ce f ( s t −, x ) est dans U k. Après la réduction, il existe un état s t dans T k qui est ( d, r )-proche de f(s t- ,x). Ce s t est ( d, r k )-proche de s s.
Considérons maintenant l'état s * dans S n, qui correspond à la solution optimale (c'est-à-dire g ( s* )=OPT). D'après le lemme ci-dessus, il existe un état t * dans T n, qui est ( d, r n )-proche de s *. Comme la proximité est préservée par la fonction valeur, on a g (t*) ≥ r (-Gn) · g ( s* ) pour un problème de maximisation. Par définition de r, . Donc . Un argument similaire fonctionne pour un problème de minimisation.
Voici quelques exemples de problèmes extrêmement bienveillants, qui ont un FPTAS par le théorème ci-dessus[6].
Les programmes dynamiques simples ajoutent à la formulation ci-dessus les éléments suivants :
L'APD d'origine est modifié comme suit :
Un problème est dit bienveillant s'il satisfait les conditions suivantes (qui prolongent les conditions 1, 2, 3 ci-dessus) :
Pour chaque problème bienveillant, le programme dynamique peut être transformé en FPTAS de la même manière que celui ci-dessus, avec deux modifications (en gras) :
Voici quelques exemples de problèmes bienveillants, qui ont un FPTAS par le théorème ci-dessus[6].
Malgré la généralité du résultat ci-dessus, il existe des cas dans lesquels il ne peut pas être utilisé.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.