Comme vous l'avez dit, il n'y a pas de décision à prendre. Il faut donc de nouvelles classes de complexité et de nouveaux types de réductions pour parvenir à une définition appropriée de la dureté NP pour les problèmes d' optimisation .
Une façon de faire est d’avoir deux nouvelles classes NPO et PO contenant des problèmes d’optimisation et qui imitent bien sûr les classes NP et P pour les problèmes de décision. De nouvelles réductions sont également nécessaires. Ensuite, nous pouvons recréer une version de NP-hardness pour les problèmes d’optimisation dans le sens indiqué pour les problèmes de décision. Mais nous devons d’abord convenir de ce qu’est un problème d’optimisation .
Définition: Soit un problème d’optimisation . est l'ensemble d' entrées ou d' instances convenablement codées sous forme de chaînes. est une fonction qui mappe chaque instance sur un ensemble de chaînes, solutions réalisables de l’instance . C'est un ensemble parce qu'il existe de nombreuses solutions à un problème d'optimisation. Nous n’avons donc pas de fonction objective qui nous indique pour chaque paire d’instance et solutionne son coût ou sa valeur . O=(X,L,f,opt)XLx∈Xx ( x , y ) y ∈ L ( x ) o p tf(x,y) y∈L(x)opt nous dit si nous maximisons ou minimisons.
Cela nous permet de définir ce qu'est une solution optimale : Soit la solution optimale d'une instance d'un problème d'optimisation avecLa solution optimale est souvent désignée par .x ∈ X O = ( X , L , f , o p t ) f ( x , y o p t ) = o p t { f ( x , y ' ) | y ' ∈ L ( x ) } . y *yopt∈L(x)x∈XO=(X,L,f,opt)
f(x,yopt)=opt{f(x,y′)∣y′∈L(x)}.
y∗
Nous pouvons maintenant définir la classe NPO : Soit l’ensemble de tous les problèmes d’optimisation avec:O = ( X , L , f , o p t )NPOO=(X,L,f,opt)
- X∈P
- Il existe un polynôme avec pour toutes les instances et toutes les solutions possibles . De plus, il existe un algorithme déterministe qui décide en temps polynomial si .| y | ≤ p ( | x | ) x ∈ X y ∈ L ( x ) y ∈ L ( x )p|y|≤p(|x|)x∈Xy∈L(x)y∈L(x)
- f peut être évalué en temps polynomial.
L'intuition derrière cela est:
- Nous pouvons vérifier efficacement si est réellement une instance valide de notre problème d'optimisation.x
- La taille des solutions possibles est polynomiale dans la taille des entrées. Et nous pouvons vérifier efficacement si est une solution fesible de l’instance .xy∈L(x)x
- La valeur d'une solution peut être déterminée efficacement.y∈L(x)
Cela reflète la définition de , maintenant pour PO : Soit l'ensemble des problèmes de qui peuvent être résolus par un algorithme déterministe en temps polynomial.P O N P ONPPONPO
Nous pouvons maintenant définir ce que nous voulons appeler un algorithme d'approximation : un algorithme d' approximation d'un problème d'optimisation est un algorithme qui calcule une solution réalisable pour une instance .y ∈ L ( x ) x ∈ XO=(X,L,f,opt)y∈L(x)x∈X
Remarque: pour que nous ne demandions pas une solution optimale , nous souhaitons seulement avoir une solution réalisable .
Maintenant nous avons deux types d’erreurs: L’ erreur absolue d’une solution réalisable d’une instance du problème d’optimisation est.x ∈ X O = ( X , L , f , o p t ) | f ( x , y ) - f ( x , y ∗ ) |y∈L(x)x∈XO=(X,L,f,opt)|f(x,y)−f(x,y∗)|
Nous appelons l'erreur absolue d'un algorithme d'approximation pour le problème d'optimisation lié par si l'algorithme calcule pour chaque instance une solution réalisable avec une erreur absolue liée à .O k A x ∈ X kAOkAx∈Xk
Exemple: Selon le théorème de Vizing, l' index chromatique d'un graphe (le nombre de couleurs dans la coloration des contours avec le moins de couleurs utilisées) est ou , où est le degré maximal du noeud. À partir de la démonstration du théorème, on peut concevoir un algorithme d'approximation calculant une coloration de contour avec couleurs. En conséquence, nous avons un algorithme d'approximation pour le -Problem où l'erreur absolue est limitée par .ô + 1 ô ô + 1 M i n i m u m - E d g e C o l o r i n g 1ΔΔ+1ΔΔ+1Minimum−EdgeColoring1
Cet exemple est une exception, les petites erreurs absolues sont rares, nous définissons donc l' erreur relative de l'algorithme d'approximation sur l'instance du problème d'optimisation avec pour tout et soitA x O = ( X , L , f , o p t ) f ( x , y ) > 0 x ∈ X y ∈ L ( x )ϵA(x)AxO=(X,L,f,opt)f(x,y)>0x∈Xy∈L(x)
ϵA(x):={0|f(x,A(x))−f(x,y∗)|max{f(x,A(x)),f(x,y∗)}f(x,A(x))=f(x,y∗)f(x,A(x))≠f(x,y∗)
où est une solution réalisable calculée par l'approximation de l' algorithme .A(x)=y∈L(x)A
Nous pouvons maintenant définir l'approximation-algorithme pour le problème d'optimisation comme étant un -approximation-algorithme pour si l'erreur relative est bornée par pour chaque instance , ainsi
AO=(X,L,f,opt)δOϵA(x)δ≥0x∈X
ϵA(x)≤δ∀x∈X.
Le choix de dans le dénominateur de la définition de l'erreur relative a été sélectionné pour rendre la définition symétrique permettant de maximiser et de minimiser. La valeur de l'erreur relative . En cas de problème d’agrandissement, la valeur de la solution n’est jamais inférieure à et jamais supérieure à pour un problème de minimisation.max{f(x,A(x)),f(x,y∗)}ϵA(x)∈[0,1](1−ϵA(x))⋅f(x,y∗)1/(1−ϵA(x))⋅f(x,y∗)
Nous pouvons maintenant appeler un problʻeme d'optimisation approximatif s'il existe un algorithme aproximation pour qui s'exécute en temps polynomial.δδAO
Nous ne voulons pas regarder l'erreur pour chaque instance , nous regardons seulement dans le pire des cas. Ainsi , nous définissons , l' erreur de relativ MAXIMAL de l'approximation algorithme pour le problème d'optimisation être
xϵA(n)AO
ϵA(n)=sup{ϵA(x)∣|x|≤n}.
Oùdevrait être la taille de l'instance.|x|
Exemple: une correspondance maximale dans un graphique peut être transformée en une couverture de nœud minimale en ajoutant tous les nœuds incidents de la correspondance à la couverture de sommet. Doncles bords sont couverts. Comme chaque sommet de sommet, y compris celui optimal, doit avoir l’un des nœuds de chaque bord couvert, sinon il pourrait être amélioré, nous avons . Il en résulte que
Ainsi, l'algorithme glouton pour une correspondance maximale est un approximatif algorithme pour . Par conséquent, vaut approximativement.C1/2⋅|C|1/2⋅|C|⋅f(x,y∗)
|C|−f(x,y∗)|C|≤12
1/2Minimal−VertexCoverMinimal−VertexCover1/2
Malheureusement, l'erreur relative n'est pas toujours la meilleure notion de qualité pour une approximation, comme le montre l'exemple suivant:
Exemple: Un simple algorithme glouton peut approcher . Une analyse montre que et donc serait -approximable.Minimum−SetCover
|C||C∗|≤Hn≤1+ln(n)
Minimum−SetCoverln(n)1+ln(n)
Si l'erreur relative est proche de la définition suivante est avantageuse.1
Soit être un-problème d'optimisation avec pour tout et et une approximation de l' algorithme pour . Le rapport approximatif de la solution réalisable de l'instance est
O=(X,L,f,opt)f(x,y)>0x∈Xy∈L(x)AO rA(x)A(x)=y∈L(x)x∈X
rA(x)={1max{f(x,A(x))f(x,y∗),f(x,y∗)f(x,A(x))}f(x,A(x))=f(x,y∗)f(x,A(x))≠f(x,y∗)
Comme précédemment on appelle une approximation de l' algorithme un -approximation algorithme pour le problème d'optimisation si l'approximation du rapport est délimitée par pour chaque entrée .
Et encore une fois si nous avons un algorithme de -approximation pour le problème d'optimisation alors est appelé approximable . Encore une fois, nous nous intéressons uniquement au cas le plus défavorable et définissons le rapport d’approximation maximal comme étant
ArOrA(x)r≥1x∈X
rA(x)≤r
rAOOr rA(n)rA(n)=sup{rA(x)∣|x|≤n}.
En conséquence, le rapport d'approximation est supérieur à pour les solutions sous-optimales. Ainsi, les meilleures solutions ont des ratios plus faibles. Pour nous pouvons maintenant écrire qu'il est approximatif . Et dans le cas de nous savons d'après l'exemple précédent qu'il est approximativement égal à . Entre erreur relative et approximation-ratio nous avons des relations simples:
1Minimum−SetCover(1+ln(n))Minimum−VertexCover2rA(x)=11−ϵA(x)ϵA(x)=1−1rA(x).
Pour les petits écarts par rapport aux valeurs optimales et l'erreur relative est avantageuse par rapport au rapport d'approximation, ce qui indique ses points forts pour les grands écarts et .ϵ<1/2r<2ϵ≥1/2r≥2
Les deux versions de approximable ne se chevauchent pas, une version a toujours et l'autre . Le cas n'est pas problématique car il n'est atteint que par des algorithmes produisant une solution exacte et ne nécessitant par conséquent pas d'être traités comme des algorithmes d'approximation.αα≤1α≥1α=1
Une autre classe apparaît souvent APX . Il est définit comme l'ensemble de tous les problèmes d'optimisation- de ce havre un -approximation algorithme avec qui fonctionne en temps polynomiale.ONPOrr≥1
Nous sommes presque à travers. Nous aimerions copier les idées réussies de réductions et de complétude de la théorie de la complexité. L'observation est que beaucoup de variantes de décision NP-difficiles de problèmes d'optimisation sont réductibles les unes aux autres, alors que leurs variantes d'optimisation ont des propriétés différentes quant à leur approximabilité. Cela est dû à la réduction polynomiale de temps-Karp utilisée dans les réductions de NP-complétude, ce qui ne préserve pas la fonction objective. Et même si les fonctions objectives sont préservées, la réduction de temps polynomial peut réduire la qualité de la solution.
Nous avons besoin d’une version plus forte de la réduction, qui mappe non seulement les instances du problème d’optimisation aux instances de , mais également les bonnes solutions de et les bonnes solutions de .O1O2O2O1
Nous définissons donc l’ approximation-préservation-réduction pour deux problèmes d’optimisation et de . Nous appelons réductible à , écrit comme : , s'il existe deux fonctions et et une constante avec:O1=(X1,L1,f1,opt1)O2=(X2,L2,f2,opt2)NPOO1 APO2O1≤APO2ghc
- g(x1,r)∈X2 pour tous et rationnelx1∈X1r>1
- L2(g(x,r1))≠∅ si pour tous les et rationnelL1(x1)≠∅x1∈X1r>1
- h(x1,y2,r)∈L1(x1) pour tout et rationnel et pour toutx1∈X1r>1y2∈L2(g(x1,r))
- Pour fixé, les deux fonctions et peuvent être calculées par deux algorithmes en temps polynomial dans la longueur de leurs entrées.rgh
- Nous avons pour tout et rationnel et pour tout
f2(g(x1,r),y2)≤r⇒f1(x1,h(x1,y2,r))≤1+c⋅(r−1)
x1∈X1r>1y2∈L2(g(x1,r))
Dans cette définition, et dépendent de la qualité de la solution . Ainsi, pour différentes qualités, les fonctions peuvent différer. Cette généralité n'est pas toujours nécessaire et nous travaillons simplement avec et .ghrg(x1)h(x1,y2)
Maintenant que nous avons la notion d'une réduction pour l'optimisation, nous pouvons enfin transférer beaucoup de choses de la théorie de la complexité. Par exemple, si nous savons que et que nous montrons que il en résulte que aussi.O2∈APXO1≤APO2O1∈APX
Enfin, nous pouvons définir ce que nous entendons par -hard et -complete pour des problèmes d'optimisation:CC
Soit un problème d'optimisation de et une classe de problèmes d'optimisation de puis s'appelle -hard en ce qui concerne si pour tout est en .ONPOCNPOOC≤APO′∈C O′≤APO
Ainsi, une fois de plus, nous avons la notion du problème le plus difficile de la classe. Pas étonnant qu'un problème dur soit appelé -complet par rapport à s'il s'agit d'un élément de .CC≤APC
Ainsi, nous pouvons maintenant parler de complet et de complet, etc. Et bien sûr, il nous est maintenant demandé de présenter un premier problème complet avec qui prend le rôle de . Il est presque naturel que puisse être démontré comme étant complet. Avec l'aide du théorème PCP, on peut même montrer que est .NPOAPXNPOSATWeighted−SatisfiabilityNPOMaximum−3SATAPX