Problèmes de décision

publicité
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.
01011 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 = 01111
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, 000111, …}
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
{0n1n | 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 100110010111000011101010101 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.
Téléchargement