Optimisation Logique Bruno Rouzeyre

Slides:



Advertisements
Présentations similaires
Introduction à la notion de fonction 1. Organisation et gestion de données, fonctions 1.1. Notion de fonction ● Déterminer l'image d'un nombre par une.
Advertisements

Chapitre 3 La numération octale et hexadécimale. Chapitre 3 : La numération octale et hexadécimale 1 - Introduction 2 - Le système Octal Définition.
Enseigner l’arithmétique en série L Réflexions sur les contenus et les exigences.
7. Problème de flot à coût minimum. 7.1 Graphes, graphes orientés, réseaux Un graphe G =(V, E) est constitué d’un ensemble non vide fini de sommets V.
Volée 1316 S3 Cours No 2_3 : Le nombre en 1-2H. Les fonctions du nombre  Dénombrer, énumérer, décrire une collection. Aspect cardinal  Dater, classer,
Cours COMPOSANTES DES VECTEURS Dimitri Zuchowski et Marc-Élie Lapointe.
Calcul de probabilités
Utiliser le calcul littéral pour résoudre ou démontrer
Outils de Recherche Opérationnelle en Génie MTH 8414
Coloration de graphe, backtracking, branch and bound
Information, Calcul, Communication
Algorithme et programmation
Lois fondamentales de l'algèbre de Boole
Reprise du cours ( ) Aujourd’hui :
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Représentation de l'information en binaire:
L’Instruction de Test Alternatif
Plan du cours Introduction : création de circuits
chapitre 1 : Généralités sur les Fonctions.
Dimitri Zuchowski et Marc-Élie Lapointe
Principes de programmation (suite)
Initiation à la programmation impérative et algorithmique
2°9 lycée Beauregard à Montbrison
Plans d’expériences: Plans factoriels
dans le triangle rectangle
VI. Tri par tas (Heap sort)
Implantation d’un îlot ou d’une Chaîne de Production
Techniques du Data Mining
Fonctions Logiques & Algèbre de BOOLE
Information, Communication, Calcul
Eléments de la Théorie des Probabilités
Stabilité des porteurs horizontaux (Poutres)
3.5 Lois continues 1 cours 16.
Création Et Modification De La Structure De La Base De Données
Algorithmique - Les Conditions -
1.2 dénombrement cours 2.
CHAPITRE 4: Simplification des fonctions
Chapitre 3 : Caractéristiques de tendance centrale
OPTIMISATION 1ère année ingénieurs
SDRP & MA Problème du rendez vous : un algorithme probabiliste et une analyse probabiliste 09/11/2018.
Adaptive Neuro Fuzzy Inference System (ANFIS)
Eléments de la Théorie des Probabilités
SIMPLIFICATION D’UNE RACINE CARREE.
Modélisation objet avec UML
Cycle, Cocycle, Arbre et Arborescence
Lois de Probabilité Discrètes
LE processus d’enquête
Élections locales probabilistes
Université de la méditerranée
CHAPITRE 8 Equations - Inéquations
Les nombres complexes Saison 1 - Épisode 2. Les nombres complexes Saison 1 - Épisode 2.
Le code de Huffman: est une méthode de compression statistique de données qui permet de réduire la longueur du codage d'un alphabet. Le code de Huffman.
Présentation 4 : Sondage stratifié
MATHÉMATIQUES FINANCIÈRES I
Optimisation Logique Bruno Rouzeyre
Championnat de France individuel
Optimisation Logique GMEE329 Bruno Rouzeyre
IFT313 Introduction aux langages formels
Outil de description d’une fonction logique:
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
Tris Simples/Rapides.
LE TORSEUR STATIQUE 1) Définition 2) Notation 3) Deux cas particuliers
Les Définition Les expressions Algebriques
Statistiques et probabilités
Chapter 11: Récursivité Java Software Solutions Second Edition
UMLV ã Plus courts chemins Toutes paires d'états
Pour en moduler l’ouverture et la complexité
Elections locales probabilistes
Sera vu dans un prochain cours.
Dérivation – Fonctions cosinus et sinus
Transcription de la présentation:

