Vous êtes sur la page 1sur 13

Trois paradigmes

Le principe dune methode gloutonne

Programmation Dynamique Diviser Pour Regner Algorithmes gloutons

Avaler tout ce quon peut = ` Construire au fur et a mesure une solution en faisant les choix qui paraissent optimaux localement Dans certains cas, cela donnera nalement la meilleure solution: on parlera dalgorithmes gloutons exacts. Dans dautres, non, on parlera dheuristiques gloutonnes.

Le principe general dune methode gloutonne


Comme on la dit plus haut, on est dans le cadre de ` problemes doptimisation. Plus precisement, on est le plus souvent dans le cas suivant: On a un ensemble ni delements, E . ` ` ` Une solution a notre probleme est construite a partir des elements de E : cest par exemple une partie de E ou un multi-ensemble delements de E ou une suite (nie) delements de E ou une permutation de E qui satisfait une certaine contrainte. A chaque solution S est associee une fonction objectif v(S): on cherche donc une solution qui maximise (ou minimise) cette fonction objectif.

Le schema general
` Il est base sur un critere local de selection des elements de E pour construire une solution optimale. En fait, on travaille sur lobjet solution partielle- debut de solution- et on doit disposer de: select: qui choisit le meilleur element restant selon le ` critere glouton. complete? qui teste si une solution partielle est une ` solution (complete). ajoutPossible? qui teste si un element peut etre ` ajoute a une solution partielle, i.e. si la solution partielle ` reste un debut de solution possible apres lajout de lelement. Dans certains cas, cest toujours vrai! ` ajout qui permet dajouter un element a une solution si cest possible.

Le schema dalgorithme est alors:

Un raisonnement type:

//on va construire la solution dans Sol //initialisation Ens=E; Sol.Init //= ensemble (ou suite) "vide" ou.. tant que Non Sol.Complete? et Ens.NonVide?) { select(x,Ens); //choix x selon crit`re glouton e si Sol.AjoutPossible(x) alors Sol.Ajout(x);fsi; //dans certains probl`mes,toujours le cas e si CertainesConditions alors Ens.Retirer(x); //selon les cas, x considr quune fois e e //ou jusqu` quil ne puisse plus etre ajout a e fin tant que; //la Solution partielle est compl`te .. e retourne Sol

` Le probleme: sont donnees n demandes de reservation -pour une salle, un equipement...- avec pour chacune dentre elles lheure de debut et de n (on supposera quon na pas besoin oeriode de battement entre deux reservations). Bien sur, a un instant donne, lequipement ne peut etre ` reserve quune fois! ` On cherche a donner satisfaction au maximum de demandes.

` La formalisation du probleme

Lalgorithme glouton

` Donc, le probleme est deni par: Donnee: n le nombre de reservations (d1 , f1 ), ..., (dn , fn ) pour chacune dentre elles, le debut et la n Sortie: les reservations retenues i.e. J [1..n] tel que: . elles sont compatibles : i J, j J, i = j di >= fj ou fi <= dj . On a satisfait le maximum de demandes, i.e. |J| (le cardinal de J) est maximal.

{g=Vide; Lib=0; //la ressource est dispo nb=0; //pas de rsa prise en compte pour le moment e pour chaque demande i dans lordre croissant de fin si d_i>=Lib //on peut la planifier {g.ajouter(i);//jajoute ` g la demande i a Lib=f_i; nb++;} fsi; fin pour; }

Comment prouver que lalgo est correct?

Comment prouver que lalgo est correct?

On denit une notion de distance sur les solutions.


1

La solution est correcte, i.e. les reservations retenues ` sont bien compatibles: facile a verier par induction. On prend pour invariant { les demandes de g sont ` compatibles et nissent toutes au plus tard a Lib}. La solution est optimale...??

Soient deux solutions A, B differentes; soit i le plus petit indice (les solutions etant supposees triees dans lordre des ns croissantes), tel que Ai soit different de Bi ou tel que Ai soit deni et pas Bi ou le contraire. dist(A, B) = 2i .

Preuve de loptimalite de lalgo:

Cas 1:

