Langages de spécification cours 4



Documents pareils
Les structures de données. Rajae El Ouazzani

chapitre 4 Nombres de Catalan

Algorithmes d'apprentissage

ARBRES BINAIRES DE RECHERCHE

Chapitre 5 : Flot maximal dans un graphe

Arbres binaires de recherche

CH.6 Propriétés des langages non contextuels

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

INF601 : Algorithme et Structure de données

Quelques Algorithmes simples

Introduction à la théorie des graphes. Solutions des exercices

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

L exclusion mutuelle distribuée

Fondements de l informatique Logique, modèles, et calculs

Grammaires d unification

Les arbres binaires de recherche

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Raisonnement probabiliste

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Algorithmique et Programmation

Ebauche Rapport finale

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

Chapitre 7. Récurrences

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Page Paragraphe Modification Mise en page du document Le bouton "Format de page" est maintenant "Page"

Théorie des Graphes Cours 3: Forêts et Arbres II / Modélisation

Quelques algorithmes simples dont l analyse n est pas si simple

données en connaissance et en actions?

Utilisation des tableaux sémantiques dans les logiques de description

1.1 Rappels sur le produit cartésien Relations Graphes dirigés Arbres Exercices Motivation...

Contribution à l algorithmique de la vérification

MIS 102 Initiation à l Informatique

RÉALISATION DE GRAPHIQUES AVEC OPENOFFICE.ORG 2.3

1 Modélisation d être mauvais payeur

Plan du cours : Zippers. Des fonctions sur les listes avec position. Des fonctions sur les listes avec position

Système de Gestion de Fichiers

CONFIGURATION DE L AUTOMATE SIEMENS

Vérification de programmes et de preuves Première partie. décrire des algorithmes

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Feuille TD n 1 Exercices d algorithmique éléments de correction

Algorithmique, Structures de données et langage C

LE PROBLEME DU PLUS COURT CHEMIN

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Introduction à la sécurité Cours 8 Infrastructure de clés publiques. Catalin Dima

Comment créer des rapports de test professionnels sous LabVIEW? NIDays 2002

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

Bases de données. Chapitre 1. Introduction

Créez des étiquettes avec Microsoft Word et Excel (Versions Windows 10 et 11)

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

Cours de mathématiques

Rappels sur les suites - Algorithme

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

Plateforme de capture et d analyse de sites Web AspirWeb

Représentation des Nombres

Serveurs de noms Protocoles HTTP et FTP

Activité 11 : Nuage de points ou diagramme de dispersion

TD 1 - Structures de Traits et Unification

Algorithmique et Programmation Fonctionnelle

Représentation d un entier en base b

Résolution d équations non linéaires

Arbres binaires de décision

Bases de données documentaires et distribuées Cours NFE04

ANALYSTE PROGRAMMEUR EN INFORMATIQUE Option : Développement Internet

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

Cours de Génie Logiciel

Algorithmique I. Algorithmique I p.1/??

Raisonnements standard et non-standard pour les systèmes décentralisés de gestion de données et de connaissances

INFO-F-425 Modèles mathématiques et algorithmes pour l ordonnancement. Bernard Fortz

Commentaires du testeur

Master IMEA 1 Calcul Stochastique et Finance Feuille de T.D. n o 1

Construction d un cercle tangent à deux cercles donnés.

Université Paris-Dauphine DUMI2E 1ère année, Applications

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

Recherche dans un tableau

Algorithmes récursifs

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

Resolution limit in community detection

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Chaînes de Markov au lycée

Créer des étiquettes avec les adresses d'un tableau Calc

Compression de Données - Algorithme de Huffman Document de Conception

6. Les différents types de démonstrations

Master d Informatique M1 Université Paris 7 - Denis Diderot Travail de Recherche Encadré Surf Bayesien

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Un ordonnanceur stupide

Fiche PanaMaths Calculs avec les fonctions sous Xcas

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Objets Combinatoires élementaires

UNIVERSITÉ DU QUÉBEC À MONTRÉAL

