Vous êtes sur la page 1sur 50

Algorithmique

avancée
(suite)
Ahmed Harbaoui
Harbaoui.pro@gmail.com
1.3 Autres modèles de calcul
Il existe d'autres modèles de calcul permettant d’aborder sous un autre
angle les problèmes de décision et plus généralement l'informatique
théorique :
- Automates de Markov,
- Circuits booléens ou digitaux,
- Machine de Turing à plusieurs rubans

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 2


1.3 Autres modèles de calcul
Machine de Turing à plusieurs rubans
Une MT à plusieurs rubans est une machine de Turing à k rubans est un
quintuplet M=< Q, Σ, q0, t, F > Où :
Q = {q0, ..., qn}, n ∈ IN∗ : un ensemble fini d’états
q0 étant l’état initial; F ⊆ Q , F : ensemble des états finaux,
Σ : alphabet extérieur, un ensemble de symboles / Q et Σ sont
totalement disjoints et Σ contient toujours le symbole vide Λ
t est la fonction de transition; t : Q × Σ → Q × Σ × {G,D,N}
k k

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 3


1.4 Complexité et Machine de Turing
Historiquement, c’est la Machine de Turing qui est le modèle théorique
ayant permis de refondre le concept d’algorithme :
Registre,
Programme,
Cycle d'instruction,
configuration
=> fondements des ordinateurs d'aujourd'hui

Pas de MTU unique ! Mais sont toutes équivalentes à une constante près.

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 4


1.4 Complexité et Machine de Turing
Thèse de Church-Turing
N’importe quel modèle raisonnable de calcul est de puissance
équivalente aux machines de Turing

Remarque : Sans grande perte de généralité, on peut utiliser des


langages de programmation évolués à la place des MT.

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 5


1.4 Complexité en temps
Pourquoi la complexité ?
C’est la complexité intrinsèque d’un algorithme ou d’un problème qui
est déterminante, et non comme on pourrait le penser en première
approche, la rapidité de la machine sur laquelle il est exécuté, ou
l’espace mémoire dont elle dispose.
2
Si un algorithme «exécute» un problème de taille n en un temps c.n
pour une constante c, nous dirons alors que la complexité en temps de
cet algorithme est O(n2)

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 6


1.4 Complexité en temps
Pourquoi la complexité ?
Définition: une fonction g(n) est dite en O(f(n)) s’il existe une constante
c telle que

Question: Quel est le facteur déterminant: la vitesse de l'ordinateurs


(vitesse dû aux progrès technologiques) ou la complexité d'un
algorithme ?

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 7


1.4 Complexité en temps
Pourquoi la complexité ?

Loi de Moore (empirique) : à coût constant, la rapidité des processeurs


double tous les 18 mois (les capacités de stockage suivent la même loi).

Constat : le volume des données stockées dans les systèmes


d'informations augmente de façon exponentielle.

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 8


1.4 Complexité en temps
Exemple :
Algorithme Complexité en
temps
A1 n
A2 2n
Pour N=100 et pour une unité de temps de 10 -3 s
A1 s'exécute en 1/10 ième de seconde
A2 s'exécute en 3,2 * 1019 années

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 9


1.4 Complexité en temps
Définition: On appelle temps pour un programme M d’une MT sur une
donnée x, le nombre d’étapes du calcul jusqu’à l’état final, c’est à dire
l’arrêt de la machine.
On peut aussi dire que c’est le nombre de fois où la MT a lu ou écrit sur
le ruban.

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 10


1.4 Complexité en temps
Définition: Pour un programme M d’une MT qui s’arrête en un temps
fini pour toute donnée x de , sa fonction de complexité en temps
TM : IN* −> IN*
est donnée par :

