Cours 10

publicité
Algorithmes et
structures de données avancés
Cours 10
Patrick Reuter
http://www.labri.fr/~preuter
Considérons un graphe complet avec n
sommets :
Trouver le meilleur chemin du sommet s1 à
s2
 Comparer tous les chemins possibles
• Pour aller d’un sommet s1 à un sommet
s2, combien y-a-t-il de possibilités ?
Autrement dit :
• Combien de différentes chaînes simples
existent de s1 jusqu’à s2 ?
• Chaînes simples de longueur 1
s1, s2
 1 possibilité
• Chaînes simples de longueur 2
s1, s3, s2
s1, s4, s2,
…
s1, .., sn, s2
 n-2 possibilités
• Chaînes simples de longueur 3
s1, s3, s4, s2
s1, s3, s5, s2,
…
s1, s3, sn, s2
S1, s4, s5, s2
S1, s4, s6, s2
…
S1, s4, sn, s2
…
S1, sn-1, sn, s2
 (n-2) * (n-3) possibilités
• Chaînes simples de longueur 4
 (n-2) * (n-3) * (n-4) possibilités
• …
• Chaînes simples de longueur n-1
 (n-2) * (n-3) * (n-4) * .. * 2 * 1
possibilités
 (n-2)! possibilités
• En total :
– 1 + (n-2) + (n-2) * (n-3) + … + (n-2)!
Possibilités
 O(n!) possibilités