Sommaire. G. Pujolle, F. Ravat, C. Soulé-Dupuy, G. Zurfluh

Sélection du contrôleur

Générer du code à partir d une description de haut niveau

Continuité et dérivabilité d une fonction

SUPPORT DE COURS. Dr. Omari Mohammed Maître de Conférences Classe A Université d Adrar Courriel : omarinmt@gmail.com

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Transcription:

Langages de spécification cours 4 Diagrammes de décision binaire(bdd) Catalin Dima

Arbres de décision binaire Étant donnée une formule logique, on peut lui associer un arbre qui permet d évaluer la valeur de vérité de la formule en fonction des valeurs de vérité des variables. Exemple : f = (z 1 z 3 ) (z 2 z 3 ) : z 1 z 2 z 2 z 3 z 3 z 3 z 3 1 0 1 0 1 0 0 0

Fusion des nodes Un noeud qui n est pas relié à la racine peut être supprimé. Deux noeuds qui ont des sous-arbres gauche et droite identiques peuvent être fusionnés. Un noeud peut être supprimé si ses deux successeurs pointent vers le même noeud (noeud inutile). Résultat intermédiaire pour f = (z 1 z 3 ) (z 2 z 3 ) : z 1 z 2 z 2 z 3 1 0

Fusion des noeuds Résultat final : z 1 z 2 z 3 1 0

Autres exemples f 2 = z 1 ( z 2 z 3 ). z 1 z 2 z 3 1 0

BDD = Binary Decision Diagrams Définition Soit P = {x 1,...,x n } un ensemble de variables ordonné (c.à.d. on considère x1 < x2 <... < xn). Un diagramme de décision binaire (BDD) est un graphe dirigé étiqueté acyclique avec une racine tel que : Exactement un ou deux noeuds terminaux (sans successeurs) sont étiquetés par 0 ou 1. Les autres noeuds sont étiquetés par des variables de P et ont exactement deux successeurs. Tout chemin de la racine aux feuilles respecte l ordre des variables x 1 <... < x n. Notons var(u) la variable du noeud u, low(u) et high(u) les deux successeurs d un tel noeud u (si u est étiqueté par x i, alors low(u) correspond à la valeur 0 pour la variable x i et high(u) à la valeur 1).

Évaluation d un BDD On parcourt le BDD en partant du ou des noeuds terminaux, en associant à chaque noeud une fonction booléenne f(u). Pour le noeud u = 1, f(u) = 1, pour le noeud 0 f(u) = 0 (valeurs booléennes). Pour tout noeud u, en supposant avoir associé f(high(u)) et f(low(u)), on aura : f(u) = ( val(u) f(high(u)) ) ( var(u) f(low(u)) ) On dit alors que un BDD représente f(racine). Exemples (calcul inverse pour les deux BDDs construit antérieurement).

BDD réduit Définition Un BDD est réduit (ROBDD) si : Pour toute paire de noeuds non-terminaux u, v, si var(u) = var(v), low(u) = low(v) et high(u) = high(v) alors u = v. Il n existe pas de noeud inutile ou non-accessible en partant de la racine. Les deux BDDs précédents sont réduits. théorème Pour toute fonction booléenne f et tout ordre sur les variables de f il existe un seul BDD réduit qui représente f.

Ordre des variables propositionnelles et taille de ROBDD L ordre à partir duquel on construit l arbre de décision binaire pour une formule a un impact très grand sur la taille du BDD réduit. Exemple : (x 1 x 2 ) (x 3 x 4 ), avec les deux ordres suivants : x1 < x 2 < x 3 < x 4. x1 < x 3 < x 2 < x 4. Construire les ROBDDs dans les deux cas, puis comparer.

Opérations sur les BDDs Supposons qu on a construit un BDD réduit pour f (pour un ordre sur les variables de f ). Comment calculer le BDD pour f? Même question si on a des BDDs pour f 1 et f 2, et on veut un BDD pour f 1 f 2, f 1 f 2, etc. Les résultats des opérations sont calculables inductivement sur la structure des BDDs.

