Conception et analyse des algorithmes 8INF806 Conception et analyse des algorithmes
1936 Définition formelle de la notion d'algorithme: Turing: Machine de Turing Post: Machine de Post Kleene: fonctions récursives Church: -calculus
Problèmes indécidables Certains problèmes n'admettent aucun algorithme. ex. Problème d'arrêt ex. Résoudre une équation diophantienne ex. Le jeu de la vie (game of life)
Thèse de Church-Turing Toutes ces définitions sont équivalentes ----------------------- Notion intuitive d'algorithme = machine de Turing Remarque: ordinateur bio-moléculaire et ordinateur quantique.
Efficacité des algorithmes Quantité raisonnable de ressources Ressources: temps, espace mémoires, nombre de processeurs, nombre de bits de communications, nombre de bits aléatoires, etc. Nous considérerons surtout le temps Algorithme efficace = temps polynomial
Thèse de Church-Turing étendue algorithme efficace = machine de Turing efficace
Théorie de la complexité Prouver que certains problèmes requièrent une quantité minimale de ressources. Exemple: Factorisation d'un entier n Conception d'algorithme: borne supérieure Théorie de la complexité: borne inférieure
Pourquoi des bornes inférieures Résultats négatifs Évite de perdre son temps La recherche de bornes inférieures peut conduire à la découverte d'algorithmes efficaces. Exemple: Test de primalité
Difficulté du domaine Borne supérieure un seul algorithme Borne supérieure tous les algorithmes Fait: Aucun des plus important problèmes en complexité n'a encore été résolu Exemple: Dernier théorème de Fermat
Question centrale: P≠NP P: ensemble des problèmes disposant d'une solution efficace Exemple: test de primalité NP: ensemble de problèmes pour lesquel on ne connaît aucun algorithme efficace Exemple: Problème du commis voyageur
Comparer des problèmes (réduction) Deux problèmes: A et B A≤B si on peut construire un algorithme efficace pour A si on dispose d'un algorithme efficace pour B B est au moins aussi difficile que A A et B ont le même niveau de difficulté si A≤B et B≤A.
Exemple A: multiplication B: mise au carré X2 = X × X X × Y =
Problèmes NP-complet Un problème A est NP-complet si: A est dans NP B ≤ A pour tout B dans NP A est le problème le plus difficile dans NP Si A admet un algorithme efficace alors tous les probles B dans NP admettent un algorithme efficace
Que faire quand un problème est trop difficile? Reformuler le problème Algorithmes probabiliste: L'espérance du temps est raisonnable La probabilité d'erreur est raisonnable Algorithme d'approximation Pour les problèmes d'optimisation (ex. TSP) Heuristiques (algorithmes génétiques, etc.)
Quelques joyaux Théorème de Cook: Théorème PCP SAT est NP-complet Théorème PCP Exemple: circuit hamiltonien Théorème de Furst, Saxe et Sipser. Limites du parallélisme