TC Moduł 6: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
m Zastępowanie tekstu – „,...,” na „,\ldots,” |
||
(Nie pokazano 2 wersji utworzonych przez jednego użytkownika) | |||
Linia 42: | Linia 42: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd5.png]] | |valign="top" width="500px"|[[Grafika:TC_M6_Slajd5.png]] | ||
|valign="top"| | |valign="top"|Sens fizyczny twierdzenia wyjaśnia przykład. Dla funkcji z tablicy na planszy kolumny są adresowane trzema zmiennymi <math>\{x1, x2, x3\}</math> względem których funkcja <math>f</math> jest symetryczna. Wiersze natomiast są adresowane zmiennymi <math>\{x4, x5\}</math>. | ||
Grupy kolumn o adresach <math>\{(0,0,1), (0,1,0), (1, 0, 0)\}</math> i <math>\{(1, 1, 0), (1, 0,1), (0,1,1) \}</math> są odpowiednio równe. Zatem istnieje dekompozycja, w której zmienne <math>\{x_1, x_2, x_3\}</math> są przeadresowywane na <math>\{g_1, g_2\}</math>. Wówczas funkcja <math>f</math> może być wyspecyfikowana w tablicy, w której adresami kolumn są <math>\{g_1, g_2\}</math>, a wierszy odpowiednio wartości zmiennych <math>\{x_4, x_5\}</math>. Tablice te są jednocześnie tablicami prawdy funkcji reprezentujących składowe dekompozycji tzn. bloki ''g'' i ''h''. | |||
|} | |} | ||
Linia 49: | Linia 52: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd6.png]] | |valign="top" width="500px"|[[Grafika:TC_M6_Slajd6.png]] | ||
|valign="top"| | |valign="top"|Znaczenie praktyczne dekompozycji wynika z konstrukcji typowych struktur programowalnych jakimi są układy FPGA. Nie wnikając w szczegóły (o układach FPGA powiemy więcej na wykładzie 12) budowę struktur FPGA można scharakteryzować następująco. Są to układy wyposażone w kilkadziesiąt (kilkaset) uniwersalnych komórek logicznych. Typowa komórka ma 4 wejścia i 1 wyjście, na którym realizowana jest dowolna funkcja boolowska 4 argumentów. Komórki umieszczone są w środowisku kanałów połączeniowych dzięki którym można je łączyć w dowolne struktury. | ||
Z powyższego wynika, że funkcja <math>f</math> zdekomponowana na bloki ''g'' i ''h'' połączone jak pokazano na rysunku może być zrealizowana na trzech komórkach struktury FPGA. Później pokażemy, że proces realizacji funkcji boolowskich w strukturach FPGA uwzględniający metodę dekompozycji jest o wiele bardziej skuteczny niż metody przyjęte w systemach komercyjnych, w których w takim przypadku najpierw dokonuje sie minimalizacji funkcji, a dopiero potem sieć bramek jest odwzorowywana na komórki. | |||
|} | |} | ||
Linia 56: | Linia 62: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd7.png]] | |valign="top" width="500px"|[[Grafika:TC_M6_Slajd7.png]] | ||
|valign="top"| | |valign="top"|Niestety postępowanie takie w ogólnym przypadku funkcji nie w pełni określonych nie może być już tak bezpośrednie. Przykład takiej bardziej skomplikowanej sytuacji omówimy dokonując dekompozycji funkcji podanej w tabl. na planszy. Otóż w tym przypadku, ze względu na nieokreśloności funkcji, nie można bezpośrednio podjąć decyzji, które kolumny w tablicy dekompozycji są takie same. Wynika to z faktu, że kreskom reprezentującym punkty nieokreśloności funkcji można przypisać wartość albo 0 albo 1, w rezultacie zaliczając odpowiednią kolumnę do – być może innego zbioru kolumn identycznych. Jak się póżniej przekonamy funkcja ta ma dekompozycję <math>f = h(a,b,g_1(c,d,e), g_2(c,d,e))</math> o schemacie blokowym jak na rysunku. | ||
|} | |} | ||
Linia 63: | Linia 69: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd8.png]] | |valign="top" width="500px"|[[Grafika:TC_M6_Slajd8.png]] | ||
|valign="top"| | |valign="top"|Niniejsza plansza przedstawia funkcje boolowskie odpowiadające składowym tej dekompozycji. | ||
|} | |} | ||
Linia 70: | Linia 76: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd9.png]] | |valign="top" width="500px"|[[Grafika:TC_M6_Slajd9.png]] | ||
|valign="top"| | |valign="top"|W celu obliczania dekompozycji funkcji boolowskich nie w pełni określonych wprowadzimy pojęcie zgodności kolumn (tablicy dekompozycji). | ||
Kolumny <math>\{k_r, k_s\}</math> są zgodne, jeśli nie istnieje wiersz ''i'', dla którego elementy <math>K_{ir}</math>, <math>K_{is}</math> są określone i różne, tzn. odpowiednio: 0, 1 albo 1, 0. | |||
|} | |} | ||
Linia 77: | Linia 86: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd10.png]] | |valign="top" width="500px"|[[Grafika:TC_M6_Slajd10.png]] | ||
|valign="top"| | |valign="top"|Kolumny zgodne można „sklejać”. pokolorowane kolumny na planszy wyjaśniają proces sklejania. | ||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd11.png]] | |||
|valign="top"|Relacja zgodności jest zwrotna, symetryczna, ale nie jest przechodnia. | |||
Pary zgodne umożliwiają wyznaczenie maksymalnych zbiorów kolumn zgodnych. | |||
Zbiór <math>K = {k_1,\ldots,k_p}</math> nazywamy '''maksymalnym zbiorem kolumn zgodnych (maksymalną klasą zgodności)''', jeżeli każda para <math>k_i</math>, <math>k_j</math> wzięta z tego zbioru jest zgodna oraz nie istnieje żaden inny zbiór kolumn zgodnych <math>K'</math>, zawierający <math>K</math>. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd12.png]] | |||
|valign="top"|Problem obliczania maksymalnych klas zgodnych można sprowadzić do znanego problemu obliczania maksymalnych klik w grafie lub do problemu kolorowania grafu. | |||
Najprostsza metoda polega na łączeniu par kolumn zgodnych w trójki, trójek w czwórki itd. | |||
Usuwając zbiory mniejsze zawarte w większych oblicza się Maksymalne Klasy Zgodności. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd13.png]] | |||
|valign="top"|Taką najprostszą metodę obliczania MKZ nazywać będziemy metodą bezpośrednią. Wg niej trzy pary zgodne <math>(a, b)</math>, <math>(b, c)</math>, <math>(a, c)</math> tworzą zbiór zgodny <math>(a, b, c)</math>. Z kolei cztery „trójki”: <math>(a, b, c)</math>, <math>(a, b, d)</math>, <math>(b, c, d)</math>, <math>(a, c, d)</math> tworzą „czwórkę tzn. 4 elementowy zbiór zgodny <math>(a, b, c, d)</math>. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd14.png]] | |||
|valign="top"|Zatem przystępując do obliczania dekompozycji należy najpierw obliczyć pary kolumn zgodnych. Dla funkcji, której tablica dekompozycji jest podana na planszy kolumny K0, K1 oraz K0, K2 są sprzeczne. Natomiast K0, K3 oraz K0, K4 są zgodne. W ten sposób wyznaczamy wszystkie pary kolumn zgodnych. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd15.png]] | |||
|valign="top"|Dysponując parami kolumn zgodnych kolejno obliczamy „trójki”, a następnie „czwórki” zgodne: 0,3,4,6; 1,3,4,6; 1,4,5; 2,5,7. W zapisie formalnym: | |||
: <math>\{K_0, K_3, K_4, K_6\}</math>, | |||
: <math>\{K_1, K_3, K_4, K_6\}</math>, | |||
: <math>\{K_1, K_4, K_5\}</math>, | |||
: <math>\{K_2, K_5, K_7\}</math>. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd16.png]] | |||
|valign="top"|Po wyznaczeniu maksymalnych zbiorów kolumn zgodnych (maksymalnych klas zgodności) | |||
należy wybrać minimalną liczbę klas (lub podklas) pokrywającą zbiór wszystkich kolumn. Z kolei w takiej rodzinie zbiorów należy usunąć kolumny powtarzające się. Ostatecznie uzyskujemy: <math>\{K_0, K_3, K_4, K_6\}</math>, <math>\{K_1, K_5\}</math>, <math>\{K_2, K_7\}</math>. Kolumny należące do jednej klasy zgodności można sklejać. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd17.png]] | |||
|valign="top"|W celu wyjaśnienia „sklejania” kolumny należące do różnych klas zgodności wyróżniono kolorami, a wszystkie kolumny należące do jednej klasy sklejono w jedną kolumnę uzyskując tablicę z mniejszą liczbą kolumn. dodatkowo w uzyskanej „mniejszej” tablicy wprowadzono kolumnę wypełnioną kreskami, dla podkreślenia podobieństwa do tablicy Karnaugha. Oczywiście tak uzyskana tablica reprezentuje funkcję h. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd18.png]] | |||
|valign="top"|Z kolei w celu obliczenia składowych typu g, posłużymy się pokolorowanymi tablicami pokazanymi na planszy. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd19.png]] | |||
|valign="top"|W rezultacie uzyskaliśmy realizację pierwotnej funkcji 5 argumentów w dwóch blokach, g oraz h, w taki sposób, że wyjścia bloku g są jednocześnie dodatkowymi wejściami do h. Najistotniejsze jest jednak to, że bloki te mają mniejszą liczbę zmiennych wejściowych. | |||
Warto podkreślić, że uzyskane wyniki wystarczą już do realizacji tej funkcji w strukturze FPGA. Albowiem (typowe) komórki takiej struktury realizują dowolna funkcję boolowska 4 zmiennych. Co nie przeszkadza, że w zależności od potrzeb technologii można składowe dekompozycji poddawać dalszym zabiegom syntezy, na przykład minimalizacji... | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd20.png]] | |||
|valign="top"|Uzyskując w rezultacie wielopoziomową strukturę bramek. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd21.png]] | |||
|valign="top"|Przystępujemy do obliczania funkcji g. W tym celu przepisujemy te funkcje z tablicy uzyskanej w procesie dekompozycji do odpowiednich tablic Karnaugha. I (pomijając już szczegóły) uzyskujemy następujące wyrażenia boolowskie: | |||
: <math>g_1=\bar c d \bar e + cde</math> | |||
: <math>g_2=\bar c d \bar e + ce + \bar d e</math> | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd22.png]] | |||
|valign="top"|W celu obliczenia funkcji h, w poprzednio uzyskanej tablicy zmieniamy kolejność wierszy, a dla tak powstałej tablicy Karnaugha obliczamy minimalne wyrażenie funkcji h: | |||
: <math>h=\bar a \bar g_2 + bg_2 + ag_1</math> | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd23.png]] | |||
|valign="top"|W metodzie dekompozycji jednym z najważniejszych algorytmów jest algorytm obliczania maksymalnych klas zgodności. Powstaje pytanie: czy nie można stosowanej do tej pory metody bezpośredniej zastąpić czymś skuteczniejszym? | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd24.png]] | |||
|valign="top"|W celu sprawniejszego obliczania MKZ wprowadzimy dwie nowe metody: | |||
<ol style="list-style-type:lower-alpha"> | |||
<li>metodę wg par zgodnych</li> | |||
<li>metodę wg par sprzecznych</li> | |||
</ol> | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd25.png]] | |||
|valign="top"|Niech ''E'' będzie relacją na zbiorze <math>V = \{v_1, ...,v_n\}</math>, tzn. zbiorem par zgodnych (sąsiednich) <math>v_i, v_j: i, j \in {1, ..., n}</math> oraz <math>i \ne j</math>. Obliczenie (maksymalnych) klas zgodności w zbiorze <math>V</math> przy danej ''E'' sprowadza się do wykonania następujących czynności. | |||
*Zapisujemy elementy <math>v</math> w rodzinach <math>S_j</math> zgodnie z zasadą <math>v_i \in S_j</math> tylko wtedy, gdy <math>v_j</math>, <math>v_i</math> jest parą zgodną oraz <math>i < j</math>. | |||
*Jeżeli <math>RKZ_k</math> jest rodziną klas zgodności uzyskaną w ''k''-tym kroku algorytmu, to rodzinę <math>RKZ_{k+1}</math> uzyskujemy, obliczając przecięcie każdej <math>KZ \in RKZ_k</math> ze zbiorem <math>S_{k+1}</math>. Wyróżniamy przy tym następujące przypadki: | |||
<ol style="list-style-type:lower-alpha"> | |||
<li><math>S_{k+1} = \varnothing</math> i wtedy <math>RKZ_{k+1}</math> jest powiększona o klasę <math>KZ = \{k+1\}</math>;</li> | |||
<li><math>KZ \cap S_{k+1} = \varnothing</math> wtedy klasa <math>KZ</math> nie ulega zmianie;</li> | |||
<li><math>KZ \cap S_{k+1} \ne \varnothing</math> wtedy powstaje nowa klasa <math>KZ’ = KZ \cap S_{k+1} \cup \{k+1\}</math>.</li> | |||
</ol> | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd26.png]] | |||
|valign="top"|Algorytm ten zastosujemy do obliczenia MKZ przy założeniu, że parami zgodnymi są: (1,2), (1,3), (1,5), (2,3), (2,4), (2,5), (3,5), (3,6), (4,6). Najpierw obliczamy zbiory R. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd27.png]] | |||
|valign="top"|Zapisując zbiory R w tabelce jak na planszy kolejno obliczamy klasy zgodności. Przykładowo: W pierwszym kroku wpisujemy zbiór {1}. Iloczyn {1} i <math>R_2 = \{1\}</math> powiększony o element 2 tworzy zbiór zgodny {1, 2} w kroku drugim. Analogicznie powstaje zbiór zgodny {1, 2, 3} w kroku trzecim. W kroku czwartym iloczyn {1, 2, 3} i <math>R_4</math>, powiększamy o element 4, stąd klasa {2, 4} do której należy dopisać już obliczony zbiór zgodny {1, 2, 3}. Wynik w postaci maksymalnych klas zgodności powstaje w kroku 6. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd28.png]] | |||
|valign="top"|Algorytm obliczania MKZ wg par sprzecznych. | |||
Zapisać pary sprzeczne w postaci koniunkcji dwuskładnikowych sum. | |||
Koniunkcję dwuskładnikowych sum przekształcić do minimalnego wyrażenia boolowskiego typu suma iloczynów. | |||
Wtedy MKZ są uzupełnieniami zbiorów reprezentowanych przez składniki iloczynowe tego wyrażenia. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd29.png]] | |||
|valign="top"|Wracając do poprzedniego przykładu wypisujemy pary sprzeczne: (1,4), (1,6), (2,6), (3,4), (4,5), | |||
(5,6). Dalej będziemy je zapisywali bardziej formalnie: (k1, k4), (k1, k6), (k2, k6), (k3, k4), (k4, k5), (k5, k6). | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd30.png]] | |||
|valign="top"|W celu obliczenia MKZ metodą par sprzecznych najpierw zapisujemy wyrażenie boolowskie typu „koniunkcja sum”. Następnie zmieniamy kolejność czynników (par). W otrzymanym wyrażeniu stosujemy zasady algebry Boole’a. Pozwalają one szybko wyznaczyć ostateczne wyrażenie typu „suma iloczynów”. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd31.png]] | |||
|valign="top"|Odejmując od zbioru wszystkich elementów zbiory reprezentowane przez poszczególne składniki tego wyrażenia uzyskujemy maksymalne klasy zgodności, oczywiście takie same jak poprzednio. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd32.png]] | |||
|valign="top"|Dysponując dwiema metodami obliczania MKZ-ów warto się zastanowić, który z nich stosować w konkretnym zadaniu. Duża liczba par zgodnych (w porównaniu do liczby par sprzecznych) sugeruje, że łatwiejsze powinny być obliczenia wg par sprzecznych. Z taką sytuacją mamy do czynienia dla par zgodnych podanych na planszy. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd33.png]] | |||
|valign="top"|Jeszcze inny sposób obliczania zbioru kolumn, które można skleić polega na zastosowaniu algorytmu kolorowania tzw. grafu niezgodności Wierzchołkami grafu niezgodności są kolumny <math>k_1, k_2, ...,</math> a jego krawędzie łączą sprzeczne (niezgodne) pary kolumn. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd34.png]] | |||
|valign="top"|Metodę omówimy na przykładzie par zgodnych i sprzecznych podanych na planszy. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd35.png]] | |||
|valign="top"|Na podstawie par sprzecznych tworzymy graf niezgodności. Zgodnie z zadaniem kolorowania grafu należy teraz znaleźć minimalną liczbę kolorów, które pozwoliłyby pokolorować wierzchołki tego grafu tak, aby żadne dwa wierzchołki o tym samym kolorze nie były połączone krawędzią. I taką sytuację podano na planszy. Wierzchołki o tym samym kolorze reprezentują zbiry kolumn, które można skleić. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd36.png]] | |||
|valign="top"|Chcąc porównać skuteczność obliczania klas zgodności za pomocą grafu niezgodności, zapiszemy teraz pary zgodne z planszy 32 na grafie zgodności. Jak widać trudno bezpośrednio z tego grafu odczytać MKZ. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd37.png]] | |||
|valign="top"|Natomiast dla odpowiedniego grafu niezgodności pokazanego na planszy łatwo jest wyznaczyć pokolorowanie wierzchołków dwoma kolorami tak aby żadne dwa wierzchołki o tym samym kolorze nie były połączone krawędzią. | |||
|} | |||
<hr width="100%"> | |||
{| border="0" cellpadding="4" width="100%" | |||
|valign="top" width="500px"|[[Grafika:TC_M6_Slajd38.png]] | |||
|valign="top"|Więcej na temat dekompozycji funkcji boolowskich można znaleźć w książce „Synteza układów logicznych”. | |||
|} | |} |
Aktualna wersja na dzień 21:58, 15 wrz 2023
![]() |
Niniejsza plansza przedstawia funkcje boolowskie odpowiadające składowym tej dekompozycji. |
![]() |
Kolumny zgodne można „sklejać”. pokolorowane kolumny na planszy wyjaśniają proces sklejania. |
![]() |
Dysponując parami kolumn zgodnych kolejno obliczamy „trójki”, a następnie „czwórki” zgodne: 0,3,4,6; 1,3,4,6; 1,4,5; 2,5,7. W zapisie formalnym:
|
![]() |
Z kolei w celu obliczenia składowych typu g, posłużymy się pokolorowanymi tablicami pokazanymi na planszy. |
![]() |
Uzyskując w rezultacie wielopoziomową strukturę bramek. |
![]() |
W celu obliczenia funkcji h, w poprzednio uzyskanej tablicy zmieniamy kolejność wierszy, a dla tak powstałej tablicy Karnaugha obliczamy minimalne wyrażenie funkcji h:
|
![]() |
W celu sprawniejszego obliczania MKZ wprowadzimy dwie nowe metody:
|
![]() |
Algorytm ten zastosujemy do obliczenia MKZ przy założeniu, że parami zgodnymi są: (1,2), (1,3), (1,5), (2,3), (2,4), (2,5), (3,5), (3,6), (4,6). Najpierw obliczamy zbiory R. |
![]() |
Odejmując od zbioru wszystkich elementów zbiory reprezentowane przez poszczególne składniki tego wyrażenia uzyskujemy maksymalne klasy zgodności, oczywiście takie same jak poprzednio. |
![]() |
Metodę omówimy na przykładzie par zgodnych i sprzecznych podanych na planszy. |
![]() |
Więcej na temat dekompozycji funkcji boolowskich można znaleźć w książce „Synteza układów logicznych”. |