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