Optimisation Logique Bruno Rouzeyre GMEE329 Optimisation Logique Bruno Rouzeyre

Minimisation de « grosses fonctions » Minimisation (> 10 variables) => Dans le cas général, il n'est pas possible d'obtenir une solution exacte (problème np complet) Méthodes heuristiques Ne nécessitent pas la base première complète Recherche d'une base première irrédondante Basées sur le test d'inclusion Nécessite des méthodes de preuve de tautologie efficaces (BDD, Cube de position, ...)

Principe de minimisation On ne cherchera pas une base première complète, mais une base première irrédondante issue de la forme de départ. Cette méthode peut se résumer en deux étapes principales: Prendre un monôme et le rendre premier en l'agrandissant au maximum Supprimer tous les monômes inclus dans ce monôme Agrandir un monôme consiste à essayer de lui “enlever” une ou plusieurs variables. Le monôme ainsi agrandi doit être encore inclus dans la fonction. Une fois le monôme agrandi dans toutes les directions, ce monôme est premier.

Algorithme de minimisation 1 - Marquer les monômes de départ avec l'indicateur "non-premier” 2 – S'il existe un monôme m marqué "non-premier", le prendre Sinon fin (les monômes restants forme une base première irrédondante) 3 – S'il existe une des variables de m que l'on a pas essayé de supprimer alors: Générer le diviseur md de m en enlevant cette variable de m Sinon aller à l'étape 5 4 - Tester l'inclusion de md dans l'ensemble des monômes. Si le test est positif remplacer m par md Sinon revenir à l'étape 3 5 - Supprimer les monômes marqués “non-premiers” inclus dans md. Revenir à l'étape 2 6 – Eliminer les monômes redondants

