Schéma d'approximation en temps entièrement polynomial
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].
Relation avec d'autres classes de complexité
[modifier | modifier le code]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].
Transformation d'un programme dynamique en FPTAS
[modifier | modifier le code]Woeginger[6] a présenté une méthode générale pour transformer une certaine classe de programmes dynamiques en FPTAS.
Entrée
[modifier | modifier le code]La méthode traite les problèmes d'optimisation dans lesquels l'entrée est définie comme suit :
- L'entrée est constituée de n vecteurs, x1 ,..., xn.
- Chaque vecteur d'entrée est composé de entiers non négatifs, où peut dépendre de l'entrée.
- Toutes les composantes des vecteurs d'entrée sont codées en binaire. La taille de l'entrée est donc O(n +log X), où X est la somme de toutes les composantes de tous les vecteurs.
Programme dynamique extrêmement simple
[modifier | modifier le code]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 :
- Un ensemble S 0 d' états initiaux.
- Un ensemble F de fonctions de transition. Chaque fonction f dans F associe une paire (état, entrée) vers un nouvel état. Une fonction objectif g, associant un état à sa valeur.
L'algorithme de l'APD est :
- Soit S 0 := l'ensemble des états initiaux.
- Pour k = 1 à n faire :
- Soit S k := { f( s, x k ) | f dans F, s dans S k −1 }
- Retourner min/max {g(s) | s dans S n }.
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 :
- La proximité est préservée par les fonctions de transition : Pour tout r >1, pour toute fonction de transition f dans F, pour tout vecteur d'entrée x, et pour tout deux vecteurs d'état s 1, s 2, on a : si s 1 est ( d,r )-proche de s 2, alors f ( s 1, x ) est ( d,r )-proche de f ( s 2 ,x ).
- La condition suivante est une condition suffisante. Pour toute fonction f ( s, x ) dans F, et pour toute coordonnée j dans 1,..., b, notons f j (s,x) la j -ième coordonnée de f. Ce f j peut être vu comme une fonction entière en b + a variables. Supposons que chacun de ces f j soit un polynôme à coefficients non négatifs. Convertissez-le en un polynôme d'une seule variable z, en substituant s =(z d1 ,...,z db ) et x =(1,...,1). Si le degré du polynôme résultant en z est au plus d j, alors la condition 1 est satisfaite.
- La proximité est préservée par la fonction valeur : il existe un entier G ≥ 0 (qui est fonction de la fonction valeur g et du vecteur degré d ), tel que pour tout r >1, et pour tout deux vecteurs d'état s 1, s 2, ce qui suit est vrai : si s 1 est ( d,r )-proche de s 2, alors : g ( s 1 ) ≤ r G · g ( s 2 ) (dans les problèmes de minimisation) ; g ( s 1 ) ≥ r (-G) · g ( s 2 ) (dans les problèmes de maximisation).
- Une condition suffisante pour cela est que la fonction g soit une fonction polynomiale (de b variables) à coefficients non négatifs.
- Conditions techniques :
- Toutes les fonctions de transition f dans F et la fonction de valeur g peuvent être évaluées en temps polynomial.
- Le nombre | F | des fonctions de transition est polynômial en n et log( X ).
- L'ensemble S 0 des états initiaux peut être calculé en temps polynomial en n et log( X ).
- Soit V j l'ensemble de toutes les valeurs pouvant apparaître en coordonnée j dans un état. Alors, le ln de chaque valeur de V j est au plus un polynôme P 1 (n,log(X)).
- Si d j =0, la cardinalité de V j est au plus un polynôme P 2 ( n ,log( X )).
Pour chaque problème extrêmement bienveillant, le programme dynamique peut être converti en FPTAS. Définissons :
- := le rapport d'approximation demandé.
- , où G est la constante de la condition 2. Notons que .
- , où P 1 est le polynôme de la condition 3 (une borne supérieure sur le ln de chaque valeur pouvant apparaître dans un vecteur d'état). Notons que , il est donc polynomial en la taille de l'entrée et en . Par ailleurs, , donc par définition de P 1, tout entier pouvant apparaître dans un vecteur d'état est dans l'intervalle [0, r L ].
- Une partition de la plage [0, r L ] en L +1 r -intervalles : .
- Une partition de l'espace d'états en r-boîtes : chaque coordonnée k de degré d k ≥ 1 est partitionnée en L +1 intervalles ci-dessus ; chaque coordonnée avec d k = 0 est partitionnée en P 2 ( n ,log( X )) intervalles singletons - un intervalle pour chaque valeur possible de la coordonnée k (où P 2 est le polynôme de la condition 3 ci-dessus).
- Notons que chaque état possible est contenu dans exactement une r -boîte ; si deux états sont dans la même r -boîte, alors ils sont ( d, r )-proches.
- .
- Notons que le nombre de r -boîtes est au plus R. Puisque b est une constante fixée, ce R est polynomial en la taille de l'entrée et en .
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 :
- Soit T 0 := S 0 = l'ensemble des états initiaux.
- Pour k = 1 à n faire :
- On pose U k := { F ( s, X k ) | f dans F, s dans T k −1 }
- On pose T k := une copie tronquée de U k : pour chaque r -boîte qui contient un ou plusieurs états de U k, garder exactement un état dans T k.
- Retourner min/max {g(s) | s dans T n }.
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.
Exemples
[modifier | modifier le code]Voici quelques exemples de problèmes extrêmement bienveillants, qui ont un FPTAS par le théorème ci-dessus[6].
- Le partitionnement de nombres multiple (de manière équivalente, l'ordonnancement de machines identiques ) dans le but de minimiser la plus grande somme est extrêmement bienveillant. Ici, nous avons a = 1 (les entrées sont des nombres entiers) et b = le nombre de cases (qui est considéré comme fixe). Chaque état est un vecteur de b entiers représentant les sommes des b cases. Il y a b fonctions : chaque fonction j représente l'insertion de l'entrée suivante dans la case j. La fonction g ( s ) sélectionne le plus grand élément de s. S 0 = {(0,...,0)}. Les conditions d'extrême-bienveillance sont satisfaites avec le vecteur-degré d =(1,...,1) et G =1. Le résultat s'étend à l'ordonnancement des machines uniformes et l'ordonnancement des machines non liées quand le nombre de machines est fixe (ceci est nécessaire car R - le nombre de r -boîtes - est exponentiel en b ). Noté Pm|| ou Qm|| ou Rm|| .
- Remarque : considérons le cas particulier b =2, où le but est de minimiser le carré de la différence entre les deux sommes partielles. Le même APD peut être utilisé, mais cette fois avec la fonction valeur g ( s ) = ( s 1 - s 2 ) 2. Maintenant, la condition 2 est violée : les états ( s 1, s 1 ) et ( s 1, s 2 ) peuvent être ( d,r )-proches, mais g ( s 1, s 1 ) = 0 tandis que g ( s 1, s 2 ) > 0, donc le théorème ci-dessus ne peut pas être appliqué. En effet, le problème n'a pas de FPTAS à moins que P = NP, puisqu'un FPTAS pourrait être utilisé pour décider en temps poly si la valeur optimale est 0.
- Somme du temps d'exécution d'un travail au cube sur un nombre fixe de machines identiques ou uniformes - ce dernier étant noté Qm|| - est extrêmement-bienveillant avec a =1, b =3, d=(1,1,3). Il peut être étendu à n'importe quelle puissance fixe du temps de réalisation.
- Somme des temps d'exécution pondérés sur tout nombre fixe de machines identiques ou uniformes - ce dernier étant noté Qm|| .
- Somme des temps d'exécution sur un nombre fixe quelconque de machines identiques ou uniformes, avec des temps de traitement dépendant du temps : Qm|time-dep| . Cela vaut même pour la somme pondérée des temps d'exécution.
- Précocité-lenteur pondérée autour d'une date d'échéance commune sur tout nombre fixe de machines : m|| .
Programme dynamique simple
[modifier | modifier le code]Les programmes dynamiques simples ajoutent à la formulation ci-dessus les éléments suivants :
- Un ensemble H de fonctions de filtrage, de même cardinalité que F. Chaque fonction h i dans H envoie une paire (état, entrée) sur une valeur booléenne. La valeur doit être "vrai" si et seulement si l'activation de la transition f i sur ce couple conduirait à un état valide.
- Une relation de domination, qui est un ordre partiel sur les états (pas d'indifférences, toutes les paires ne sont pas comparables), et une relation de quasi-domination qui est un préordre total sur les états (indifférences autorisées, toutes les paires sont comparables).
L'APD d'origine est modifié comme suit :
- Soit S 0 := l'ensemble des états initiaux.
- Pour k = 1 à n faire :
- Soit S k := { fj ( s, x k ) | f j dans F, s dans S k -1, h j ( s, x k ) = Vrai }, où h j est la fonction de filtre correspondant à la fonction de transition f j.
- Retourner min/max {g(s) | s dans S n }.
Un problème est dit bienveillant s'il satisfait les conditions suivantes (qui prolongent les conditions 1, 2, 3 ci-dessus) :
- La proximité est préservée par les fonctions de transition : Pour tout r >1, pour toute fonction de transition f dans F, pour tout vecteur d'entrée x, et pour toute paire de vecteurs d'état s 1, s 2, ce qui suit est vrai :
- si s 1 est ( d,r )-proche de s 2 , et s 1 quasi-domine s 2, alors soit (a) f ( s 1, x ) est ( d,r )-proche de f ( s 2, x ), et f ( s 1, x ) quasi-domine f ( s 2 ,x ), ou (b) f ( s 1, x ) domine f ( s 2 ,x ).
- si s 1 domine s 2, alors f ( s 1, x ) domine f ( s 2 ,x ).
- La proximité est préservée par la fonction valeur : il existe un entier G ≥ 0 (fonction de la fonction valeur g et du vecteur degré d ), tel que pour tout r >1, et pour toute paire de vecteurs d'état s 1, s 2, ce qui suit est vrai :
- si s 1 est ( d,r )-proche de s 2, et s 1 quasi-domine s 2 , alors : g ( s 1 ) ≤ r G · g ( s 2 ) (dans les problèmes de minimisation) ; g ( s 1 ) ≥ r (-G) · g ( s 2 ) (dans les problèmes de maximisation).
- si s 1 domine s 2, alors g ( s 1 ) ≤ g ( s 2 ) (dans les problèmes de minimisation) ; g ( s 1 ) ≥ g ( s 2 ) (dans les problèmes de maximisation).
- Conditions techniques (en plus de ce qui précède):
- La relation de quasi-dominance peut être décidée en temps polynomial.
- Conditions sur les fonctions de filtrage : Pour tout r >1, pour toute fonction de filtrage h dans H, pour tout vecteur d'entrée x, et pour tout paire de vecteurs d'état s 1, s 2, ce qui suit est vrai :
- si s 1 est ( d,r )-proche de s 2 , et s 1 quasi-domine s 2, alors h ( s 1, x ) ≥ h ( s 2, x ).
- si s 1 domine s 2, alors h ( s 1, x ) ≥ h ( s 2, x ).
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) :
- Soit T 0 := S 0 = l'ensemble des états initiaux.
- Pour k = 1 à n faire :
- On pose U k := { F j ( s, X k ) | f j dans F, s dans T k -1, h j ( s, x k ) = Vrai }, où h j est la fonction de filtre correspondant à la fonction de transition f j.
- On pose T k := une copie tronquée de U k : pour chaque r -boîte qui contient un ou plusieurs états de U k, choisir un seul élément qui domine presque tous les autres éléments de U k , et l'insérer dans T k.
- Retourner min/max {g(s) | s dans T n }.
Exemples
[modifier | modifier le code]Voici quelques exemples de problèmes bienveillants, qui ont un FPTAS par le théorème ci-dessus[6].
- Le problème du sac à dos 0-1 est bienveillant. Ici, nous avons a =2 : chaque entrée est un 2-vecteur (poids, valeur). Il existe un APD avec b =2 : chaque état code (poids courant, valeur courante). Il existe deux fonctions de transition : f 1 correspond à ajouter l'élément d'entrée suivant, et f 2 correspond à ne pas l'ajouter. Les fonctions de filtrage correspondantes sont : h 1 vérifie que le poids avec l'élément d'entrée suivant est au plus la capacité du sac à dos ; h 2 renvoie toujours Vrai. La fonction valeur g ( s ) renvoie s 2. L'ensemble d'états initial est {(0,0)}. Le vecteur degré est (1,1). La relation de dominance est triviale. La relation de quasi-domination ne compare que la coordonnée de poids : s quasi-domine t ssi s 1 ≤ t 1. La conséquence de ceci est que, si l'état t a un poids supérieur à l'état s, alors les fonctions de transition sont autorisées à ne pas préserver la proximité entre t et s (il est possible, par exemple, que s ait un successeur et que t n'ait pas de successeur correspondant). Un algorithme similaire a été présenté plus tôt par Ibarra et Kim[8]. Le temps d'exécution de ce FPTAS peut être amélioré en opérations sur les nombres entiers[9]. L'exposant a ensuite été amélioré à 2,5[10].
- Remarque : considérons le problème du sac à dos à 2 pondérations, où chaque élément a deux poids et une valeur, et le but est de maximiser la valeur de sorte que la somme des carrés des poids totaux soit au plus la capacité du sac à dos : . Nous pourrions le résoudre en utilisant un APD similaire, où chaque état est (poids actuel 1, poids actuel 2, valeur). La relation de quasi-domination doit être modifiée comme suit : s quasi-domine t ssi ( s 1 2 + s 2 2 ) ≤ ( t 1 2 + t 2 2 ). Mais cela viole la condition 1 ci-dessus : la quasi-domination n'est pas préservée par les fonctions de transition [par exemple, l'état (2,2,..) quasi-domine (1,3,..) ; mais après avoir ajouté l'entrée (2,0,..) aux deux états, le résultat (4,2,..) ne domine pas quasi (3,3,.. )]. Le théorème ne peut donc pas être utilisé. En effet, ce problème n'a de FPTAS que si P=NP. Il en va de même pour le problème bidimensionnel du sac à dos. Il en va de même pour le problème de somme de sous-ensembles multiples : la relation de quasi-domination devrait être : s quasi-domine t ssi max( s 1, s 2 ) ≤ max( t 1, t 2 ), mais elle n'est pas préservée par les transitions, par le même exemple que ci-dessus.
- Minimiser le nombre pondéré de travaux en retard ou maximiser le nombre pondéré de travaux en avance sur une seule machine ; noté 1|| .
- Planification par lots pour minimiser le nombre pondéré de travaux en retard : 1|batch| .
- Exemple de travaux en détérioration sur une seule machine : 1|détériorer| .
- Travail en retard total sur une seule machine : 1|| .
- Travail en retard total pondéré sur une seule machine : 1|| .
Non-exemples
[modifier | modifier le code]Malgré la généralité du résultat ci-dessus, il existe des cas dans lesquels il ne peut pas être utilisé.
- Dans le problème de retard total 1|| , la formulation de programmation dynamique de Lawler nécessite de mettre à jour tous les états de l'ancien espace d'états B fois, où B est de l'ordre de X (la taille d'entrée maximale). Il en est de même pour un ADP de lotissement économique[11] Dans ces cas, le nombre de fonctions de transition dans F est B, qui est exponentiel en log( X ), donc la deuxième condition technique est violée. La technique de réduction d'état n'est pas utile, mais une autre technique - l'arrondi d'entrée - a été utilisée pour concevoir un FPTAS[12],[13].
- Dans le problème de minimisation de la variance 1|| , la fonction objectif est , qui viole la condition 2, donc le théorème ne peut pas être utilisé. Mais différentes techniques ont été utilisées pour concevoir un FPTAS[14],[15].
Autres problèmes notables qui ont un FPTAS
[modifier | modifier le code]- Le problème du sac à dos[16],[17], ainsi que certaines de ses variantes :
- Count-subset-sum (# SubsetSum) - trouver le nombre de sous-ensembles distincts avec une somme d'au plus C[24].
- Chemin le plus court restreint : recherche d'un chemin de coût minimum entre deux nœuds d'un graphe, soumis à une contrainte de délai[25].
- Chemins les plus courts et objectifs non linéaires[26].
- Décompte recouvrements.
- Problème de recherche de sous-ensemble vectoriel où la dimension est fixée[27].
Notes et références
[modifier | modifier le code]- (de) G. Ausiello, P. Crescenzi, G. Gambosi, V. Kann, A. Marchetti-Spaccamela, et M. Protasi, Complexity and Approximation: Combinatorial optimization problems and their approximability properties, Springer-Verlag, .
- (en) Ernst W. Mayr, Hans Jürgen Prömel et Angelika Steger, Lectures on Proof Verification and Approximation Algorithms, Springer Science & Business Media, (ISBN 978-3-540-64201-5, lire en ligne).
- (en) Cai et Chen, « On Fixed-Parameter Tractability and Approximability of NP Optimization Problems », Journal of Computer and System Sciences, vol. 54, no 3, , p. 465–474 (DOI 10.1006/jcss.1997.1490, lire en ligne).
- (en) Vijay V. Vazirani, Approximation Algorithms, Berlin, Springer, , 294–295 p. (ISBN 3-540-65367-8).
- (en) H. Kellerer and U. Pferschy and D. Pisinger, Knapsack Problems, Springer, .
- (en) Woeginger, « When Does a Dynamic Programming Formulation Guarantee the Existence of a Fully Polynomial Time Approximation Scheme (FPTAS)? », INFORMS Journal on Computing, vol. 12, no 1, , p. 57–74 (ISSN 1091-9856, DOI 10.1287/ijoc.12.1.57.11901, lire en ligne).
- Woeginger, « When Does a Dynamic Programming Formulation Guarantee the Existence of a Fully Polynomial Time Approximation Scheme (FPTAS)? », INFORMS Journal on Computing, vol. 12, no 1, , p. 57–74 (ISSN 1091-9856, DOI 10.1287/ijoc.12.1.57.11901, lire en ligne)
- (en) Ibarra et Kim, « Fast Approximation Algorithms for the Knapsack and Sum of Subset Problems », Journal of the ACM, vol. 22, no 4, , p. 463–468 (ISSN 0004-5411, DOI 10.1145/321906.321909, S2CID 14619586, lire en ligne).
- Lawler, « Fast Approximation Algorithms for Knapsack Problems », Mathematics of Operations Research, vol. 4, no 4, , p. 339–356 (ISSN 0364-765X, DOI 10.1287/moor.4.4.339, S2CID 7655435, lire en ligne).
- (en) Rhee, Donguk, Faster fully polynomial approximation schemes for Knapsack problems (Thesis thesis), Massachusetts Institute of Technology, . hdl:1721.1/98564.
- (en) Florian, Lenstra et Rinnooy Kan, « Deterministic Production Planning: Algorithms and Complexity », Management Science, vol. 26, no 7, , p. 669–679 (ISSN 0025-1909, DOI 10.1287/mnsc.26.7.669, lire en ligne)
- (en) Lawler, « A fully polynomial approximation scheme for the total tardiness problem », Operations Research Letters, vol. 1, no 6, , p. 207–208 (ISSN 0167-6377, DOI 10.1016/0167-6377(82)90022-0, lire en ligne).
- (en) van Hoesel et Wagelmans, « Fully Polynomial Approximation Schemes for Single-Item Capacitated Economic Lot-Sizing Problems », Mathematics of operation research, (lire en ligne).
- (en) Cai, « Minimization of agreeably weighted variance in single machine systems », European Journal of Operational Research, vol. 85, no 3, , p. 576–592 (ISSN 0377-2217, DOI 10.1016/0377-2217(93)E0367-7, lire en ligne).
- (en) Woeginger, « An Approximation Scheme for Minimizing Agreeably Weighted Variance on a Single Machine », INFORMS Journal on Computing, vol. 11, no 2, , p. 211–216 (ISSN 1091-9856, DOI 10.1287/ijoc.11.2.211, lire en ligne).
- (en) Vijay Vazirani, Approximation algorithms, Berlin, Springer, , 69–70 (ISBN 3540653678, OCLC 47097680, lire en ligne ).
- (en) Kellerer et Pferschy, « Improved Dynamic Programming in Connection with an FPTAS for the Knapsack Problem », Journal of Combinatorial Optimization, vol. 8, no 1, , p. 5–11 (ISSN 1573-2886, DOI 10.1023/B:JOCO.0000021934.29833.6b, S2CID 36474745, lire en ligne).
- (en) Ce Jin, An Improved FPTAS for 0-1 Knapsack, vol. 132, coll. « Leibniz International Proceedings in Informatics (LIPIcs) », , 76:1–76:14 (ISBN 9783959771092, DOI 10.4230/LIPIcs.ICALP.2019.76, arXiv 1904.09562, S2CID 128317990).
- (en) Jansen et Kraft, « A faster FPTAS for the Unbounded Knapsack Problem », European Journal of Combinatorics, combinatorial Algorithms, Dedicated to the Memory of Mirka Miller, vol. 68, , p. 148–174 (ISSN 0195-6698, DOI 10.1016/j.ejc.2017.07.016, arXiv 1504.04650, S2CID 9557898, lire en ligne).
- (en) D. V. Gribanov, Mathematical Optimization Theory and Operations Research, vol. 12755, coll. « Lecture Notes in Computer Science », , 79–95 p. (ISBN 978-3-030-77875-0, DOI 10.1007/978-3-030-77876-7_6, arXiv 2103.07257, S2CID 232222954), « An FPTAS for the $$\var Delta $$-Modular Multidimensional Knapsack Problem »
- (en) Bazgan, Hugot et Vanderpooten, « Implementing an efficient fptas for the 0–1 multi-objective knapsack problem », European Journal of Operational Research, vol. 198, no 1, , p. 47–56 (ISSN 0377-2217, DOI 10.1016/j.ejor.2008.07.047, lire en ligne).
- (en) Holzhauser et Krumke, « An FPTAS for the parametric knapsack problem », Information Processing Letters, vol. 126, , p. 43–47 (ISSN 0020-0190, DOI 10.1016/j.ipl.2017.06.006, arXiv 1701.07822, S2CID 1013794, lire en ligne).
- (en) Xu, « A strongly polynomial FPTAS for the symmetric quadratic knapsack problem », European Journal of Operational Research, vol. 218, no 2, , p. 377–381 (ISSN 0377-2217, DOI 10.1016/j.ejor.2011.10.049, lire en ligne).
- (en) Gopalan, Klivans, Meka et Štefankovic, « An FPTAS for #Knapsack and Related Counting Problems », 2011 IEEE 52nd Annual Symposium on Foundations of Computer Science, , p. 817–826 (ISBN 978-0-7695-4571-4, DOI 10.1109/FOCS.2011.32, S2CID 5691574, lire en ligne).
- (en) Ergun, Sinha et Zhang, « An improved FPTAS for Restricted Shortest Path », Information Processing Letters, vol. 83, no 5, , p. 287–291 (ISSN 0020-0190, DOI 10.1016/S0020-0190(02)00205-3, lire en ligne).
- (en) Tsaggouris et Zaroliagis, « Multiobjective Optimization: Improved FPTAS for Shortest Paths and Non-Linear Objectives with Applications », Theory of Computing Systems, vol. 45, no 1, , p. 162–186 (ISSN 1433-0490, DOI 10.1007/s00224-007-9096-4, S2CID 13010023, lire en ligne).
- (en) Kel’manov et Romanchenko, « An FPTAS for a vector subset search problem », Journal of Applied and Industrial Mathematics, vol. 8, no 3, , p. 329–336 (ISSN 1990-4797, DOI 10.1134/S1990478914030041, S2CID 96437935, lire en ligne).
Bibliographie
[modifier | modifier le code]- (en) Doerr, Eremeev, Neumann et Theile, « Evolutionary algorithms and dynamic programming », Theoretical Computer Science, vol. 412, no 43, , p. 6020–6035 (ISSN 0304-3975, DOI 10.1016/j.tcs.2011.07.024, lire en ligne)