• Pour certaines problèmes, les algorithmes
gloutons peuvent trouver la meilleur
permutation plus vite
• Pour le problème de la chaîne (simple!) la plus
courte, c’est l’Algorithme de Dijkstra.
• Si le graphe possède m arcs et n sommets,
alors la complexité de l'algorithme est
Θ(m + n log n)
Algorithme de Dijkstra
Ensembles
M1
{}
M2
Distances
M3
s1
s2
s3
s4
s5
0
∞
∞
∞
∞
Théorie de la complexité
Classes de Grand-O
•
•
O(1)
O(log n)
complexité constante
complexité logarithmique
•
O(n)
complexité linéaire
•
O(n log n)
complexité quasi-linéaire
•
O(na)
complexité polynomiale
–
–
•
•
O(n2)
O(n3)
O(an)
O(n!)
complexité quadratique
complexité cubique
complexité exponentielle
complexité factorielle
O(log n)  O(n)  O(n log n)  O(n2)  O(n3)  O(an)  O(n!)
Théorie de la complexité –
Changement de la fonction
2ème solution
changer la fonction
O(n)
• O(log n)
logarithmique
• O(n)
linéaire
• O(n log n)
Quasi-linéaire
• O(n2)
quadratique
• O(n3)
cubique
• O(an)
exponentiel
n
Informatique théorique
• Théorie de complexité
• Théorie de calculabilité
Exemple
• Un homme à un ensemble de n pépites (pièces
d'or), qui pèsent p1, p2, …, pn grammes.
• Cet homme à deux enfants
• Existe-t-il une partition des pépites en deux
sous-ensembles disjoints pour que la somme
des poids des deux sous-ensembles soit égal ?
Il s'agit du problème PARTITION
PARTITION
• Comment trouver les partitions ?
• Comment vérifier avec une partition
donnée si les sommes des deux poids
sont égales ?
Théorie de complexité
• L'étude formelle de la difficulté des
problèmes en informatique.
• Elle se distingue de la théorie de la
calculabilité
– qui s'attache à savoir si un problème peut ou
peut pas être résolu par un ordinateur.
Théorie de complexité
• Concentration sur les problèmes qui
peuvent effectivement être résolus,
• Savoir s'il y a une solution "efficace" en se
basant sur une estimation (théorique)
– des temps de calcul et (complexité
temporelle)
– des besoins en mémoire informatique.
(complexité de mémoire)
Théorie de complexité
• Un problème est formalisé de la manière
suivante :
– un ensemble de données (ou instance) en entrée,
– une question sur ces données (pouvant demander
éventuellement un calcul).
• La théorie de la complexité ne traite que des
problèmes de décision binaire, (réponse soit oui
ou non)
Théorie de complexité
• Cependant :
– on étend la notion de complexité aux
problèmes d'optimisation.
• En effet, il est facile de transformer un
problème d'optimisation en problème de
décision.
Théorie de complexité
• Si par exemple on cherche à optimiser
une valeur n
– on traite le problème de décision qui consiste
à comparer n à un certain k.
– En traitant plusieurs valeurs de k on peut
déterminer une valeur optimale.
TSP
TSP – Traveling Salesman
Problem (Problème du
voyageur de commerce)
étant donné
- n sommets (des « villes »)
- et les distances séparant
chaque sommet,
trouver une chaine de longueur
totale minimale qui passe
exactement une fois par
chaque sommet (et revienne
au sommet de départ).
(n-1)! Possibilités !
• TSP métrique :
On peut passer plusieurs fois par le meme
sommet
TSP
Voici un énoncé plus formel du problème du voyageur de
commerce sous forme de problème de décision.
Données :
• un graphe complet G = (V,E,φ) avec V un ensemble de
sommets, E un ensemble d'aretes et φ une matrice de
distances;
• un entier B
Question :
• Existe-t-il un cycle passant une et une seule fois par
chaque sommet tel que la somme des coûts des arcs
utilisés soit inférieure à B
TSP
• on ne connaît pas de méthode de résolution permettant
d'obtenir des solutions exactes en un temps raisonnable
pour de grandes instances (grand nombre de villes) du
problème.
• Pour ces grandes instances, on devra donc souvent se
contenter de solutions approchées (heuristiques), car
on se retrouve face à une explosion combinatoire :
– Le nombre de chemins possibles passant par 69 villes est déjà
un nombre de 100 chiffres.
– Pour comparaison, un nombre de 80 chiffres permettrait déjà de
représenter le nombre d'atomes dans tout l'univers connu !
TSP
Borne supérieur :
L'arbre recouvrant minimale permet de
déterminer une solution du TSP métrique
qui est au pire 2 fois plus long que la
solution optimale.
 Séparation et évaluation, (branch and
bound)
TSP
• Logiciel Concorde
– A résolu un TSP de 15,112 villes
• http://www.tsp.gatech.edu/concorde.html
Théorie de la complexité
• Repose sur la définition de classes de
complexité qui permettent de classer les
problèmes en fonction de la complexité
des algorithmes qui existent pour les
résoudre.
Classes de complexité
• Parmi les classes les plus courantes, on
distingue:
– Classe P (polynomial)
– Classe NP (Non déterministe Polynomial)
Classes de complexité
Classe P (polynomial):
un problème de décision est dans P s'il peut
être décidé par un algorithme déterministe
en un temps polynomial par rapport à la taille
de l'instance.
Classes de complexité
Classe NP (Non déterministe Polynomial) :
c'est la classe des problèmes de décision pour
lesquels la réponse oui peut être décidée par
un algorithme non-déterministe en un temps
polynomial par rapport à la taille de l'instance.
Non-déterminisme
La classe NP
• De manière intuitive, dire qu'un problème peut être
décidé à l'aide d'un algorithme non-déterministe
polynomial signifie
– qu'il est facile, pour une solution donnée, de vérifier en un temps
polynomial si celle-ci répond au problème pour une instance
donnée
– mais que le nombre de solutions à tester pour résoudre le
problème est exponentiel par rapport à la taille de l'instance.
• Le non-déterminisme permet de masquer la taille
exponentielle des solutions à tester tout en permettant à
l'algorithme de rester polynomial.
Classes de complexité
• On a trivialement P  NP,
– car un algorithme déterministe est un algorithme non
déterministe particulier.
• En revanche : NP  P ?
– que l'on résume généralement à P = NP ?
– est l'un des problèmes ouverts les plus fondamentaux
et intéressants en informatique théorique.
• 1970 : le premier qui arrivera à décider si P et
NP sont différents ou égaux recevra le prix Clay
(plus de 1.000.000 $)
• P = NP ??
Pourquoi c'est difficile de prouver ?
(1 sur 2)
• Le problème de fond est que les
algorithmes que l'on programme sont tous
déterministes.
• Pour la bonne et simple raison que l'on ne
sait pas construire de machine non
déterministe.
• Ce qui fait que l'on ne peut que simuler un
algorithme non déterministe par un
algorithme déterministe
Pourquoi c'est difficile de prouver ?
(2 sur 2)
• Or il est démontré qu'un algorithme
déterministe qui simule un algorithme
non-déterministe qui fonctionne en
temps polynomial, fonctionne en temps
exponentiel.
• Ce qui fait que pour de grandes entrées
on ne peut pas résoudre le problème en
pratique, quelle que soit la puissance de la
machine.
Relation entre P et NP (supposé…)
• Si NP  P
NP
P
Téléchargement