Algorithme de minimisation Pb de l'algorithme de minimisation Test d'inclusion (Vérifier qu'un monôme est inclus dans une fonction) a bc 00 01 10 11 1 b.c F ??? F = a.b + a.c + a'

Algorithme de minimisation: Exemple (1) F = d'c'b'a' + d'c'ba' + d'cba' + d'cba + dc'b'a' + dc'b'a + dc'ba' + dc'ba + dcb'a' + dcba m = d'c'b'a' Elimination de d => md = c'b'a' est inclus dans F m = c'b'a' Elimination de c => md = b'a' n'est pas inclus dans F m = c'b'a' Elimination de b => md = c'a' est inclus dans F m = c'a' Elimination de a => md = c' n'est pas inclus dans F ba dc 00 01 11 10 00 1 1 01 1 1 11 1 1 10 1 1 1 1 On remplace d'c'b'a' par c'a' On supprime d'c'ba', dc'b'a', dc'ba' F = c'a' + d'cba' + d'cba + dc'b'a + dc'ba + dcb'a' + dcba

Algorithme de minimisation: Exemple (2) F = c'a' + d'cba' + d'cba + dc'b'a + dc'ba + dcb'a' + dcba m = d'cba' Elimination de d => md = cba' n'est pas inclus dans F m = d'cba' Elimination de c => md = d'ba' est inclus dans F m = d'ba' Elimination de b => md = d'a' n'est pas inclus dans F m = d'ba' Elimination de a => md = d'b n'est pas inclus dans F ba dc 00 01 11 10 00 1 1 01 1 1 11 1 1 10 1 1 1 1 On remplace d'cba' par d'ba' F = c'a' + d'ba' + d'cba + dc'b'a + dc'ba + dcb'a' + dcba

Algorithme de minimisation: Exemple (3) F = c'a' + d'ba' + d'cba + dc'b'a + dc'ba + dcb'a' + dcba m = d'cba Elimination de d => md = cba est inclus dans F m = cba Elimination de c => md = ba n'est pas inclus dans F m = cba Elimination de b => md = ca n'est pas inclus dans F m = cba Elimination de a => md = cb n'est pas inclus dans F ba dc 00 01 11 10 00 1 1 01 1 1 11 1 1 10 1 1 1 1 On remplace d'cba par cba On supprime dcba F = c'a' + d'ba' + cba + dc'b'a + dc'ba + dcb'a'

Algorithme de minimisation: Exemple (4) F = c'a' + d'ba' + cba + dc'b'a + dc'ba + dcb'a' m = dc'b'a Elimination de d => md = c'b'a n'est pas inclus dans F m = dc'b'a Elimination de c => md = db'a n'est pas inclus dans F m = dc'b'a Elimination de b => md = dc'a est inclus dans F m = dc'a Elimination de a => md = dc' est inclus dans F ba dc 00 01 11 10 00 1 1 01 1 1 11 1 1 10 1 1 1 1 On remplace dc'b'a par dc' On supprime dc'ba F = c'a' + d'ba' + cba + dc'+ dcb'a'

Algorithme de minimisation: Exemple (5) F = c'a' + d'ba' + cba + dc' + dcb'a' m = dcb'a' Elimination de d => md = cb'a' n'est pas inclus dans F m = dcb'a' Elimination de c => md = db'a' est inclus dans F m = db'a' Elimination de b => md = da' n'est pas inclus dans F m = db'a' Elimination de a => md = db' n'est pas inclus dans F ba dc 00 01 11 10 00 1 1 01 1 1 11 1 1 10 1 1 1 1 On remplace dcb'a' par db'a' F = c'a' + d'ba' + cba + dc'+ db'a'

Algorithme de minimisation: Exemple (6) F = c'a' + d'ba' + cba + dc' + db'a' 1 dc ba 00 01 10 11 Remarque: Avec cet algorithme, le nombre de monômes n'est jamais augmenté. On limite ainsi la complexité du processus de minimisation

Algorithme de minimisation: Exemple (7) Opération « Irredondant » Prendre chaque monôme « m » de la fonction F: Vérifier si ce monôme est inclus dans F – m - Si oui l'éliminer (monôme redondant) - Si non le conserver F = c'a' + d'ba' + cba + dc' + db'a' 1 dc ba 00 01 10 11

Algorithme de minimisation Pb de l'algorithme de minimisation Test d'inclusion (Vérifier qu'un monôme est inclus dans une fonction) a bc 00 01 10 11 1 b.c F ??? F = a.b + a.c + a'

Test d'inclusion: définitions préliminaires Théorème de Shannon: F(x1,x2, ... , xi, ... ,xn) = xi' . F(x1,x2, ... , 0, ... ,xn) + xi . F(x1,x2, ... , 1, ... ,xn) Cofacteurs: Fxi = F(x1,x2,...,1,...xn) -> Cofacteur de F par rapport à la variable xi Fxi' = F(x1,x2,...,0,...xn) -> Cofacteur de F par rapport à la variable xi' Le cofacteur de F par rapport à un monôme m (noté Fm) est obtenu en remplaçant dans F chaque occurrence des variables apparaissant dans m par : - 1 si elle est sous forme normale - 0 si elle est sous forme complémentée Exemple: F = a.b + a'.b'.c' + a.c Fa,b' = c

Test d'inclusion m F <=> Fm = 1 Théorème: Une expression F contient un monôme m si et seulement si Fm est une tautologie Test d'inclusion: Prouver qu'un monôme m est inclus dans une fonction F revient à prouver que le cofacteur de F par rapport à m est une tautologie Exemple: a bc 00 01 10 11 1 F = a.b + a.c + a' Fb,c = a + a' = 1 b.c F

Test d 'inclusion m F <=> Fm = 1 Théorème : Preuve : Remarquons que m Í F <=> F . m = m (1) Supposons que m Í F et donc que F . m = m Considérons les cofacteurs par rapport à m des 2 termes. Les termes étant égaux, les cofacteurs sont égaux. => (F . m)m = mm mm = 1 => (F . m)m = 1 => Fm . mm = 1 => Fm = 1 => Fm est une tautologie (2) Réciproquement, supposons que Fm soit une tautologie => Fm = 1 => Fm . m = m => F . m = [ (m . Fm) + (m' . Fm') ] . m = Fm . m = m => m Í F

Preuve de Tautologie F =1 F = a.b + a.c + a.b'.c' + a' ??? a bc 00 01 10 11 1 F =1 ??? F = a.b + a.c + a.b'.c' + a' Preuve de Tautologie : Problème NP complet - Diagramme de décision binaire (BDD) - Cube de position

Transformation du problème de minimisation Test d'inclusion Cofacteur Preuve de tautologie m F <=> Fm = 1 Preuve de tautologie : Prouver qu'une fonction est égale à 1

“Cube de position” “Synthesis and Optimization of Digital Circuits” G. DeMicheli (Stanford University) Editions McGraw-Hill

Cube de position” cube universel U = 11 11 … Notation: 0 -> 10 1 -> 01 F -> 11 I -> 00 (Invalide) F = a'.d' + a'.b + a.b' + a.c'.d 10 11 11 10 10 01 11 11 01 10 11 11 01 11 10 01 Liste de monômes Cube universel - tautologia cube universel U = 11 11 … cube non valide : .. .. .. 00 .. .. ..

Union et intersection de monômes Intersection -> Produit Union -> Somme (plus petit monôme englobant) a = a.b -> 01 01 11 b = b.c' -> 11 01 10 a .b = (01 01 11) . (11 01 10) = (01 01 10) => a.b.c' a +b = (01 01 11) + (11 01 10) = (11 01 11) => b bc a 00 01 11 10 a = a.b -> 01 01 11 b = b'.c' -> 11 10 10 1 a .b = (01 01 11) . (11 10 10) = (01 00 10) => Intersection vide a +b = (01 01 11) + (11 10 10) = (11 11 11) => Union =1

Union et intersection d'ensemble de monômes Union de 2 ensembles de monômes (somme de 2 fonctions) Fusionnement des 2 ensembles (avec élimination des duplications) Intersection de 2 ensembles de monômes (produit de 2 fonctions) Intersection de tous les couples de monômes (Complexité = Produit des cardinalité)

Calcul des Cofacteurs Définition: Le cofacteur d'un monôme a (a = a1,a2,...an) par rapport à un monôme b (b = b1,b2,...bn) noté ab est nul si l'intersection entre a et b est vide sinon il est donné par : ab = a1+b1' a2+b2' ... an+bn' Le cofacteur d'un monôme par rapport à une variable peut être obtenu par la formule précédente (Une variable est un monôme particulier) Le cofacteur d'un ensemble de monômes par rapport à un monôme a est l'ensemble des cofacteurs entre chacun des monômes de l'ensemble et le monômes a

Décomposition de fonctions Théorème de Shannon: F(x1,x2, ... , xi, ... ,xn) = xi'.Fxi' + xi.Fxi Fxi = F(x1,x2,...,1,...xn) -> Cofacteur de F par rapport à la variable xi Fxi' = F(x1,x2,...,0,...xn) -> Cofacteur de F par rapport à la variable xi' La décomposition de fonctions permet de traiter les fonctions de manière récursive Développer une fonction revient à calculer les cofacteurs par rapport aux variables

Décomposition de fonctions - Cofacteurs Fa = b + b'.c Fa' = b.c + b'.c F = a.b + a'.b.c + b'.c a = a.b => 01 01 11 b = a'.b.c => 10 01 01 c = b'.c => 11 10 01 a => 01 11 11 a' => 10 11 11 aa = 11 01 11 ba = vide (b.a => 00 01 01) ca = 11 10 01 aa' = vide (a.a' => 00 01 11) ba' = 11 01 01 ca' = 11 10 01 Fa' = b.c + b'.c Fa = b + b'.c F = a.(b + b'.c) + a'.( b.c + b'.c)

