Optimisation Logique GMEE329 Bruno Rouzeyre rouzeyre@lirmm.fr http://www.lirmm.fr/~rouzeyre
Principe de minimisation Cas des fonctions incomplètes Cas des fonctions multiples Base première complète : Karnaugh Quine Mc Cluskey Consensus Base minimale : Table de choix (heuristique) Résolution Algébrique Branch & bound 1 f 00 01 11 10 dc ba
Cas des fonctions incomplètes Id[f(d,c,b,a)] = R1(0,7,10,11,12,15) + Rf(2,6,8,9) 1 f 00 01 11 10 dc ba ba 1 00 01 11 10 dc ba 00 01 11 10 dc 00 1 01 1 11 1 1 Il monomo in blu (d'ba') é l'unico che copre solo sommet do not care (ultima colonna prime due righe) 10 1 1 Bpinf(f) = c b a + d b a + d c' b + d' c' b' a' + d c' b a' Bpsup(f) = c' a' + d c' + d b' a' + d b a + d' c b + c b a + d' b a' Pour la minimisation Bp => Bpsup
Cas des fonctions incomplètes Id[f(d,c,b,a)] = R1(0,7,10,11,12,15) + Rf(2,6,8,9) Bp(f) = c' a' + d c' + d b' a' + d b a + d' c b + c b a 7 10 11 12 15 1 f 00 01 11 10 dc ba A = c' a' X B = d c' C = d b' a' D = d b a E = d' c b F = c b a G = d' b a' 1 - Prendre un sommet non encore couvert (choix aléatoire ou dirigé par une heuristique), 2 - Prendre un monôme couvrant ce sommet (choix aléatoire ou dirigé par une heuristique), 3 - Éliminer tous les sommets couverts par ce monôme, 4 - Réitérer la procédure jusqu'à avoir couvert tous les sommets.
Cas des fonctions multiples ba 1 00 01 11 10 dc ba 00 01 11 10 dc 00 1 01 1 11 1 1 1 1 10 d c d' b a a' f1 f2 Minimisation séparée => f1 = d c + d' b a Réalisation minimale => f1 = d c + d' b a f2 = b a' + d' b f2 = b a + d' b a
Cas des fonctions multiples Soit M = {m1, m2, … mq-1, mq} ensemble minimal de monôme distincts tel quel toute composante de F puisse s'exprimer comme une somme de termes de M Soit mi un monôme quelconque de M apparaissant dans p composants de F, fi1, fi2, …, fip => mi est donc un monôme de la fonction produit f = fi1*fi2*…*fip Principe : chercher les monômes des fonctions produits
Cas des fonctions multiples ba ba 00 01 11 10 ba dc 00 01 11 10 dc 00 01 11 10 dc 00 1 00 1 1 00 1 01 1 01 1 1 01 1 11 1 1 1 1 11 1 11 1 10 10 1 10 f1 f2 f1. f2 Bp complète => dcba' + d' b a + b a' + d' b + d c + c b a dcba' (14) -> f1 f2 d' b a (3,7) -> f1 f2 b a' (2,6,10,14) -> f2 d' b (2,3,6,7) -> f2 d c (12,13,14,15) -> f1 c b a (7,15) -> f1 In f1 considero il gruppo da due cba perché é un gruppo non coperto da nessu monom. Sempre in f1 il sommet d'c'ba non lo considero perche é gia coperto in f1 f2 La liste des monômes premiers de F est donnée en marquant chaque terme par la fonction produit dont il est monôme premier. Si un monôme premier est trouvé plusieurs fois, on ne considère que la première instance
Cas des fonctions multiples A= dcba' (14) -> f1 f2 B = d' b a (3,7) -> f1 f2 C = b a' (2,6,10,14) -> f2 D = d' b (2,3,6,7) -> f2 E = d c (12,13,14,15) -> f1 F = c b a (7,15) -> f1 f1 f2 3 7 12 13 14 15 2 3 6 7 10 14 A B C D E F B(f1,f2), E(f1), C(f2) Réalisation minimale => f1 = d c + d' b a f2 = b a' + d' b a
Cas des fonctions multiples Id(f1) = R1(3,9,10,11,12,13,14,15) Id(f2) = R1(1,3,5,9,10,13,15) Id(f3) = R1(1,3,5,6,12,14)
Cas des fonctions multiples 1 00 01 11 10 dc ba f1f2f3 f1f2 f1f3 f2f3 f1 f2 f3 Id(f1) = R1(3,9,10,11,12,13,14,15) Id(f2) = R1(1,3,5,9,10,13,15) Id(f3) = R1(1,3,5,6,12,14) A = d' c' b a (3) -> f1 f2 f3 B = d' c' a (1,3) -> f2 f3 C = d' b' a (1,5) -> f2 f3 D = d c a' (12,14) -> f1 f3 E = d c a (13,15) -> f1 f2 F = d b' a (9,13) -> f1 f2 G = d c' b a' (10) -> f1 f2 H = c b a' (6,14) -> f3 I = b' a (1,5,9,13) -> f2 J = d c (12,13,14,15) -> f1 K = d b (10,11,14,15) -> f1 L = d a (9,11,13,15) -> f1 M = c' b a (3,11) -> f1
Cas des fonctions multiples 3 9 10 11 14 12 13 15 1 3 5 9 10 13 15 1 3 5 6 12 14 A B C D E F G H I J K L M A = d' c' b a (3) -> f1 f2 f3 B = d' c' a (1,3) -> f2 f3 C = d' b' a (1,5) -> f2 f3 D = d c a' (12,14) -> f1 f3 E = d c a (13,15) -> f1 f2 F = d b' a (9,13) -> f1 f2 G = d c' b a' (10) -> f1 f2 H = c b a' (6,14) -> f3 I = b' a (1,5,9,13) -> f2 J = d c (12,13,14,15) -> f1 K = d b (10,11,14,15) -> f1 L = d a (9,11,13,15) -> f1 M = c' b a (3,11) -> f1