gi = oi raisonnons par labsurde: Supposons que la solution gloutonne g ne soit pas optimale. Soit alors o une solution optimale telle que dist(g, o) soit minimale (une telle o existe bien, lensemble des solutions etant ni). Soit donc i telle que dist(g, o) = 2i ; il y a trois possibilites: ` alors, la demande oi a une date de n au moins egale a celle de gi : sinon comme elle est compatible avec les precedentes, lalgo glouton laurait examinee avant gi et laurait choisie. Mais alors, si on transforme o en o en remplacant lactivite oi par gi , on obtient bien une solution, de meme cardinal que o donc optimale, et telle que dist(o , g) < dist(o, g): on ` aboutit a une contradicition! Cest ce quon appelle la propriete dechange.

Cas 2 et 3

Glouton versus Dynamique versus Diviser pour regner


Dans les deux cas on peut se representer lensemble des solutions sous forme dun arbre, les solutions etant construites incrementalement et pouvant etre vues comme une suite de choix. Dans le cas de la programmation dynamique, on parcourt toutes les solutions mais on remarque que de nombreux noeuds de larbre correspondent aux memes ` sous-problemes et larbre peut donc etre elague, ou plutot represente de facon beaucoup plus compacte comme un graphe (DAG: directed acyclic graph). Dans le cas dun algorithme glouton, on construit uniquement et directement-sans backtracking- une -et une ` seule- branche de larbre qui correspond a une solution optimale.

Cas 2: oi nest pas denie: alors |o| < |g|: contradiction, o ne serait pas optimale. Cas 3: gi nest pas denie: impossible car lactivite oi etant compatible avec les precedentes, lalgo glouton laurait choisie. ` Donc, dans tous les cas, on aboutit a une contradiction; ` lhypothese la solution gloutonne g nest pas optimale est fausse: la solution gloutonne est bien optimale!

Complexite:

Correction:

Encore faut-il que lalgorithme donne bien une solution ` optimale... et quon sache le prouver...: la reside souvent la difculte dans les algorithmes gloutons. La complexite est donc souvent de lordre de n logn (le tri ` selon le critere) +n f (n), si f (n) est le cout de la verication de la contrainte et de lajout dun element. Les algorithmes gloutons sont donc en general efcaces... Les preuves de correction dalgorithmes gloutons, sont souvent basees sur une propriete appelee de type echange: Propriete dechange: Soit une solution quelconque differente de la gloutonne: on peut la transformer en une autre solution au moins aussi bonne et plus proche de la solution gloutonne .

La Theorie

Exemples classiques

Les algorithmes de Prim et de Kruskal de calcul dun arbre de recouvrement dun graphe de poids minimal Les algorithmes gloutons sont bases sur la theorie des matrodes ...que nous netudierons pas. lalgorithme des plus courts chemins dans un graphe de Dijkstra le code de Huffman, ` de nombreuses versions de problemes daffectations de taches...

Bilan:

Bilan des 3 paradigmes

Pour mettre au point un algorithme glouton, il faut donc: ` Trouver un critere de selection: souvent facile ... mais pas toujours ` ` Montrer que le critere est bon, c.a.d. que la solution obtenue est optimale: souvent dur! Limplementer: en general facile et efcace!

Diviser Pour Regner, Divide and Conquer


Pb de taille n

Programmation Dynamique
Pb de taille n

taille n/k

taille n/k

ss-pb

ss-pb

ss-pb

n/k*k

n/k*k

n/k*k

n/k*k

ss-pb

ss-pb

ss-pb

ss-pb

ss-pb

ss-pb

cas de base La hauteur de larbre est petite, en log n

cas de base

cas de base Il y a de nombreux sous-problemes identiques.

Programmation Dynamique
Pb de taille n

Algorithmes Gloutons
Pb de taille n

ss-pb1

ss-pb 2

ss-pb 4

ss-pb1

ss-pb 2

ss-pb 4

ss-pb2

ss-pb3

ss-pb

ss-pb

ss-pb3

ss-pb5

ss-pb2

ss-pb3

ss-pb 3

ss-pb 5

cas de base ` Il y a de nombreux sous-problemes identiques.

cas de base On transforme larbre en un graphe acyclique des ` sous-problemes.

Algorithmes Gloutons
Depart

Algorithmes Gloutons
Depart

choix 1

choix 2

choix 3

choix 1

choix 2

choix 3

choix 1.1

choix 1.2

choix 2.1

choix 2.2

choix 3.1

choix 1.1

choix 1.2

choix 2.1

choix 2.2

choix 3.1

Le glouton fait ses choix localement pour ne pas explorer tout larbre.

Le glouton fait ses choix localement pour ne pas explorer tout larbre.

Algorithmes Gloutons
Depart

Algorithmes Gloutons
Depart

choix 1

choix 2

choix 3

