La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Conception et analyse des algorithmes

Présentations similaires


Présentation au sujet: "Conception et analyse des algorithmes"— Transcription de la présentation:

1 Conception et analyse des algorithmes
8INF806 Conception et analyse des algorithmes Cour 1

2 Rappels Alphabet: A Mot: w  A* Langage: L  A* Problème de décision:
Entrée: w Sortie: 1 si wL, 0 sinon Langage = Probleme de décision

3 Problèmes On est intéressé par les problèmes satisfaisant les deux conditions suivantes: 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. 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.

4 Problèmes algorithmiques
Un problème algorithmique est défini par: La description de l'ensemble des entrées possibles (chaque entrée est une séquence finie de caractères). 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)

5 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

6 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.

7 Temps d'exécution d'un algorithme
Le temps d'exécution d'un algorithme dépend de: L'entrée Le choix de l'ordinateur Le choix du langage de programmation 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.

8 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).

9 Machine de Turing (1)

10 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

11 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.

12 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

13 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

14 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

15 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

16 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.

17 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 C Cr 111 On encode les machines à plusieurs ruban de façon similaire. L'encodage d'une machine M est dénoté <M>

18 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).

19 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.

20 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.

21 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.

22 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.

23 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).

24 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.

25 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é.

26 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.

27 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é.

28 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))

29 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.

30 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.

31 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.

32 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 à =)


Télécharger ppt "Conception et analyse des algorithmes"

Présentations similaires


Annonces Google