# Schéma d'approximation en temps polynomial

En informatique, un schéma d'approximation en temps polynomial (en anglais polynomial-time approximation scheme, abrégé en PTAS) est une famille d'algorithmes d'approximation pour des problèmes d'optimisation combinatoire. On dit aussi plus simplement schéma d'approximation polynomial. Le plus souvent, les problèmes d'optimisation combinatoire considérés sont NP-difficiles.
Plusieurs variantes des PTAS existent : des définitions plus restrictives comme les EPTAS et FPTAS, ou d'autres qui reposent sur les algorithmes probabilistes comme les PRAS et FPRAS.

## Définition

Un PTAS est un algorithme qui prend en arguments une instance d'un problème d'optimisation et un paramètre $\varepsilon >0$ et qui produit, en temps polynomial, une solution qui est optimale à un facteur $1+\varepsilon$ près (ou $1-\varepsilon$ pour un problème de maximisation).
Par exemple, pour le problème du voyageur de commerce euclidien, un PTAS prend en entrée la donnée de n coordonnées dans le plan (ou dans un espace euclidien de dimension d) dans un espace euclidien, ainsi que le paramètre $\varepsilon >0$. Le PTAS produit alors un tour dont la longueur est au plus $(1+\varepsilon )\cdot L$, où $L$ est la longueur du tour le plus court$^,$.
On demande de plus que le temps d'exécution d'un PTAS soit polynomial en la taille $n$ de l'instance pour chaque $\varepsilon$ fixé, mais il peut être différent pour des valeurs différentes de $\varepsilon$. Ainsi, un algorithme en temps $O(n^{1/\varepsilon })$ ou même en $O(n^{\exp(1/\varepsilon )})$ est considéré comme un PTAS.

## Variantes
### Schémas déterministes

Un problème qui se pose dans la pratique avec les algorithmes PTAS est que l'exposant du polynôme peut croître très rapidement quand $\varepsilon$ diminue, par exemple quand le temps est en $O(n^{1/\varepsilon })$. Une façon d'y répondre est de définir des schémas d'approximation temps polynomial dits efficaces (en anglais EPTAS pour efficient polynomial-time approximation scheme), pour lesquels on demande un temps d'exécution en $O(n^{c})$ pour une constante $c$ indépendante de $\varepsilon$. On est ainsi assuré que l'accroissement la taille du problème a le même effet relatif sur l'accroissement du temps de calcul, indépendamment du $\varepsilon$ choisi ; la constante cachée dans le $O$ peut par contre dépendre arbitrairement de $\varepsilon$. Par exemple, la complexité d'un EPTAS peut par exemple être $n^{3}2^{\frac {1}{\varepsilon }}$.
Un schéma encore plus restrictif, et utile en pratique, est le schéma d'approximation entièrement en temps polynomial (en anglais FPTAS pour fully polynomial-time approximation scheme), dans lequel l'algorithme doit être en temps polynomial à la fois en la taille $n$ du problème et en $1/\varepsilon$. Par exemple, la complexité d'un FPTAS peut par exemple être $n^{3}\left({\frac {1}{\varepsilon }}\right)^{2}$. Tous les problèmes de la classe FPTAS sont à complexité FPT. Un exemple de problème qui possède un FPTAS est le problème du sac à dos.
Tout problème d'optimisation NP-complet avec une fonction d’objectif bornée polynomialement (Strongly NP-complete) ne peut avoir de solution FPTAS sauf si P=NP. La réciproque n'est toutefois pas vraie : si P n'est pas égal à NP, le problème du sac-à-dos à deux contraintes n'est plus fortement NP-difficile, mais n'a pas de schéma d'approximation FPTAS même si l’objectif optimal est polynomialement bornée.
Sauf si P = NP, on a l'inclusion stricte FPTAS ⊊ PTAS ⊊ APX. Dans ce cas, un problème APX-difficile ne possède pas de schéma PTAS.
Une autre variante déterministe des PTAS est le schéma d'approximation en temps quasi polynomial (en anglais QPTAS pour quasi-polynomial-time approximation scheme). Un tel schéma a une complexité en temps en $n^{\operatorname {polylog} (n)}$ pour chaque $\varepsilon >0$ fixé.

### Schémas randomisés

Certains problèmes qui n'ont pas de PTAS peuvent admettre un algorithme probabiliste avec des propriétés similaires, appelé un schéma d'approximation en temps polynomial randomisé (en anglais PRAS pour polynomial-time randomized approximation scheme). Un PRAS est un algorithme qui prend en entrée une instance d'un problème d'optimisation et de comptage, et qui produit en temps polynomial une solution qui a une forte probabilité d'être optimale à un facteur $\varepsilon$ près. Par convention, forte probabilité signifie une probabilité plus grande que 3/4, même si la plupart des classes de complexité est « robuste » (c'est-à-dire insensible) quant à des variations de la valeur exacte. Comme les PTAS, les PRAS doivent avoir un temps d'exécution polynomial en $n$, mais pas forcément en $\varepsilon$ ; avec les mêmes restrictions que plus haut sur le temps d'exécution en fonction de $\varepsilon$, on définit un schéma d'approximation en temps polynomial randomisé efficace ou EPRAS similaire aux EPTAS, et un schéma d'approximation randomisé entièrement en temps polynomial ou FPRAS similaire aux FPTAS. Mark Jerrum et Alistair Sinclair ont été distingués par le prix Gödel en 1996 pour avoir prouvé que le calcul du nombre de couplages d'un graphe bipartite et celui du permanent d'une matrice à coefficients positifs pouvaient être réalisés par un algorithme de la classe FPRAS.