choix 1

choix 2

choix 3

choix 1.1

choix 1.2

choix 2.1

choix 2.2

choix 3.1

choix 1.1

choix 1.2

choix 2.1

choix 2.2

choix 3.1

Le glouton fait ses choix localement pour ne pas explorer tout larbre.

Le glouton fait ses choix localement pour ne pas explorer tout larbre.

` Deuxieme partie du cours

Comment savoir si on peut esperer resoudre ` efcacement un probleme?

` Complexite de problemes ` ` Que faire face a un probleme dur? Decidabilite

` Probleme des binomes: Donnee: n etudiants, pour chacun la liste de ceux avec qui il accepte de travailler en binome Sortie: une repartition des etudiants en binomes qui respecte les choix des etudiants (si il y en a une) ` Probleme des trinomes: Donnee: n etudiants, pour chacun la liste de ceux avec qui il accepte de travailler en trinome Sortie: une repartiton des etudiants en trinomes qui respecte les choix des etudiants (si il y en a une)

` Complexite de Problemes
` Letude de la complexite des problemes -computational ` ` complexity- sattache a determiner la complexite intrinseque ` ` ` dun probleme et a classier les problemes selon celle-ci, ` ` donc a repondre a des questions comme: Quelle est la complexite minimale dun algorithme ` resolvant tel probleme? Comment peut-on dire quun algorithme est optimal (en complexite)? Existe-t-il un algorithme polynomial pour resoudre un ` probleme donne? ` Quest-ce quun probleme dur? ` Comment prouver quun probleme est au moins aussi dur quun autre?

` La complexite dun probleme: denition

Denition ` La complexite dun probleme est la complexite minimale dans le pire des cas dun algorithme qui le resout - cest ` souvent la complexite en temps quon considere mais on ` peut sinteresser a dautres mesures comme par exemple la complexite en espace-. Attention: Cette denition -un peu oue- ne precise pas quel ` modele dalgorithme on choisit: lanalyse de la complexite risque detre differente si on programme en C ou en Machine de Turing.

` La complexite dun probleme

` La complexite dun probleme


` Calculer la complexite dun probleme est une chose extremement ardue en general. On se contente souvent dencadrer:

` Par exemple si on dit que la complexite dun probleme est quadratique cela veut dire: quil existe un algorithme quadratique qui le resout ET que tout algorithme qui le resout sera au moins quadratique

pour trouver une borne superieure, il suft de trouver UN algorithme. pour trouver une bonne borne inferieure, les choses sont souvent plus dures... : pour montrer par exemple ` quun probleme est de complexite au moins exponentielle, il faut montrer que TOUT algorihtme le resolvant est exponentiel. ` Cerner exactement la complexite dun probleme est souvent fort difcile: quand les deux bornes concident, cest lideal mais cest assez rare!

Lexemple de la multiplication

Trois methodes pour trouver une borne inferieure

Lalgorithme de lecole primaire pour multiplier deux entiers de longueur n est en O(n2 ). Lalgorithme de Karatsuba pour multiplier deux entiers de longueur n est en O(nlog2 (3) ). On conjecture que la multiplication de deux entiers de longueur n peut se faire en O(n log n) Le meilleur algorithme connu est en O(n log n log(log n)). La meilleure borne inferieure trouvee est O(n).

Les methodes dites doracle ou dadversaire Les arbres de decision Les Reductions

Les methodes dites doracle ou dadversaire:

Les methodes dites doracle ou dadversaire:

On suppose quil existe un algorithme utilisant moins dun certain nombre doperations dun certain type; on construit alors une donnee qui met en defaut lalgorithme. Exemple Pourquoi rechercher le maximum dans une liste de n elements necessite n 1 comparaisons?

Pourquoi rechercher le maximum dans une liste de n elements necessite n 1 comparaisons? Sinon, soit une liste de n elements differents de maximum M: si lalgorithme a fait au plus n 2 comparaisons, au moins un element different de M na jamais perdu . Remplacons-le par M + 1: toutes les comparaisons vont donner le meme resultat: donc lalgorithme devrait toujours sortir M comme maximum, alors que le maximum est maintenant M + 1.

Les arbres de decision


Ils sont utilises pour les algorithmes de type recherche ou tri par comparaisons: on suppose que seules des comparaisons entre les elements sont utilisees pour obtenir de linformation sur lordre ou legalite des elements. Un arbre de decision represente toutes les comparaisons executees par lalgorithme sur les donnees dune certaine taille: ` Un noeud correspond a une comparaison, ses ls aux differentes reponses possibles de la ` comparaison (donc si le test est a valeur booleenne, les noeuds sont binaires); ` Une execution possible correspond donc a une branche ` Deux donnees correspondant a la meme branche ` correpondront a la meme suite dinstructions.