Cas de la négation Il suffit de renverser 0 et 1! Exemple, avec vérification...

Cas des deux opérations et Pour la conjonction, on utilise la propriété suivante : ( ) ( ) (x f 1 ) ( x f 2 ) (x f 3 ) ( x f 4 ) = (x f 1 f 3 ) ( x f 2 f 4 ) Pour la disjonction on aura une propriété similaire : (x f 1 ) ( x f 2 ) (x f 3 ) ( x f 4 ) = ( ) x (f 1 f 3 ) ( ) x (f 2 f 4 ) Ce qui veut dire que, pour trouver le BDD correspondant à f g, il suffit d appliquer l opération respective (mais avec qqs précautions) aux noeuds correspondants du BDD de f et de g.

Insertion d un noeud dans un BDD Supposons qu on veut insérer un noeud n dans un BDD donné D, en tant que père de deux noeuds n 1 = low(n) et n 2 = high(n), mais seulement si nécessaire. Le noeud à insérer est associé à une variable x. Les deux noeuds n 1 et n 2 doivent appartenir à D. Le noeud n est pas nécessaire si n 1 = n 2! On serait dans la situation d un noeud inutile! Il ne serait non plus nécessaire s il y a déjà un noeud n dans D qui est père de n 1 et de n 2. Dans tous les autres cas, il faut l insérer. Car cela veut dire qu aucun sous-bdd de D ne représente la formule ( x f(u 1 )) (x f(u 2 )). Appelons cette procédure Ins(n, x, D, n 1, n 2 ).

Algorithme pour D 1 opd 2, où op {, } La procédure calcule, récursivement, un BDD correspondant à la conjonction (ou disjonction) f 1 opf 2, où f 1 correspond à un noeud u 1 dans D 1 et f 2 à u 2 dans D 2. On l appelle Cons(op, u1, u 2 ). On part avec u 1 = la racine de D 1 et u 2 = racine de D 2. Pour construire Cons(op, u 1, u 2 ), quatre choix peuvent apparaître : 1. u 1 et u 2 sont des noeuds terminaux. Alors on calcule var(u 1 ) op var(u 2 ) et on renvoie le noeud respectiv (0 ou 1). 2. var(u 1 ) = var(u 2 ). Alors on construit, inductivement, v 1 = Cons(op, high(u 1 ), high(u 2 )) et v 2 = Cons(op, low(u 1 ), low(u 2 )) tous les deux dans un même BDD D et on renvoie Ins((u 1, u 2 ), var(u 1 ), D, v 1, v 2 ). 3. var(u 1 ) < var(u 2 ). Alors on construit v 1 = Cons(op, high(u 1 ), u 2 ) et v 2 = Cons(op, low(u 1 ), u 2 ) dans un même BDD D et on renvoie Ins((u 1, u 2 ), var(u 1 ), D, v 1, v 2 ). 4. var(u 1 ) > var(u 2 ). Alors on construit v 1 = Cons(op, u 1, high(u 2 )) et v 2 = Cons(op, u 1, low(u 2 )) toujours dans un même BDD D et on renvoie Ins((u 1, u 2 ), var(u 2 ), D, v 1, v 2 ).

Exemples Premier exemple : construire d abord des ROBDDs pour chacune des formules suivantes et l ordre x 1 < x 2 < x 3 < x 4 < x 5, puis appliquer l algorithme Cons pour calculer le ROBDD pour f 1 f 2 avec le même ordre. f 1 = (( x 1 x 2 ) (x 1 x 2 )) (( x 3 x 4 ) (x 3 x 4 )) x 5 f 2 = (( x 1 x 3 ) (x 1 x 3 )) x 5 Construire des BDDs pour les formules suivantes, d abord en partant des arbres de décision binaire, puis en utilisant l algorithme Cons, en considérant l ordre p 1 < p 2 < p 3 : p 1 p 2 p 1 p 2. (p 1 p 2 ) (p 1 p 3 ).