280 likes | 547 Views
Kombinatoorsete süsteemide disain. L8. Loogikafunktsioonide täpne minimeerimine L9. Loogikafunktsioonide heuristiline minimeerimine L10. Mitmevalentne loogika. Heuristiline minimeerimine. “Mõistliku” suurusega liiasuseta katted Kiirus ja rakendatav paljudes valdkondades
E N D
Kombinatoorsete süsteemide disain • L8. Loogikafunktsioonide täpne minimeerimine • L9. Loogikafunktsioonide heuristiline minimeerimine • L10. Mitmevalentne loogika I207 - Digitaalloogika ja -süsteemid - L9
Heuristiline minimeerimine • “Mõistliku” suurusega liiasuseta katted • Kiirus ja rakendatav paljudes valdkondades • Väldib täpse minimeerimise kitsaskohti • lihtimplikantide genereerimine ja salvestamine • katte leidmine I207 - Digitaalloogika ja -süsteemid - L9
d d c c 1 0 1 0 3 0 2 1 b b 4 0 1 5 0 7 6 0 C - D - - F 1 E a a 8 1 9 0 0 B 1 A Heuristiline minimeerimine • 4-muutuja funktsioon • y = ‘1’abcd (0,2,5,8,10,14), ‘-’abcd (12,13,15) • Karnaugh kaardi abil I207 - Digitaalloogika ja -süsteemid - L9
Lihtimplikantide leidmine 1-de (0-de) katmine võimalikult suurte intervallidega alustada neist, millel on vähem naabreid vrdl. olulised lihtimplikandid d d c c bc’d 1 1 0 0 0 0 1 1 ad’ b’d’ b b 0 0 1 1 0 0 0 0 - - - - - - 1 1 ab a a 1 1 0 0 0 0 1 1 Heuristiline minimeerimine I207 - Digitaalloogika ja -süsteemid - L9
Heuristiline minimeerimine • Vt. http://tams-www.informatik.uni-hamburg.de/applets/kvd/kvd.html • y(a,b,c,d) = (0,2,5,8,10,14)1, (12,13,15)* i3 ≡ a i2 ≡ b i1 ≡ c i0 ≡ d y=i2’i0’+i2i1’i0+i3i0’ y=b’d’+bc’d+ad’ y’=i2’i0+i1i0+i3’i2i0’ y’=b’d+cd+a’bd’ y=(b+d’)(c’+d’) (a+b’+d) I207 - Digitaalloogika ja -süsteemid - L9
Heuristiline minimeerimine • Kolme- ja viiemuutuja funktsioonid y(i4,i3,i2,i1,i0)=(2,10,18,26,27,30,31)1, (6,14,16,20,21,22,24,25,28,29)* y = i1 i0’ + i4 i3 y(i2,i1,i0)=(2,3,5)1,(7)* y=i2’i1+i2i0 y=(i2+i1)(i2’+i0) I207 - Digitaalloogika ja -süsteemid - L9
b’d’ B ad’ C 13 d c ab D 5 15 bc’d A 12 1 0 0 1 14 b 0 1 0 0 b d - - - 1 2 a c 0 a 1 0 0 1 8 10 Minimeerimine graafiülesandena • Lihtimplikantide leidmine • klasterdamine I207 - Digitaalloogika ja -süsteemid - L9
b’d’ B ad’ C 13 d c ab D 5 15 bc’d A 12 1 0 0 1 14 b 0 1 0 0 ad’ C - - - 1 2 0 a 1 0 0 1 8 10 Minimeerimine graafiülesandena • Implikantkatte leidmine • klastri(serva/kliki)katte leidmine • servakatte leidmine, klikikatte leidmine I207 - Digitaalloogika ja -süsteemid - L9
Heuristiline minimeerimine • Lokaalne miinimumkate • antud on esialgne kate • teisendus lihtkatteks • liiasuste eemaldamine • Iteratiivne parendamine • suurust parendatakse implikantide “modifitseerimise” teel I207 - Digitaalloogika ja -süsteemid - L9
Heuristiline minimeerimine • Nõrgalt määratud funktsioonide minimeerimine • |FF| + |FR| << |FD| • Funktsiooni argumentide arv on suur • |FF| + |FR| on esitatud intervallidena, st. on olemas esialgne kate • FF-i kuuluvaid intervalle laiendatakse selliselt, et laiendus jääks FD sisse I207 - Digitaalloogika ja -süsteemid - L9
Heuristiline minimeerimine • FF-i kuuluvaid intervalle laiendatakse selliselt, et laiendus jääks FD sisse • ükski 1-intervall ei tohi omada ühisosa ühegi 0-intervalliga (mittekattuvad) • ortogonaalsusfunktsioon - näitab, milliste argumentide järgi on intervallide paari teatud argumendi väärtus ühes intervallis 1, teises 0 • kaks intervalli on mittekattuvad, kui nad on ortogonaalsed vähemalt ühe argumendi järgi • ortogonaalsed mitme argumendi järgi -> osa argumente võib vabastada I207 - Digitaalloogika ja -süsteemid - L9
a b c d e e e d c 1 1 1 - 1 - - - 0 1 0 - 0 0 0 0 0 0 1 0 0 - - 0 - - 0 0 0 b 0 0 0 1 - 0 0 - 1 - - 1 1 1 1 - - - 0 - 1 1 0 - - 1 1 a - 0 0 1 - 0 - - Heuristiline minimeerimine • Näide #1: 000- # 1011 -> 1010, seega võib esimese neist asendada kas 00-- või -00-’ga • eeldusel, säilib ortogonaalsus ka teiste 0-intervallidega • Näide #2: I207 - Digitaalloogika ja -süsteemid - L9
a b c d e e e d c 1 1 1 - 1 - 1 0 - - 0 - 0 0 0 0 0 0 1 0 0 - - 0 - - 0 0 0 b 0 0 0 1 - 0 0 - 1 - - 1 1 1 1 - - - 0 - 1 1 0 - 1 1 - a - 0 0 1 - 0 - - Heuristiline minimeerimine 11-1- # 0--0- = 10010 11-1- # -00-1 = 01000 11-1- # -0-11 = 01000 11-1- # 0--11 = 10000 -1-1- # 0--0- = 00010 -1-1- # -00-1 = 01000 -1-1- # -0-11 = 01000 -1-1- # 0--11 = 00000 11--- # 0--0- = 10000 11--- # -00-1 = 01000 11--- # -0-11 = 01000 11--- # 0--11 = 10000 I207 - Digitaalloogika ja -süsteemid - L9
a b c d e e e d c 1 1 1 - 1 - - - 0 1 0 - 0 0 0 0 0 0 1 0 0 - - 0 - - 0 0 0 b 0 0 0 1 - 0 0 - 1 - - 1 1 1 1 - - - 0 - 1 1 0 - - 1 1 a - 0 0 1 - 0 - - Heuristiline minimeerimine --010 # 0--0- = 00010 --010 # -00-1 = 00001 --010 # -0-11 = 00001 --010 # 0--11 = 00001 ---10 # 0--0- = 00010 ---10 # -00-1 = 00001 ---10 # -0-11 = 00001 ---10 # 0--11 = 00001 ?! I207 - Digitaalloogika ja -süsteemid - L9
Heuristiline minimeerimine (II) • Laiendus (Expand) • implikantide teisendus lihtimplikantideks • kaetud implikantide eemaldamine • Kitsendus (Reduce) • implikantide suuruse vähendamine, hoides katte korrektse • Ümberkujundus (Reshape) • implikantide paaride muutmine suurendades üht ja vähendades teist • Liiasusetus (Irredundant) • liiasuse eemaldamine kattest I207 - Digitaalloogika ja -süsteemid - L9
20 21 0 - - 0 a 0 0 0 0 1 - 0 - 0 b 1 0 0 1 0 0 1 0 1 0 1 - - c 0 1 0 0 1 1 0 - - d 1 1 1 1 22 0 1 0 1 1 1 - 0 1 e 0 1 1 0 1 - 1 0 1 f 0 1 0 0 0 1 1 1 1 23 1 1 1 1 1 0 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 1 1 Näide {a,c,d,e} {b,c,d,e} I207 - Digitaalloogika ja -süsteemid - L9
0 - - 0 a 0 1 - - c 0 0 0 0 exp 0 - - 0 a 1 0 0 0 exp 0 1 0 1 exp 0 0 1 0 x 1 0 0 1 1 0 0 1 0 1 1 1 x 0 1 0 0 x 1 0 1 0 x 1 0 0 0 0 1 0 1 1 1 1 1 1 0 1 1 1 0 0 1 0 1 1 0 x 1 1 0 1 0 1 1 1 1 0 1 0 0 1 0 0 20 21 1 0 1 1 1 0 0 0 1 1 1 1 1 1 0 1 1 0 0 1 1 0 1 0 1 0 1 1 22 1 1 0 1 23 Näide - laiendus I207 - Digitaalloogika ja -süsteemid - L9
0 - - 0 a 0 0 - - - - 0 0 a a 0 1 - - c 0 0 1 1 - - - - c c - 0 - 0 b - - 0 0 - - 0 0 b b 1 0 0 1 1 0 0 1 exp 1 1 0 0 - - - - d d 1 0 1 1 x 1 1 1 - 0 0 1 1 exp e 1 1 1 1 1 1 0 1 0 1 0 0 20 21 1 1 1 1 22 23 Näide - laiendus {a,b,c,d,e} I207 - Digitaalloogika ja -süsteemid - L9
0 - - 0 xxxx 0 0 0 1 1 1 - - - - - - c c c 0 1 - - c 0 - 0 0 0 0 - - - 0 0 0 00-0 b1 b1 - 0 - 0 b 1 1 1 0 0 0 - - - - - - d d d 1 0 - - d 1 1 1 - - 1 0 0 0 1 1 1 e 1 0 0 e1 1101 1 1 - 0 1 e 1 1 1 1 0 1 0 0 1 1 1 1 Näide - kitsendus 20 21 22 {b1,c,d,e1} 23 I207 - Digitaalloogika ja -süsteemid - L9
0 0 1 1 - - - - c c 0 - 0 0 - - 0 0 -0-0 b 1 1 0 0 - - - 1 d1 10-1 1 1 1 1 0 0 1 1 1 0 0 e1 e1 1 1 1 1 1 0 1 0 0 20 21 1 1 1 1 22 23 Näide - ümberkujundus {b,c,d1,e1} I207 - Digitaalloogika ja -süsteemid - L9
0 0 0 1 1 1 - - - - - - c c c - - - 0 0 0 - - - 0 0 0 b b b 1 1 1 0 0 0 - - - - - 1 d exp d 1 1 1 - 1 1 0 0 0 1 1 1 1 0 0 e e1 exp 1 1 1 1 1 0 1 0 0 20 21 1 1 1 1 22 23 Näide - laiendus #2 {b,c,d,e} I207 - Digitaalloogika ja -süsteemid - L9
MINI - lühikokkuvõte • Laiendus • kate - {a,b,c,d,e} • lihtkate, liiasusega (kuid ükski implikant ei sisaldu mõnes teises) • Kitsendus • a eemaldatakse • b [-0-0] -> b1 [00-0] • e [1-01] -> e1 [1101] • kate - (b1,c,d,e1) • Ümberkujundus • {b1,d} [00-0][10--] -> {b,d1} [-0-0][10-1] • Laiendus #2 • kate - {b,c,d,e} • lihtkate, liiasuseta I207 - Digitaalloogika ja -süsteemid - L9
Järjekord, liiasused & kontroll • Järjekord • Laiendus – alustada nendest intervallidest, millede katmine teiste poolt on vähetõenäoline (“hõre naabruskond”) • Kitsendus – alustada nendest intervallidest, millede katmine teiste poolt on tõenäoline (“tihe naabruskond”) • Liiasuse eemaldamine • Oluliste intervallide kindlaks tegemine • Katte probleem lahendatakse heuristiliselt • Õigsuse kontroll • Espresso, MINI • kontrollitakse laiendatud implikandi ühisosa kõigi 0-implikantidega (FR) – täienduse leidmine vajalik • Presto • kontrollitakse laiendatud implikandi sisaldumist 1- ja *-implikantide ühendis (FFFD) – taandub nn. rekursiivsele tautoloogia kontrollile I207 - Digitaalloogika ja -süsteemid - L9
Shannoni arendus • Muutuja(te)st sõltumatu osa eraldamine • ~~ muutuja ja selle eituse sulgude ette toomine • Ühe muutuja järgi – f = x fx=1 + x’ fx=0 • kaks jääkfunktsiooni (e. kaasfaktorit) • y = bc’d+b’d’+ab • y = b(c’d+a)+b’(d’) [ fb=1=c’d+a / fb=0=d’ ] • y = a(bc’d+b’d’+b)+a’(bc’d+b’d’) • Kahe muutuja järgi (neli jääkfunktsiooni) • y = a’b’(d’) + a’b(c’d) + ab’(d’) + ab(1) • Täielik arendus • rekursiivselt kõikide muutujate järgi I207 - Digitaalloogika ja -süsteemid - L9
Täiendi leidmine • Põhineb Shannon’i arendusel • f = x fx=1 + x’ fx=0→ f ’ = x f ’x=1 + x’ f ’x=0 • rakendatakse rekursiivselt • y = a b c’ y’ = a (ya=1)’ + a’ (ya=0)’ • ya=1 = b c’ ; ya=0 = 0 ; y’ = a (b c’)’ + a’ (0)’ • (b c’)’ = b [(b c’)b=1]’ + b’ [(b c’)b=0]’ • (b c’)’ = b (c’)’ + b’ (0)’ = b c + b’ • y’ = a ( b c + b’ ) + a’ = a b c + a b’ + a’ I207 - Digitaalloogika ja -süsteemid - L9
x = a’b’c’+a’bc’+abc x = ‘1’a,b,c(0,2,7) x = ‘0’a,b,c(1,3,4,5,6) a b c x 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 c c b b 1 1 0 0 0 0 1 1 a a 0 0 0 0 1 1 0 0 x x Täiendi näited • x = abc+a’c’ • f’ = x f’x=1 + x’ f’x=0 • x’ = a x’a=1 + a’ x’a=0 • xa=1 = bc ; x’a=0 = c’ • x’ = a (bc)’ + a’ (c’)’ • x’ = a (b’ + c’) + a’c • x’ = ab’ + ac’ + a’c • x = (a’+b)(a’+c)(a+c’) [ x = (a+c’)(b+c’)(a’+c) ] I207 - Digitaalloogika ja -süsteemid - L9
y = a’b’c’+a’b’c+ +a’bc+ab’c y = ‘1’a,b,c(0,1,3,5) y = ‘0’a,b,c(2,4,6,7) a b c y 0 0 0 1 0 0 1 1 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 1 0 c c b b 1 1 1 1 1 1 0 0 a a 0 0 1 1 0 0 0 0 y y Täiendi näited • y = a’b’+a’c+b’c • f’ = x f’x=1 + x’ f’x=0 • y’ = a y’a=1 + a’ y’a=0 • ya=1 = b’c ; y’a=0 = b’+c+b’c • y’ = a(b’c)’ + a’(b’+c)’ • y’ = a (b + c’) + a’bc’ • y’ = ab + ac’ + a’bc’ • y = (a’+b’)(a’+c)(a+b’+c) [ y = (b’+c)(a’+c)(a’+b’) ] I207 - Digitaalloogika ja -süsteemid - L9
z = a’b’c’+a’b’c+ +a’bc’+abc z = ‘1’a,b,c(0,1,2,7) z = ‘0’a,b,c(3,4,5,6) a b c z 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 c c b b 1 1 1 1 0 0 1 1 a a 0 0 0 0 1 1 0 0 z z Täiendi näited • z = abc+a’b’+a’c’ • f’ = x f’x=1 + x’ f’x=0 • z’ = a z’a=1 + a’ z’a=0 • za=1 = bc ; z’a=0 = b’+c’ • z’ = a (bc)’ + a’ (b’+c’)’ • z’ = a (b’ + c’) + a’bc • z’ = ab’ + ac’ + a’bc • z = (a’+b)(a’+c)(a+b’+c’) [ z = (a+b’+c’)(a’+b)(a’+c) ] I207 - Digitaalloogika ja -süsteemid - L9