TM(n) = max {m : ∃ Zx ∈ ZΣ* ; |x| = n | le calcul de M sur la donnée


x prend un temps m}
1.4 Complexité en temps
Classe de Complexité en temps:
Soit t : IN −> IN On définit la classe de complexité en temps TEMPS(t)
comme étant la classe des langages décidés (i.e. décidés) par une MT
Travaillant en temps t(n).
1.5 Complexité en espace
Quel est l’espace occupé durant le calcul effectué par la MT ?
- L’espace utilisé pendant un calcul est égal au nombre de cellules
visitées sur le ou les ruban(s).

Définition (Complexité spatiale) Pour un programme M d’une MT qui


s’arrête en temps fini pour toute donnée x de Σ*, on
définit sa complexité en espace
EM : IN* −> IN*
Par :
EM(n) = max {m : ∃ Zx ∈ ZΣ* ; |x| = n | le calcul de M sur la donnée
x utilise m cellules.}
1.5 Complexité en espace
Définition (Classe de complexité en espace)
Soit e : IN −> IN On définit la classe de complexité en espace ESPACE(m)
comme étant la classe des langages décidés (i.e. reconnus) par une MT
utilisant m cellules de rubans pour son calcul.

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 14


1.6 Relation entre les complexités
Les complexités spatiale et temporelle sont liées par le théorème suivant :
Théorème (complexités spatiale vs temporelle)

Exemple : Permutation des deux valeurs entières (2 solutions)

Intuitivement : pour gagner du temps de calcul, on doit utiliser d'avantage


d'espace mémoire

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 15


Règles pratiques de calculer de la complexité
• Règle 1: la complexité d’un ensemble d’instructions est la
somme des complexités de chacune d’elles.

• Règle 2: Les opérations élémentaires telle que l’affectation,


test, accès à un tableau, opérations logiques et
arithmétiques, lecture ou écriture d’une variable simple ...
etc, sont en O(1)
Règle 3:

Instruction if: maximum entre le then et le else

switch: maximum parmi les différents cas


Règle 4: Instructions de répétition

1. La complexité de la boucle for est calculée par la complexité du


corps de cette boucle multipliée par le nombre de répétition.

2. La complexité d’une boucle while, il faudra avant tout déterminer


le nombre de fois que cette boucle est répétée, ensuite le multiplier
par la complexité du corps de cette boucle.
Règle 5: Procédure et fonction: leur complexité est déterminée par
celui de leur corps. L’appel à une fonction est supposé prendre un
temps constant en O(1)

Notons qu’on fait la distinction entre les fonctions récursive et celles


qui ne le sont pas:

• Dans le cas de la récursivité, le temps de calcul est exprimé comme


une relation de récurrence.
Exemples
Exemple 1: a = b;

Temps constant: O(1).

Exemple 2:
somme = 0;
for (i=1; i<=n; i++)
somme += n;
Temps: O(n)
Exemple 3:

somme = 0;
for (j=1; j<=n; j++)
for (i=1; i<=n; i++)
somme++;
for (k=0; k<n; k++)
A[k] = k;
Temps: O(1) + O(n2) + O(n) = O(n2)
Exemple 4:

somme = 0;
for (i=1; i<=n; i++)
for (j=1; j<=i; j++)
somme++;
Temps: O(1) + O(n2) = O(n2)
Exemple 5:

somme = 0;
for (k=1; k<=n; k*=2)
for (j=1; j<=n; j++)
somme++;

Temps: O(nlog n)
Exemples : Résumé
O(1) : complexité constante, pas d'augmentation du temps d'exécution quand
le paramètre croit
O(log(n)) : complexité logarithmique, augmentation très faible du temps
d'exécution quand le paramètre croit. Exemple : algorithmes qui décomposent
un problème en un ensemble de problèmes plus petits (dichotomie).
O(n) : complexité linéaire, augmentation linéaire du temps d'exécution quand
le paramètre croit (si le paramètre double, le temps double). Exemple :
algorithmes qui parcourent séquentiellement des structures linéaires.
O(nlog(n)) : complexité quasi-linéaire, augmentation un peu supérieure . O(n).
Exemple : algorithmes qui décomposent un problème en d'autres plus
simples, traités indépendaments et qui combinent les solutions partielles pour
calculer la solution générale.
Exemples : Résumé