Vérification de tautologie (4 règles) R1 - Une couverture est une tautologie lorsqu'elle a une ligne de 1 (cube universel => un monôme =1) R2 - Une couverture est une tautologie lorsqu'elle ne dépend que d'une variable et qu'il n'y a pas de colonne de 0 dans le champs correspondant (a + a' =1) R3 - Une couverture n'est pas une tautologie lorsqu'elle a une colonne de 0 (Variable monoforme sur tous les monômes) R4 - Une couverture n'est pas une tautologie lorsqu'elle est monoforme et qu'il n'y a pas de ligne de 1 (Toute les variables sont monoforme)

Procédure de vérification de tautologie Théorème : Une fonction est une tautologie ssi ses cofacteurs par rapport à toutes les variables et variables complémentées sont des tautologies F = xi'.Fxi' + xi.Fxi F = 1  Fxi' = 1 et Fxi = 1 Procédure Lorsque la tautologie ne peut être décidée à partir des 4 règles d'arrêt, la fonction doit être expansée par rapport à une variable. La procédure doit être réitérée sur l'ensemble des variables tant qu'aucune décision ne peut être prise (l'ordre des variable est important)

Simplification de la procédure de vérification de tautologie Règles de simplification de la procédure de vérification de tautologie T1 - Lorsque la couverture est monoforme sur certaines variables, la vérification de tautologie peut être faite en considérant uniquement les lignes ne dépendant pas des variables monoformes T2 - Lorsqu'une couverture peut s'écrire comme une union de 2 couvertures dépendant de sous-ensembles disjoints de variables, la vérification de tautologie peut être réduite en vérifiant la tautologie des 2 sous-ensembles T1 ok T2 F = ab + cd

Preuve de tautologie - Exemple 1 01 01 11 01 11 01 01 10 10 10 11 11 a bc 00 01 10 11 1 F = a.b + a.c + a.b'.c' + a' Toutes les variables sont biformes a apparait le plus souvent => 1ère variable considérée Cofacteur par rapport à a (01 11 11) => (11 01 11),(11 11 01),(11 10 10) Cofacteur par rapport à a' (10 11 11) => (11 11 11) (R1) Le cofacteur par rapport à a' est une tautologie (Règle 1) => L'étude doit se poursuivre sur le cofacteur par rapport à a 11 01 11 11 11 01 11 10 10 Dans les 2 dernières colonnes, les variables sont biformes Les 2 variables interviennent le même nombre de fois (2) => on considère b Cofacteur par rapport à b (11 01 11) => (11 11 11),(11 11 01) (R1) Cofacteur par rapport à b' (11 10 11) => (11 11 01),(11 11 10) (R2) Les cofacteurs par rapport à b et b' sont des tautologies (Règle 1 et Règle 2) => F est une tautologie

Preuve de tautologie - Exemple 2 bc 01 01 11 01 11 01 10 11 11 a 00 01 11 10 F = a.b + a.c + a' 1 b et c sont monoformes => L'étude peut se faire uniquement sur les lignes ne dépendant pas de b et c donc sur 10 11 11 (Règle de simplification 1). => La couverture est monoforme et il n'y a pas de ligne de 1. F n'est pas une tautologie (Règle 4)

Test d'inclusion - Exemple m F <=> Fm = 1 a bc 00 01 10 11 1 01 01 11 01 11 01 10 11 11 F = a.b + a.c + a' Cherchons à savoir si le monôme b.c est couvert par F b.c => 11 01 01 Cofacteur de F par rapport à b.c => (01 11 11),(01 11 11),(10 11 11) 01 11 11 10 11 11 Les monômes ne dépendent que d'une variable (a) et il n'y a pas de colonne de 0 => L'expression est une tautologie (Règle 2) => b.c est couvert par F ab = a1+b1' a2+b2' ... an+bn'

Test d'inclusion - Exemple F = a'cd'f' + bd'ef + ade + b'cf + abce + bc'def bc'ef F (?) Per rispondere bisogna provare che Fbc'ef é una tautologia

Test d'inclusion - Exemple F = a'cd'f' + bd'ef + ade + b'cf + abce + bc'def a b c d e f 10 11 01 10 11 10 11 01 11 10 01 01 01 11 11 01 01 11 11 10 01 11 11 01 01 01 01 11 01 11 11 01 10 01 01 01 -> vide -> 11 11 11 10 11 11 -> 01 11 11 01 11 11 -> 11 11 11 01 11 11 (bc'ef ) 11 01 10 11 01 01 T1 - Lorsque la couverture est monoforme sur certaines variables, la vérification de tautologie peut être faite en considérant uniquement les lignes ne dépendant pas des variables monoformes R2 - Une couverture est une tautologie lorsqu'elle ne dépend que d'une variable et qu'il n'y a pas de colonne de 0 dans le champs correspondant (a + a' =1)

Le minimiseur ESPRESSO (De Micheli 1985) ESPRESSO (F1 , Ff) { F0 = Complément (F1  Ff) ; F = Expansion (F1 , F0) ; F = Irrédondant (F , Ff) ; E = Essentiel (F , Ff) ; F = F - E ; Ff = Ff  E ; repeat{ F2 = coût (F) ; repeat{ F1 = coût (F) ; F = Réduction (F , Ff) ; F = Expansion (F , F0) ; F = Irrédondant (F , Ff) ; }until coût(F)<F1 ; F=Nouvelles_heuristiques(F , Ff , F0) ; }until coût(F)<F2 ; F = F  E ; Ff = Ff - E ; } Notation : Utilise la notation cube de position F1 l'ensemble des monômes tels que f=1 F0 l'ensemble des monômes tels que f=0 Ff l'ensemble des monômes tels que f=f

Diagramme de décision binaire (BDD) “Graph-based Algorithms for Boolean Function Manipulation” R.E. BRYANT IEEE Transaction on Computers 1978, pp 509-516 “Binary Decision Diagrams” S.B. AKERS IEEE Transaction on Computers 1986, pp 677-691

Diagramme de décision binaire Théorème de Shannon: F(x1,x2, ... , xi, ... ,xn) = xi' . F(x1,x2, ... , 0, ... ,xn) + xi . F(x1,x2, ... , 1, ... ,xn) Ce théorème étant appliqué à F pour x1, puis aux deux sous-fonctions obtenues pour x2, et ainsi de suite jusqu'à xn, on peux réaliser un arbre de décision binaire xi 1

Diagramme de décision binaire (BDD) F(a,b,c) = a'.b.c + a.c a F(a,b,c) = a'.F(0,b.c) + a.F(1,b,c) F(0,b,c) = b.c F(1,b,c) = c F(0,b,c) = b'.F(0,0.c) + b.F(0,1,c) F(0,0,c) = 0 F(0,1,c) = c F(0,1,c) = c'.F(0,1,0) + c.F(0,1,1) F(0,1,0) = 0 F(0,1,1) = 1 F(1,b,c) = b'.F(1,0.c) + b.F(1,1,c) F(1,0,c) = c F(1,1,c) = c F(1,0,c) = c'.F(1,0,0) + c.F(1,0,1) F(1,0,0) = 0 F(1,0,1) = 1 F(1,1,c) = c'.F(1,1,0) + c.F(1,1,1) F(1,1,0) = 0 F(1,1,1) = 1 1 b b 1 1 c c c 1 1 1 1 1 1

Diagramme de décision binaire réduit (RBDD) Réduction par élimination des feuilles et sous-graphes identiques des sommets redondants a b 1 c a b 1 c a 1 b c Propriété : Pour un ordonnancement donné le BDD réduit (RBDD) est unique.

Représentation informatique des BDD 2 1 3 4 b b 1 1 c 5 c 6 c 7 1 1 1 1 1 1 1 - 1 2 a 3 4 b 5 6 7 c

Procédure de réduction des BDD a 2 2 a 1 b c 1 3 4 b b 3 1 1 5 c 5 c 6 c 7 1 1 1 1 1 1 - 1 2 a 3 4 b 5 6 7 c - 1 2 a 3 4 b 5 c - - 1 1 - - 2 a 3 5 3 b 5 5 c 1 Complexité : O(nlogn)

Influence de l'ordre des variables F(a,b,c) = a'.b.c + a.c b c 1 a a 1 b c b c 1 a Ordre: abc Ordre: bca

Ordre des variables Règles de priorité: 1 - Variables apparaissant sous la même forme dans tous les monômes - Variables constituant un monôme à elles seules 2 - Variables d'occurrence maximale 3 - Variables x minimisant l'expression | Occ(x) - Occ(x') | (Occ(x): Nombre d'occurrences de la variable x)

Construction des BDD 2 stratégies principales de construction des BDDs : de la racine vers les feuilles (top-down). Cette méthode est utilisée lorsque on part d'une formule algébrique des feuilles vers la racine (bottom-up) lorsque l'on part d'une description structurelle du circuit.

Construction des BDD - Méthode top-down On utilise la formule de Shannon. Exemple: soit f(a,b,c)=a'bc' + ac avec ord(a)<ord(b)<ord(c) Si l'on fait l'expansion par rapport à a on obtient la Fig.a En faisant l'expansion par rapport à b on obtient la Fig.b En faisant l'expansion par rapport à c on obtient la Fig.c a a a 1 1 1 bc' c c b bc' bc' 1 1 c' c c 1 1 a) b) c) 1 1