Exemple

` ` On cherche a deviner un nombre entier de 1 a 16. On a le ` droit de poser des questions x <= c pour tout c de 1 a 16. Quelle strategie adopter pour poser le moins de questions dans le pire des cas? Pourquoi est-elle optimale? On peut representer larbre des executions comme un arbre de decision binaire avec au moins 16 feuilles: larbre est au moins de hauteur 4. Quelle que soit la strategie, on devra poser au moins 4 questions dans le pire des cas.

Exemples

Les reductions

Exemple Toute recherche par comparaisons dun element parmi un tableau trie de n elements effectue au moins de lordre de log n comparaisons. Exemple Tout tri par comparaisons de n elements effectue au moins de lordre de n log n comparaisons.

` Le principe est simple. On essaie de ramener un probleme ` a un autre (dont par exemple on connat la complexite). Exemple Si il existait un algorithme en O(n log n) pour calculer le carre dun entier de n chiffres, il existerait un algorithme en O(n log n) pour calculer le produit de deux entiers de n chiffres,

` Les reductions pour montrer quun probleme est dur

` Les classes de Problemes


` Lidee est de classier les problemes selon lordre de grandeur de leur complexite. Tout dabord pour simplier, on ` va se limiter aux problemes de decision ou proprietes

` Supposons par exemple quon sache que le probleme DURDUR est de complexite exponentielle, donc que tout algorithme le resolvant est au moins exponentiel. ` Si on arrive a reduire dune facon peu couteuse le ` ` probleme DURDUR dans le probleme MONPB, MONPB sera lui aussi de complexite au moins exponentielle.

Denition ` Une propriete est une fonction a valeurs booleennes. ` Un probleme de decision peut donc etre vu comme un ` ensemble I dinstances du probleme avec pour chaque instance une reponse oui ( pour les instances positives) ou non (les instances negatives). ` Exemple: etre premier est une fonction qui a tout entier naturel associe oui -si il est premier-, non sinon. Les instances positives sont les entiers premiers, les negatives les entiers non premiers!

Abstrait/Concret

Propriete/langage:
` On peut donc ensuite associer a la propriete le langage des (representations des) donnees veriant cette propriete. (les representations des instances positives) ` Par exemple, a la propriete etre premier, on associera lensemble des representations des entiers premiers dans une certaine base non unaire. Donc, verier si un entier est ` ` premier se ramene a tester si sa representation (=un mot) est dans le langage. ` De la meme facon, a la propriete etre 3-colorable, on associera les representations des graphes 3-colorables, selon un codage donne. ` ` Decider une propriete se ramene donc a tester ` lappartenance dun mot a un langage.

A une propriete abstraite denie sur un ensemble ` quelconque, on peut associer une propriete concrete denie sur des mots. ` Par exemple a la propriete abstraite etre premier denie sur les entiers, on associera la propriete etre la representation binaire dun entier premier denie sur {0, 1} . Cela suppose donc quon a choisi une representation des ` instances du probleme.

Un premier exemple: La classe P

` P est la classe des problemes praticables

Denition ` La classe P (ou PTIME ) est la classe des problemes de decision pour lesquels il existe un algorithme de resolution polynomial en temps. ` Cette denition est (quasiment-) independante du modele dalgorithme choisi: un algorithme polynomial en C sera polynomial si il est traduit en termes de machine de Turing ` et les modeles classiques de calcul (excepte les ordinateurs quantiques) sont polynomialement equivalents.

Denition ` Un probleme de decision est dit praticable si il est dans P, impraticable sinon; ` existe-t-il un algorithme praticable pour ce probleme? ` ` se ramene a ` ce probleme est-il dans P?

` Exemples de problemes praticables ou non

Etre pair est P Etre trie pour une liste dentiers est P Etre premier est P ... On le sait depuis quelques annees seulement ` le probleme des echecs generalises -i.e. la taille de lechiquier est non xee, on a une conguration, on ` cherche a savoir si elle est gagnante- nest pas P Decider si une expression rationnelle etendue (avec le complementaire en plus de lunion, la concatenation et letoile) represente tous les mots nest pas P

Vous aimerez peut-être aussi