O(n2) : complexité quadratique, quand le paramètre double, le temps


d'exécution est multiplié par 4. Exemple : algorithmes avec deux boucles
imbriquées.
O(ni) : complexité polynomiale, quand le paramètre double, le temps
d'exécution est multiplié par 2i. Exemple : algorithme utilisant i boucles
imbriquées.
O(in) : complexité exponentielle, quand le paramètre double, le temps
d'exécution est élevé à la puissance 2.
O(n!) : complexité factorielle, asymptotiquement équivalente à nn
1.7 La classe P
- Un programme de MT est dit programme polynomial en temps s’il
existe un polynôme p tel que :
PZoZuZrZ ZtZoZuZtZ ZnZ Z∈ ZIZNZ*Z Z,ZTZM(Z ZnZ)Z Z≤ ZpZ(ZnZ)Z

-Z ZLZ’aZpZpZaZrZtZeZnZaZnZcZeZ Zà ZlZaZ ZcZlZaZsZsZeZ ZPZ ZpZoZuZrZ ZuZnZ ZpZrZoZbZlZèmZeZ ZsZuZpZpZoZsZeZ ZlZ’eZxZiZsZtZeZnZcZeZ


ZdZ’uZnZ ZaZlZgZoZrZiZtZhZmZeZ ZpZoZlZyZnZoZmZiZaZlZ ZeZnZ ZtZeZmZpZsZ ZpZoZuZrZ ZrZésZoZuZdZrZeZ ZcZeZ ZpZrZoZbZlZèmZeZ.Z ZLZeZ
ZpZlZuZsZ ZsZoZuZvZeZnZtZ ZlZ’aZlZgZoZrZiZtZhZmZeZ ZeZsZtZ ZcZoZnZnZuZ.Z

-Z ZLZaZ ZcZlZaZsZsZeZ ZNZPZ ZeZsZtZ ZfZoZrZmZéeZ ZdZeZsZ ZlZaZnZgZaZgZeZsZ ZrZeZcZoZnZnZuZsZ Z(ZoZuZ ZaZcZcZeZpZtZésZ)Z ZpZaZrZ ZlZeZsZ
ZmZaZcZhZiZnZeZsZ ZdZeZ ZTZuZrZiZnZgZ ZdZétZeZrZmZiZnZiZsZtZeZ
1.8 La classe NP

l
- La classe NP est formée des langages reconnus (ou acceptés) par les
machines de Turing Non déterministe polynomiale

l
- Machine de Turing non-déterministe pour chaque pair état-symbole
il peut y avoir une, plusieurs ou aucune possibilité de transition,
correspondant a un choix

l
- Un algorithme non polynomiale et vérifiable d'une façon
polynomiale appartient à la classe NP
AU 2015-2016 Ahmed HARBAOUI @ ISAMM 27
1.8 La classe NP

Comment mesurer le temps de calcul d'un tel algorithme ?

Pour le temps de calcul, on convient, conformément au principe


"envisager le pire", que c'est celui de la plus longue branche (la
longueur d'une branche est mesurée en nombre d'instructions).

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 28


TSP Traveling Salesman Problem
Problème du voyageur de commerce

Etant 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).
– Calculer pour n petit
– Déduire le nombre de possibilité de chemin
On a donc 1/2(n-1)! chemins candidats possibles
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'arêtes 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 plusieurs milliers de villes

http://www.tsp.gatech.edu/concorde.html
1.8 La classe NP : Approche informelle

Pour le problème du voyageur de commerce sous sa forme de


problème de décision :

Etant donnés un ensemble de villes, les distances entre celles-ci,


et une borne B (B ∈ IN*), existe-t-il un circuit de toutes les villes, de
longueur B au moins ?