Construction des BDD - Méthode Bottom-up Définition: le niveau d'une formule est défini par : les variables d'entrée sont de niveau 0 chaque sous-formule f = g <Op> h a un niveau égal à Max (niv(g),niv(h)) + 1 Méthode pour construire le BDD d'une fonction f de n variables : 1) construire les BDD des variables 2) construire les BDDs des formules de niveau i répéter l'étape 2 pour tous les niveaux (i = 1, n) Exemple : f = xy + z : On construit les BDD de x , y et z puis celui de x.y puis celui de x.y + z.

Opérations logiques entre BDD Le BDD résultant d'une opération logique entre 2 fonctions peut être conçu à partir des 2 BDD originaux en appliquant la procédure suivante: Considérer les sommets racines des BDD En fonction de la nature des 2 sommets appliquer une des règles (R1,R2,R3) Itérer le processus jusqu'à la génération des sommets terminaux x <Op> y 1 1

Opérations logiques entre BDD R1: Si les 2 sommets Sf et Sg sont des sommets terminaux => Le sommet résultant est un sommet terminal de valeur Valeur(Sf) <Op> Valeur(Sg) <Op> 1 => 0 <Op> 1 R2: Si le sommet Sf est un sommet terminal mais pas Sg => Créer le sommet Sg en lui associant comme fils droit le résultat de la comparaison (Sf, fils droit de Sg) comme fils gauche le résultat de la comparaison (Sf, fils gauche de Sg) <Op> a a 1 1 b c b c

