D.E ZEGOUR Ecole Supérieure d’Informatique
Problèmes de décision Concepts de base Expressions régulières Notation particulière pour exprimer certaines formes structurelles pouvant être analysées par un automate Grammaire contexte free Notation très importante pour décrire la syntaxe des langages de programmation pouvant être utilisée par les compilateurs
Problèmes de décision Concepts de base Automate fini Ensemble d’états et de règles de transition permettant de vérifier l’appartenance d’une chaine donnée à un langage donné. Machine de Turing Automates modélisant la puissance des machines réelles. Permettent d’étudier la décidabilité des programmes : ce qui peut être fait par un ordinateur et ce qui ne peut l’être. Permettent aussi de distinguer les problèmes possibles ( polynomiales) et non possibles ( exponentielles)
Problèmes de décision Concepts de base Preuve déductive Suite d’énoncés E1, E2,.., En Ei soit donné vrai soit démontré Preuve de l’énoncé If H Then C Partir de l’hypothèse H et essayer de prouver C Preuve de l’énoncé H If and only if C Partir de H et essayer de prouver C Partir de C et essayer de prouver H
Problèmes de décision Concepts de base Preuve par contraposé Pour prouver "If H then C", il suffit de prouver "If not C Then Not H" Preuve par contradiction Pour prouver "If H then C", il suffit de prouver "If H and Not C" Preuve par Contre exemple Pour montrer qu’un énoncé est faux, il suffit de trouver un contre exemple Preuve par Induction (récurrence) L’énoncé à un paramètre n. vérifier que l’énoncé est vrai pour les premières valeurs de n. Ensuite supposer que l’ énoncé est vrai pour n. Si on arrive à montrer que l’énoncer reste vrai pour n+1, alors l’énoncé de départ est vrai
Problèmes de décision Alphabet et chaine Un alphabet est un ensemble fini non vide de symboles. Exemple d’alphabets Σ = { 0, 1 } : alphabet binaire Σ = {a, b,.., z} Chaine (ou mot) : séquence finie de symboles choisis dans un alphabet est une chaine utilisant l’alphabet binaire Chaine vide ( ) : O occurrence de symbole Longueur d’une chaine |w| : nombre de symboles formant la chaine w | | = 0 |10010| = 5 Concaténation de chaines Si x= 011 et y = 11 alors xy = x = x = x
Problèmes de décision Puissance d’un alphabet (Fermeture ) Σ k : ensemble des chaines de longueur k sur l’alphabet Σ Σ 0 = { } quelque soit l’alphabet Σ Si Σ= {0, 1}, Alors Σ 1 = { 0, 1 }, Σ 2 = {01, 00, 10, 11}, Σ 3 = { 000, 001, …} Ne pas confondre Σ et Σ 1 Σ * : ensemble de toutes les chaines que l’on peut former avec l’alphabet Σ Σ * = Σ 0 + Σ 1 + Σ 2 + … Σ + = Σ 1 + Σ 2 + …
Problèmes de décision Langages Tout sous ensemble L de Σ * est appelé langage. L Σ * Il n’inclut pas forcément tous les symboles de Σ. Ne pas confondre langage (tel que défini) et langage généré par une grammaire Langage de toutes les chaines composées de n "0" suivi de n "1" pour n >= 0 { , 01, 0011, , …} Langage de toutes les chaines formées avec le même nombre de 0 et de 1 Langage de toutes les chaines dont la valeur est un nombre premier Σ * est un langage { } est un langage { } est un langage contenant uniquement la chaine vide
Problèmes de décision Problème Question de savoir si une chaine donnée appartient ou non à un langage donné (Théorie des automates) Si Σ est un alphabet et L un langage dans Σ, alors le problème L est : Etant donnée une chaine w de Σ *, décider si w est ou non dans L. Langage = Problème de décision On utilise l’un ou l’autre selon le contexte. Si on s’intéresse uniquement par exemple aux chaines de la forme {0 n 1 n | n >= 0 }, on utilise le terme langage. Si on s’intéresse à la sémantique des chaines (une chaine peut représenter un graphe, une expression logique, un nombre) l’ensemble des chaines est vu comme un problème
Problèmes de décision Problème = Calcul Problème peut ne pas être vu comme une simple décision mais plutôt comme un calcul ou une transformation. Exemple : rôle du compilateur : étant donné une chaine ( un programme), le compilateur décide l’appartenance ou pas de la chaine au langage. Cependant le compilateur fait beaucoup plus : sémantique voir génération de code Problème : combien de temps et d’espace va-t-il utiliser ? Il faudra donc les mesurer dans les cas les plus favorables et défavorables Répondre simplement par oui ou non est aussi difficile que résoudre le problème entier.
Problèmes de décision Exemple : Test de primalité Le problème permettant de tester les nombres premiers peut être exprimé par le langage Lp composé de toutes les chaines de bits dont les valeurs sont des nombres premiers. Etant donnée une chaine quelconque de bits, le problème répond par oui si la valeur de la chaine est un nombre premier, non sinon. Si chaine = 11 c’est facile à décider Si chaine la décision n’est pas évidente : il faudra tenir compte des ressources disponibles : Temps CPU, Espace
Problèmes de décision Décidabilité On ne peut pas trouver un programme général (Testeur) qui a en entrée un problème ( Programme) et des données I et qui répond par oui si le programme P admet une solution et répond par non s’il n’admet pas de solutions. Si pour un problème P et des données I, on peut trouver un programme qui répond par oui si P admet une solution et par non si P n’admet pas de solution, on dit que le problème P est décidable. Un problème est dit indécidable s’il ne peut être résolu par un ordinateur.