8INF806 Conception et analyse des algorithmes Cour 1.
-
Upload
raimunde-astier -
Category
Documents
-
view
124 -
download
1
Transcript of 8INF806 Conception et analyse des algorithmes Cour 1.
![Page 1: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/1.jpg)
8INF806
Conception et analyse des algorithmes
Cour 1
![Page 2: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/2.jpg)
Rappels
• Alphabet: A
• Mot: w A*
• Langage: L A*
• Problème de décision:
– Entrée: w
– Sortie: 1 si wL, 0 sinon
• Langage = Probleme de décision
![Page 3: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/3.jpg)
Problèmes
On est intéressé par les problèmes satisfaisant les deux conditions suivantes:
1. Doit pouvoir se résoudre sur un ordinateur: Par exemple le problème de trouver une juste sentence pour une personne reconnu coupable d'un délit fait appel à des considérations culturelles et philosophiques et ne peut donc pas être résolu par un ordinateur.
2. L'ensemble des solutions correctes doit être non ambiguë: Par exemple la traduction d'un texte de l'anglais au français peut être réalisée par un ordinateur mais il n'est pas clair ce que l'on doit considérer comme une traduction correcte.
![Page 4: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/4.jpg)
Problèmes algorithmiques
Un problème algorithmique est défini par:
1. La description de l'ensemble des entrées possibles (chaque entrée est une séquence finie de caractères).
2. La description d'une fonction qui associe à chaque entrée un ensemble de résultats corrects (chaque résultat est aussi une séquence finie de caractères)
![Page 5: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/5.jpg)
Exemples: Accessibilité dans un graphe
Entrée: Un graphe G et deux noeuds a et b
Résultat:
• Problème de recherche: On cherche un chemin de a à b.
• Problème de décision: On veut savoir s'il existe un chemin de a à b
• Problème d'optimisation: On veut un plus court chemin de a à b
• Problème d'évaluation: On veut la longueur du plus court chemin de a à b
![Page 6: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/6.jpg)
Choix d'un modèle de calcul
On veut exprimer nos algorithmes à l'aide d'un langage simple mais universel.
– Simple: Petit ensemble d'instructions facilement analysable.
– Universel: Même puissance qu'un programme en C.
![Page 7: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/7.jpg)
Temps d'exécution d'un algorithme
Le temps d'exécution d'un algorithme dépend de:
1. L'entrée
2. Le choix de l'ordinateur
3. Le choix du langage de programmation
4. L'implémentation
Remarque: On veut une notion de temps d'exécution qui ne dépende que de la longueur de l'entrée.
![Page 8: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/8.jpg)
Pseudo-C
• Opération d'assignation
• Opérations arithmétiques
• Instructions conditionelles
• Instruction d'arrêt
• Operations d'entrées/sortie
On compte le nombre d'opérations et d'instructions élémentaires (s'exécutant en temps constant).
![Page 9: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/9.jpg)
Machine de Turing (1)
![Page 10: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/10.jpg)
Machine de Turing (2)
M=(Q, , , , q0, F)
– Q est un ensemble fini d'états
est l'alphabet d'entrée
est l'alphabet de la machine: contient tous les symboles de , le symbole blanc, et possiblement d'autres symboles.
: Q x Q x x {-1, 0, 1} est la fonction de transition (le programme)
– F Q est l'ensemble des états finaux
![Page 11: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/11.jpg)
Machine de Turing (3)
• Initialement les n=|w| premières cases du ruban contiennent l'entrée w et toutes les autres cases contiennent le symbole blanc.
• La tête de lecture est placée au début du ruban.
• La machine exécute la suite de transitions indiquées par la fonction et elle s'arrête si elle atteint un état final.
• Le résultat est le contenu du ruban.
![Page 12: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/12.jpg)
Généralisation
• Plusieurs pistes sur le ruban
• Plusieurs rubans
• Rubans infinis dans les deux directions
• Plusieurs têtes de lecture/écriture
• Multidimentionel
• Tous équivalents au modèle original
![Page 13: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/13.jpg)
Exemples
• Échanger le contenu de deux variables
• Incrémenter ou décrémenter un compteur
• Convertir un nombre unaires/binaires
• Additioner deux entiers en binaires
• Multiplier deux entiers en binaire
• Comparer deux entiers en binaire
• Trier un tableau
![Page 14: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/14.jpg)
Pseudo-C vs Machine de Turing
Tout ce qui peut être fait avec l'un peut être fait avec l'autre.
– Opération d'assignation
– Opérations arithmétiques
– Instructions conditionelles
– Instruction d'arrêt
– Opérations d'entrées/sortie
![Page 15: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/15.jpg)
Thèse de Church-Turing
• Tout ce qui est calculable peut être calculé par une machine de Turing... ou par un programme en pseudo-C
• Notion intuitive d'algorithme = machine de Turing.
• On ne peut pas construire un ordinateur plus puissant qu'une machine de Turing
![Page 16: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/16.jpg)
Ordinateurs et machines de Turing
Problème U:
Entrée: mot w et description d'une mT M
Résultat: Résultat de M sur l'entrée w
Machine de Turing universelle: Machine de Turing qui résoud le problème U.
![Page 17: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/17.jpg)
Encodage d'une machine de Turing
• On veut encoder en binaire une machine de Turing M.
• On encode les transitions (qi,sj)=(qk, sl, dm) sous la forme: 0i10j10k10l10m
• Si C1, C2, C3, ... , Cr est une énumération des transitions
de la machine alors l'encodage binaire de M est:
111 C1 11 C2 11 ... 11 Cr 111
• On encode les machines à plusieurs ruban de façon similaire.
• L'encodage d'une machine M est dénoté <M>
![Page 18: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/18.jpg)
Problèmes calculables
• Une fonction (ou problème) est calculable si il est calculé par une machine de Turing
• On dit qu'il est décidable s'il s'agit d'un problème de décision (ou langage).
![Page 19: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/19.jpg)
Problèmes incalculables(Gödel 1931, Turing 1936)
Certains problèmes algorithmiques ne peuvent pas être résolus par une machine de Turing ni par aucun autre modèle de calcul
Preuve: Diagonalisation
Exemples: Le problème d'arrêt.
![Page 20: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/20.jpg)
Théorème de la récursion(Kleene, 1952)
Dénotons par f<M>(w) la fonction calculée par la machine de Turing M.
Pour toute fonction totale et calculable g il existe une machine de Turing M telle que:
fM(w)=fg(<M>)(w) pour tout w.
![Page 21: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/21.jpg)
Conséquence
Supposons que g est une fonction qui sur entrée w écrit en sortie la description d'une mT Mw qui ignore son entrée et écrit w en sortie.
Par le théorème de la récursion il existe une mT M telle que M et g(<M>) donne le même résultat sur toutes les entrées.
Cela signifie que M écrit sa description en sortie.
![Page 22: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/22.jpg)
Autre conséquences
• Démontre l'existence des fonctions récursives. En particulier, on peut toujours supposer qu'une machine de Turing a accès à son propre code.
• Aucun virus ne peut affecter tous les programmes informatiques.
• Soit M1, M2, M3, ... une énumération quelconque (mais calculable) des machine de Turing
Alors il existe un indice i tel que Mi et Mi+1 calculent la même fonction.
![Page 23: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/23.jpg)
Classes de complexité
• TIME(T(n)) = ensemble des problèmes pouvant être résolus en temps T(n).
• SPACE(S(n)) = ensemble de problèmes pouvant être résolu en temps S(n).
• 0k
k)TIME(nP
![Page 24: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/24.jpg)
Thèse de Church-Turingétendue
Soit P un algorithme s'exécutant en temps t(n) sur un modèle de calcul R
La simulation de P sur une machine de Turing peut être réalisée en temps p(t,n) où p est un polynôme.
![Page 25: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/25.jpg)
Temps polynomial
Nous dirons qu'un algorithme est efficace s'il fonctionne en temps polynomial.
La thèse de Church-Turing étendue implique que cette définition est indépendante du modèle de calcul utilisé.
![Page 26: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/26.jpg)
Problèmes intraitables
Pour toute fonction calculable T(n), il existe un problème calculable P qui ne peut pas être résolu par une machine de Turing en moins de T(n) étapes
Preuve: Diagonalisation
L={xi= | Mi n'accepte pas xi en moins de T(|xi|) étapes}
En particulier, certains problèmes ne possèdent aucun algorithme efficace.
![Page 27: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/27.jpg)
Hiérarchie temporelle(Hartmanis et Stearns, 1965)
Soit T1(n) et T2(n), deux fonctions ''raisonnables''.
Si lim alors
il existe un problème dans TIME(T2(n))-TIME(T1(n)).
Remarque: Cela implique qu'il y a une hiérarchie infinie de classes de complexité.
0)(
))(log()(
2
11 nT
nTnT
![Page 28: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/28.jpg)
Gap Theorem(Borodin, 1972)
Pour toute fonction totale calculable g(n) il existe une fonction totale calculable T(n) telle que
TIME(T(n))=TIME(g(T(n)))
Par exemple, si g(n)=2n alors
TIME(T(n))=TIME(2T(n))
![Page 29: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/29.jpg)
Speed-up Theorem(Blum, 1967)
Soit f(n) une fonction totale et calculable.
Il existe un problème P possédant la propriété suivante:
Si M1 est une machine de Turing résolvant P en temps T1(n) alors il existe une machine de Turing M2 résolvant P en temps T2(N) et f(T2(n))≤ T1(n) presque partout.
Exemple: Si f(n)=n2 alors
Conclusion: Certain problèmes ne possède aucun "meilleur" algorithme.
)()( 12 nTnT
![Page 30: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/30.jpg)
Linear speed-up theorem(Hartmanis-Stearns, 1965)
Si f(w) est une fonction calculée par une mT en temps T(n) alors pour tout c>0 il existe une mT M' qui calcule f(w) en temps cT(n)+n+m.
Note: Les termes n=|w| et m=|f(w)| sont nécessaires pour lire et l'entrée et écrire la solution.
![Page 31: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/31.jpg)
Bornes supérieures et inférieures
En général on ne peut pas déterminer précisément le temps minimal TP(n) nécessaire pour résoudre un problème P:
• Difficulté de calculer TP(n) même si on connaît un algorithme optimal
• Speed-up theorem: En général, il n'y a pas d'algorithme optimal
• Linear speed-up theorem.
• Différents résultats sur différents modèles de calcul.
On se contente donc de borner le temps d'exécution en utilisant la notation asymptotique.
![Page 32: 8INF806 Conception et analyse des algorithmes Cour 1.](https://reader035.fdocument.pub/reader035/viewer/2022062219/551d9d95497959293b8cc0a9/html5/thumbnails/32.jpg)
Notation asymptotique
• f(n)=O(g(n)) si (similaire à )
• f(n)=(g(n)) si (similaire à )
• f(n)=o(g(n)) si (similaire à <)
• f(n)= (g(n)) si (similaire à >)
• f(n)=(g(n)) si (similaire à =)
cng
nf)(
)(lim
cng
nf)(
)(lim
0)(
)(lim
ng
nf
)(
)(lim
ng
nf
cng
nf)(
)(lim