Opérations logiques entre BDD R3: Si ni le sommet Sf ni le sommet Sg ne sont des sommets terminaux R3.1: Si Sf et Sg représentent la même variable => Créer un sommet représentant la variable en lui associant comme fils droit le résultat de la comparaison (fils droit de Sf, fils droit de Sg) comme fils gauche le résultat de la comparaison (fils gauche de Sf, fils gauche de Sg) a <Op> a a 1 1 1 b c d e b d c e

Opérations logiques entre BDD R3: Si ni le sommet Sf ni le sommet Sg ne sont des sommets terminaux R3.2 : Si Sf et Sg ne représentent pas la même variable => Créer un sommet S représentant la variable intervenant la 1ère dans l'ordonnancement considéré (S=min(Ord(Sf),Ord(Sg)) en lui associant : comme fils droit le résultat de la comparaison (fils droit de min(Ord(Sf),Ord(Sg)) , max(Ord(Sf),Ord(Sg))) comme fils gauche le résultat de la comparaison (fils gauche de min(Ord(Sf),Ord(Sg)) , max(Ord(Sf),Ord(Sg))) a <Op> b a 1 1 1 c d e f c b d b

Opérations logiques entre BDD f 1 a c d => 0 <Op> 1 R1: R2: R3.1: R3.2:

Opérations logiques entre BDD c 1 m1 m2 m3 m4 1 c n2 1 n3 1 n4 f(a,b,c) = a'+c' g(a,b,c) = b.c a b 1 c (n1,m1) (n3,m1) (n2,m1) (n3,m3) (n3,m2) (n3,m4) (n2,m3) (n2,m2) (n4,m3) (n4,m4) h(a,b,c) = f(a,b,c) + g(a,g,c) a c 1 b

Diagramme de décision binaire Complexité de la procédure de réduction: O(nlogn) Structure du BDD dépend de l'ordre dans lequel sont considérées les variables (OBDD) Opérations logiques entre fonctions => directement sur les OBDD ROBDD -> formes canoniques Applications Evaluation de fonctions Equivalence de fonction Calcul de cofacteurs Preuve de tautologie Test d'inclusion ...

Application: Evaluation de fonctions La représentation d'une fonction F sous forme de BDD permet de trouver rapidement la valeur de la fonction pour une combinaison d 'entrées donnée. La représentation d'une fonction F sous forme de BDD permet de trouver rapidement une combinaison des entrées telles que F=0 ou telle que F=1. La complexité des deux procédures est en O(n) (Le nombre de branches entre la racine et une feuille est au plus égal à n). a c 1 b

Application: Equivalence de 2 fonctions Pour un ordre donné le ROBDD est unique. Pour savoir si 2 fonctions sont identiques, il suffit de voir si les 2 ROBBDs sont isomorphes.

