TP 4

Transcription

TP 4
Université de Provence
Année 2011/12
Licence Math Info 2ème année S3
Fondements de l’Informatique
TP: Expression booléenne et couverture minimale
1
Evaluation d’une expression booléenne
On considère des listes composées de caractères ’V’, ’F’, ’+’ et ’*’. Le caractère ’V’ (vrai) correspond à la valeur 1, ’F’
(faux) correspond à la valeur 0, ’+’ correspond au ou logique et ’*’ correspond au et logique. On cherche à évaluer la
valeur de l’expression associée avec la liste. Par exemple la liste [’V’, ’+’, ’F’, ’*’, ’V’] correspond à l’expression (1 ∨ 0) ∧ 1
qui est égale à 1. Il est à noter que les opérations sont toujours effectuées de la gauche vers la droite.
1. Ecrire un programme évaluation qui renvoie la valeur de l’expression (’V’ ou ’F’).
2. On souhaite pouvoir calculer des expressions parenthésées. Dans ce cas, chaque élément de la liste codant
l’expression booléenne peut être soit un des 4 caractères (’V’, ’F’, ’+’ ou ’*’) ou bien une suite codant une expression booléenne. Par exemple, la liste [[’V’, ’+’, ’F’], ’*’, [[’V’, ’*’, ’F’]’,’+’, V’]] code l’expression (1∨0)∧((1∨0)∧1)
qui est égale à 1. Ecrire un programme évaluation récursive qui renvoie la valeur d’une telle expression (’V’ ou
’F’).
2
Couverture minimale
Le 14 juillet, une bande de copains composée de 7 filles et de 5 garçons descend faire un tour au bal des pompiers.
Ont dansé :
• Le slow : Anne avec Bernard, Caroline avec Didier, Edith avec André, Daniele avec Etienne
• Le ska : Anne avec André, Brigitte avec Bernard, Caroline avec Charles, Françoise avec Didier
• Le jerk : Brigitte avec Charles, Geneviève avec Bernard, Edith avec Etienne, Françoise avec André, Daniele avec
Didier
• La salsa : Geneviève avec Didier, Anne avec Charles, Brigitte avec Etienne
Qui interroger pour avoir au moins un avis de fille sur la façon de danser de chaque garçon, sachant qu’il ne sera pas
facile de poser la question et qu’on a intérêt à interroger le moins possible de filles ?
Ce problème est un problème de couverture minimale. Il faut en effet couvrir l’ensemble de tous les garçons par
les sous-ensemble des garçons qui ont dansé avec une fille. Les sous-ensembles sont dans le cas présent :
• Les garçons ayant dansé avec Anne : André, Bernard et Charles
• Les garçons ayant dansé avec Brigitte : Bernard, Charles et Etienne
• Les garçons ayant dansé avec Caroline : Charles et Didier
• Les garçons ayant dansé avec Daniele : Didier et Etienne
• Les garçons ayant dansé avec Edith : André et Etienne
• Les garçons ayant dansé avec Françoise : André et Didier
• Les garçons ayant dansé avec Geneviève : Bernard et Didier
Les contraintes du problème peuvent se résumer en une matrice.
André
Bernard
Charles
Didier
Etienne
Anne
1
1
1
0
0
Brigitte
0
1
1
0
1
Caroline
0
0
1
1
0
Daniele
0
0
0
1
1
Edith
1
0
0
0
1
Françoise
1
0
0
1
0
Geneviève
0
1
0
1
0
Ecrire un programme prenant en entrée une matrice et retournant une solution minimale du problème de couverture associé à la matrice.
1

Documents pareils