Dans l’état actuel de nos connaissances, on ne connaît pas d’algorithme


polynomial exacte permettant de résoudre ce problème.
1.8 La classe NP : Approche informelle

Supposons que pour une instance particulière I de ce problème


quelqu’un annonce que pour cette instance du problème de décision, il
existe un circuit hamiltonien pour lequel, la réponse est oui.

Un circuit hamiltonien dans un graphe est un circuit qui passe une


fois et une seule par tous les sommets du graphe considéré.

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 36


1.8 La classe NP : Approche informelle
Supposons que pour une instance particulière I de ce problème
quelqu’un annonce que pour cette instance du problème de décision, il
existe un circuit hamiltonien pour lequel, la réponse est oui.

Si on est sceptique, on va demander à la personne concernée de


prouver son assertion en fournissant une permutation des villes
possédant les propriétés voulues.

La vérification de la solution doit être simple, le circuit doit être


hamiltonien, et la valeur de celui-ci est bien supérieure ou égale à B.
AU 2015-2016 Ahmed HARBAOUI @ ISAMM 37
1.8 La classe NP : Approche informelle
Il faut que cette vérification prenne un temps raisonnable.

→ la procédure de vérification doit se faire en un temps polynomial sur


une MTU pour l’instance I.

C’est cette notion de vérifiabilité polynomiale qui va caractériser la


classe NP.
Attention : La vérifiabilité polynomiale n’implique pas la résolubilité
polynomiale.

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 38


1.8 La classe NP : Approche informelle
Définition : (La classe NP des problèmes)
La classe NP (Polynomialement vérifiables) est donc la classe de tous
les problèmes de décision polynomialement vérifiables.

Ainsi, suite à l’étude préalable concernant le problème du voyageur


de commerce, nous pouvons dire qu’il fait partie de la classe NP.

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 39


P =? NP
P ⊆ NP
car une MT Déterministe est un cas particulier d'une MT non
déterministe

Par contre est ce que cette inclusion est strict ou pas ?

Problème du siècle

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 40


Pourquoi c'est difficile de prouver ?
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 ?
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.
Exemple P et NP
Algorithmes de réseau sociaux :

Pour qu'un réseau soit efficace : sur le Fil d'actualité d'un


utilisateur on ne peut pas afficher toutes les actualités de ses
amis et des ses pages préférés.

→ Afficher que les posts pertinents

Algorithme 1 : trouver les Alter-Ego : U1 aime tous les post


de U2 et inversement

Algorithme 2 : trouver une clique un ensemble d'utilisateurs


tel que chaque post d'un U1 est au moins aimé par un
membre de l'ensemble.
AU 2015-2016 Ahmed HARBAOUI @ ISAMM 43
1.9 La classe Complémentaire
Si le problème est résoluble en temps polynomial par un
algorithme, alors son complémentaire aussi. Ceci vient du
fait qu’un algorithme s’arrête quelle que soit la séquence
initiale. La réponse est alors oui ou non.
→ Il suffit d’inverser les instances q oui
et qnon dans un
programme de MT

Théorème : { Π ∈ P } ↔ { ΠC ∈ P}

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 44


1.9 La classe Complémentaire
Théorème : co-NP = { ΠC | Π ∈ NP};

Pour le problème du Voyageur de commerce. Le problème


complémentaire s’énonce comme suit :

Etant donné un ensemble de villes, les distances entre


celles-ci, et une borne B, est il vrai qu’il n’y ait aucune
tournée sur toutes les citées de valeur inférieure à B?

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 45


2. Complétude NP

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 46


3. Complexité et efficacité

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 47


4. Des algorithmes pour problèmes N PC

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 48


5. L’algorithmique probabiliste

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 49


6. Le modèle quantique

AU 2015-2016 Ahmed HARBAOUI @ ISAMM 50

Vous aimerez peut-être aussi