Application: Preuve de tautologie Si l'un des cas suivant est détecté, la fonction n'est pas une tautologie Toutes les variables de F sont monoformes Une variable monoforme est présente dans tous les monômes La somme des tailles (dans le sens nbre de points couverts) des monômes est inférieure à 2n Si aucune des conditions précédente n'est remplie, réaliser le BDD. Une condition nécessaire et suffisante pour qu'une fonction soit une tautologie est que tous les sommets terminaux (feuilles) du BDD vaillent 1 (ou que le RBDD soit restreint à la feuille 1) Exemple: F(a,b,c) = a'.b.c + a.b.c + b.c' + b' BDD a RBDD b b 1 c c 1 1 1 1 1 1

Application: Preuve de tautologie Le graphe (BDD) peut être simplifiée en appliquant les règles suivantes: Si une variable x apparaît toujours sous la forme directe, ne pas continuer le graphe sur la branche 1 (F=1 <=> Fx'=1) Si une variable x apparaît toujours sous la forme complémentée, ne pas continuer le graphe sur la branche 0 (F=1 <=> Fx=1)

Application: Evaluation des cofacteurs F(x1,x2, ... , xi, ... ,xn) = xi' . F(x1,x2, ... , 0, ... ,xn) + xi . F(x1,x2, ... , 1, ... ,xn) Pour obtenir le cofacteur par rapport à xi il suffit de supprimer le sommet xi et de lier les sommets pointant sur xi au fils droit de xi Pour obtenir le cofacteur par rapport à xi' il suffit de supprimer le sommet xi et de lier les sommets pointant sur xi au fils gauche de xi a 1 b c Fc Fc' F = ac + a'bc

Application: Test d 'inclusion m F <=> Fm = 1 Soit la fonction f = a.b + a.c + a' . Cherchons à savoir si le monôme ”bc” est couvert par cette expression. a b c F Fbc 1 00 01 11 10 1 a bc

Test d'inclusion - Exemple F = a'cd'f' + bd'ef + ade + b'cf + abce + bc'def bc'ef F (?) Fbc'ef = d' + ad + d