• Aucun résultat trouvé

Algorithme approché (ratio 1/2) pour le problème P

Sorties: un sous-ensemble maximum de E vérifiant π (ratio 1/2)

1 Partager E en deux ensembles E1et E2de taille identique.

2 Appliquer l’algorithme A sur E1et stocker la solution S1.

3 Appliquer l’algorithme A sur E2et stocker la solution S2.

4 Renvoyer la plus grande solution entre S1et S2.

On peut représenter ce résultat sous forme de graphique, comme sur la figure 1.10

Notion de schémas

Dans le cas précédent, on a la chance d’avoir affaire à un problème pour lequel on peut facilement ajuster la complexité permise dans l’algorithme pour obtenir le ratio d’approximation voulu. On définit ainsi la notion de schéma exponentiel d’approximation :

Définition 1.5. Un problème de maximisation admet un schéma exponentiel d’approximation si, pour chaque ratio d’approximation ρ, on peut trouver un algorithme ρ-approché avec une complexité asymptotique meilleure que la complexité d’un algorithme exact (y compris à polynome près).

γ

1 Complexité

0 1 Ratio

FIGURE1.10 – Analyse de la méthode de splitting pour un problème pour lequel on dispose d’un algorithme exact de complexité O∗n).

Cette définition s’inspire de la complexité polynomiale, et en particulier de la classePTAS. Formellement, l’existence d’un schéma assure de gagner en complexité dès qu’on relâche le ratio d’approximation. Dans la pratique, on peut parfois espérer « relier » de manière continue un algorithme exact exponentiel à un algorithme polynomial approché à ratio garanti.

Un mot sur les tests pratiques

Contrairement à une grande partie des publications en approximation sans garantie, les articles constituant cette thèse ne contiennent pas de tests pratiques des algorithmes proposés, mais uniquement des démonstrations formelles de leur efficacité. Il y a principalement deux raisons à ça :

a) Tout d’abord, on pourrait envisager d’utiliser de tels résultats expéri- mentaux pour améliorer l’analyse des algorithmes. Ainsi, on pourrait imaginer disposer d’une courbe de complexité d’un de nos algorithmes, constater qu’elle « ressemble » à une courbe de la forme O∗n), et se servir de cette intuition pour améliorer notre analyse de l’algorithme. Malheureusement, ce serait uto- pique : il est difficile d’obtenir un jeu de données suffisant pour des tailles très variées, parce que les tailles critiques des problèmes qu’on peut considérer sont

assez faibles. Pour ces tailles, les facteurs polynomiaux que nous masquons en complexité asymptotique ne sont pas du tout négligeables, et brouilleraient ces mesures.

b) Ensuite, on serait tenté d’obtenir de tels résultats expérimentaux pour confronter nos algorithmes approchés à d’autres algorithmes existants, pour montrer que les nôtres sont plus rapides. Malheureusement, ici aussi, nous n’espérons pas grand chose d’une telle mise en pratique : les algorithmes que nous produisons sont très simplifiés pour permettre une analyse efficace. Il faudrait leur ajouter des heuristiques, des coupes, des améliorations pour les rendre compétitifs, et cela demanderait un travail complet (voir par exemple [3] comme exemple de tel travail sur leMIN VC). Bien que très utile, cette approche sortait du cadre de cette thèse, et nous avons choisi, pour leur lisibilité, de réduire les algorithmes à leur plus simple expression.

1.4.3

Algorithmes paramétriques

Paramétrisation et classe FPT

Un dernier aspect pour conclure cette introduction concerne les algorithmes paramétriques. Comme leur nom l’indique, dans ce domaine, on considère des instances d’un problème avec un paramètre particulier. Celui-ci peut-être le degré maximum, ou minimum des sommets d’un graphe, ou bien la taille de la solution espérée (on parle alors de paramètre standard), ou même la taille de la solution à un autre problème d’optimisation (on parlera en particulier du treewidth d’un graphe, ou de la taille d’une couverture comme paramètre).

Le but est alors d’exprimer la complexité d’un algorithme non plus sim- plement en fonction de la taille de l’instance n (complexité classique), mais également en fonction du paramètre k. On espère ainsi avoir une complexité meilleure, au moins pour certaines valeurs de k.

Illustrons cela avec un exemple. Considérons le problème MAX ISavec le paramètre standard. Il s’agit alors d’un problème de décision : « Peut-on, dans un graphe donné de taille n, trouver un ensemble indépendant de taille k ? ». Un algorithme naïf qui consiste à énumérer tous les sous-ensembles de taille k, soit

k

n sous-ensembles. On peut majorer grossièrement ce nombre et obtenir une complexité O∗(nk), ce qui donne une complexité qui peut être plus intéressante que le O∗(2n)de l’algorithme en complexité classique. On dit en l’occurence que le problèmeMAX ISmuni du paramètre standard est dans la classeXP. Définition 1.6 (XP). Un problème paramétrique P est dans XP s’il existe un algorithme polynomial résolvant P en temps polynomial pour toute valeur fixée

du paramètre.

Un grand nombre de problèmes paramétriques sont dansXP, c’est le cas de bien des problèmes à cardinalité fixée munis de leur cardinal comme paramètre (par exemple,MAX K-COVERAGEmuni de k).

À l’inverse, le problème de coloration d’un graphe n’est pas dansXP : détecter une coloration, même à trois couleurs, estNP-difficile dans le cas général (et on ne dispose donc pas d’algorithme polynomial). De même, en se servant du fait queMAX ISestNP-difficile même dans des graphes de degré 3, on en conclut queMAX IS, muni du degré du graphe n’est pas dansXP.

Dans [44], les auteurs introduisent une autre classe essentielle à la com- plexité paramétrique :

Définition 1.7 (FPT). Un problème paramétrique est dans FPT (pour Fixed Parameter Tractable) s’il existe un algorithme résolvant une instance de taille n avec un paramètre k en temps O(f (k)p(n)), où p est une fonction polynomiale. Cette définition est donc plus restreinte queXP : le degré du polynôme ne peut pas varier en fonction du paramètre. On peut donner comme exemple l’al- gorithme 1.7 pour le problèmeMIN VC. L’analyse de cet algorithme est simple : il cherche une couverture minimale en procédant arête par arête. La décroissance du paramètre impose de relancer l’étape 3 au plus 2k fois, ce qui assure un temps de calcul en O∗(2k)au total (le reste des opérations est polynomial).

Plus généralement, l’intuition qui se trouve souvent derrière l’appartenance à la classeFPT, c’est l’existence d’un algorithme de branchement tel que chaque nœud a un nombre borné de branches, et chaque branche assure une augmen- tation de la solution. Dans l’exemple duMIN VC, notre algorithme considère une arête, et on sait qu’une de ses deux extrémités sera dans la solution.

Il existe cependant une autre caractérisation de la classeFPT, que je présente maintenant.

Kernelisation et hiérarchie W[]

Cette autre caractérisation s’appuie sur la notion de Kernel.

Définition 1.8. Un problème paramétrique admet un kernel si toute instance de taille n (avec un paramètre k) peut se réduire en temps polynomial à une autre instance dont la taille est bornée par une fonction de k.

Dit autrement, la kernelisation est le procédé qui réduit un problème à son « noyau de difficulté » de faible taille.

ALGORITHME1.7 – Algorithme paramétrique pourMIN VC

Documents relatifs