Diagramme de décision binaire
En informatique, un graphe de décision binaire ou diagramme de décision binaire (ou BDD pour Binary Decision Diagram en anglais) est une structure de données utilisée pour représenter des fonctions booléennes, ou des questionnaires binaires. On utilise les BDD pour représenter des ensembles ou des relations de manière compacte / compressée.
Pour les articles homonymes, voir BDD.
Les diagrammes de décision binaires sont utilisés par les programmes de conception assistée par ordinateur (CAO / CAD) pour générer des circuits (synthèse logique), et dans la vérification formelle. C'est une structure de donnée considérée comme compacte, en comparaison par exemple aux arbres de décision. Les diagrammes de décision binaire sont utilisés dans le model checking symbolique de CTL[1].
Définition
Un diagramme de décision binaire (BDD) est un graphe acyclique, comme montré dans la figure ci-contre. Il est composé de nœuds non terminaux porteurs de questions (dans l'exemple, il s'agit des 5 nœuds x1, x2, x2, x3, x3) et d'au plus deux nœuds terminaux étiquetés par 0 et 1. Chaque nœud non terminal a deux successeurs, l'un par un arc marqué 1 pour 'oui/vrai' et l'autre par un arc marqué 0 pour 'non/faux'. Un diagramme de décision binaire possède un seul sommet initial ou racine (dans l'exemple, il s'agit du nœud x1).
Un chemin de la racine à un nœud terminal représente une affectation de variables (partielle ou pas) : on affecte à la variable qui étiquette un nœud la valeur 0 ou 1 selon qu'on a pris l'arc sortant marqué par 0 ou 1.
Un BDD représente une fonction booléenne f. Un chemin de la racine au terminal 1 représente une affectation de variables (partielle ou pas) pour laquelle la fonction booléenne f représentée est vraie. Par exemple, pour x1 est faux, x2 vrai et x3 vrai, alors la fonction booléenne f est vraie. Un chemin de la racine au terminal 0 représente une affectation de variables (partielle ou pas) pour laquelle la fonction booléenne f est fausse. Par exemple, pour x1 est vrai, x2 faux, alors la fonction booléenne f est fausse (quelle que soit la valeur de x3).
Réduction
On peut réduire le nombre de nœuds d'un BDD en appliquant ces deux règles autant de fois que possible[2] :
- supprimer un nœud non terminal si les deux arcs sortants pointent vers le même sous-graphe ;
- si deux sous-graphes sont isomorphes, alors détruire l'un des deux et rediriger ses arcs entrants vers le sous-graphe restant.
Un BDD est réduit si aucune des deux règles n'est applicable. La figure ci-contre montre un BDD qui n'est pas réduit. En appliquant les deux règles autant que possible, on tombe sur l'exemple ci-dessus, qui est réduit.
Diagramme de décision binaire ordonné
Un BDD est ordonné si toutes les variables apparaissent dans le même ordre sur tous les chemins depuis la racine vers les nœuds terminaux. Dans son usage courant, le terme diagramme de décision binaire se réfère généralement à un diagramme de décision binaire ordonné réduit (ROBDD pour Reduced Ordered Binary Decision Diagram).
L'avantage d'un ROBDD est qu'il est canonique (unique) pour une fonction booléenne donnée[3]. Cette propriété le rend utile, par exemple, pour la vérification d'équivalence fonctionnelle (qui se traduit par l'égalité des ROBDD associés, laquelle peut être évaluée en temps constant).
Le nombre de nœuds d'un ROBDD d'une fonction dépend de l'ordre de variables. Les deux figures suivantes montrent deux ROBDD pour la fonction ƒ(x1, ..., x8) = x1x2 + x3x4 + x5x6 + x7x8 mais l'un a beaucoup de nœuds alors que l'autre en a peu.
Toute fonction booléenne symétrique (c'est-à-dire dont la valeur ne dépend pas de l'ordre des variables, comme la fonction parité ou majorité) admet des ROBDD de taille O(n2) où n est le nombre de variables. C'est à mettre en exergue avec le fait que la fonction parité et la fonction majorité n'admet que des formes normales conjonctives ou des formes normales disjonctives de taille exponentielle[1].
Inversement, il existe des fonctions booléennes avec des petites FNC ou DNC mais avec des ROBDDs de taille exponentielle, pour tout ordre sur les variables[4], par exemple, la fonction hidden weighted bit, f(x1, ..., xn) = xx1+...+xn où x0 = 0 par convention.
Le problème de savoir si un ordre sur les variables propositionnelles est optimal (i.e. donne un ROBDD le plus petit) est NP-dur[5],[6].
Opérations
La construction d'un ROBDD à partir d'une formule booléenne repose sur l'expansion de Shannon[7]. La négation s'obtient en échangeant les nœuds terminaux. On peut calculer la conjonction et la disjonction de deux ROBDDs qui ont le même ordre sur les variables.
Extensions
Les diagrammes de décision binaires ont été étendus à des valeurs arbitraires dans une algèbre finie. La structure de donnée résultante s'appelle ADD pour Algebraic decision diagrams et a été introduite par Bahar et al. en 1993[8]. On note aussi les diagrammes de décision binaire multi-terminaux[9].
Notes et références
- Christel Baier et Joost-Pieter Katoen, Principles of Model Checking (Representation and Mind Series), The MIT Press, , 975 p. (ISBN 978-0-262-02649-9 et 0-262-02649-X, lire en ligne), p. 6.7 Symbolic CTL Model checking (p. 381).
- (en) Mathematical Logic for Computer Science | Mordechai Ben-Ari | Springer (lire en ligne)
- Randal E. Bryant, « Graph-Based Algorithms for Boolean Function Manipulation », IEEE Trans. Comput., vol. 35, no 8, , p. 677–691 (ISSN 0018-9340, DOI 10.1109/TC.1986.1676819, lire en ligne, consulté le ).
- I. Wegener, Branching Programs and Binary Decision Diagrams, Society for Industrial and Applied Mathematics, coll. « Discrete Mathematics and Applications », , 408 p. (ISBN 978-0-89871-458-6, DOI 10.1137/1.9780898719789, lire en ligne).
- (en) Seiichiro Tani, Kiyoharu Hamaguchi et Shuzo Yajima, « The complexity of the optimal variable ordering problems of shared binary decision diagrams », dans Algorithms and Computation, Springer Berlin Heidelberg, (ISBN 9783540575689, DOI 10.1007/3-540-57568-5_270, lire en ligne), p. 389–398
- Beate Bollig et Ingo Wegener, « Improving the Variable Ordering of OBDDs Is NP-Complete », IEEE Transactions on Computers, vol. 45, no 9, , p. 993–1002 (ISSN 0018-9340, DOI 10.1109/12.537122, lire en ligne, consulté le )
- (en) « An Introduction to Binary Decision Diagrams - Henrik Reif Andersen »
- R. Iris Bahar, Erica A. Frohm, Charles M. Gaona et Gary D. Hachtel, « Algebraic decision diagrams and their applications », ICCAD, IEEE Computer Society Press, , p. 188–191 (ISBN 0818644907, lire en ligne, consulté le ).
- (en) M. Fujita, P. C. McGeer et J. C.-Y. Yang, « Multi-Terminal Binary Decision Diagrams: An Efficient Data Structure for Matrix Representation », Formal Methods in System Design, vol. 10, nos 2-3, , p. 149–169 (ISSN 0925-9856 et 1572-8102, DOI 10.1023/A:1008647823331, lire en ligne, consulté le ).
Bibliographie
- Donald Knuth, The Art of Computer Programming, fascicule 1, vol. 4, 3,
Liens externes
- (en) Edmund M. Clarke, Jr., « Model Checking - Binary Decision Diagrams » [PDF]
- Pravossoudovitch S., Représentation et Synthèse des Systèmes Logiques, Ch. 3, Graphes de décision binaire [PDF]
- Portail de l'informatique théorique