3. Dekompozycja funkcjonalna – model ogólny

Niech  X = {<i>x</i><sub>1</sub>,...,<i>x<sub>n</sub></i>} będzie zbiorem zmiennych wejściowych funkcji F(x1,...,xn) specyfikowanej zbiorem kostek typu fr. Niech U i V będą dwoma rozłącznymi podzbiorami zbioru X takimi, że U È V = X.

Załóżmy, że zbiór zmiennych x1,...,xn został w odpowiedniej tablicy funkcji przenumerowany  w taki sposób, że U = {<i>x</i><sub>1</sub>,...,<i>x<sub>r</sub></i>} oraz V = {<i>x<sub>r </sub></i><sub>+ 1</sub>,...,<i>x<sub>n</sub></i>}. Niech dla dowolnej n-krotki x, pierwsze r składowe będą oznaczone przez xU, a ostatnie  s = n – r składowe, przez xV.

 

Niech F będzie funkcją  fr posiadającą  n > 0 wejść oraz m > 0 wyjść, w której para (U,V) jest określona jak wyżej. Załóżmy, że F jest specyfikowana zbiorem kostek K. Niech G będzie funkcją  fr o s = n – r wejściach i p wyjściach oraz H będzie funkcją fr o r + p wejściach i m > 0 wyjściach.

Parę (G,H) nazywamy dekompozycją szeregową rozłączną funkcji F (rys. 3.15) ze względu na (U,V), jeśli, dla każdego mintermu b odpowiedniego do K, G(bV),  jest zdefiniowana a ponadto G(bV) Π{0,1}p  oraz  F(b) Ê H(bU,G(bV)}.

 

Uzupelnij opis obrazka

3.15. Dekompozycja szeregowa  – model ogólny

Funkcja F typu fr określona zbiorem kostek K ma dekompozycję szeregową rozłączną ze względu na  (U,V) wtedy i tylko wtedy, gdy istnieje nakrycie bG na K takie, że:

 

            bV £ bG oraz

            bU · bG £ bF,

 

gdzie bU i bV  są nakryciami indukowanymi przez U i V oraz bF  jest nakryciem wyjściowym.

 Analogiczne twierdzenie obowiązuje również w przypadku, gdy nakrycia b zostaną zastąpione systemami zbiorów s.

Funkcja F typu fr określona zbiorem kostek K ma dekompozycję szeregową rozłączną ze względu na  (U,V) wtedy i tylko wtedy, gdy istnieje system zbiorów  sG na K taki, że:

 

            sV £ sG oraz

            sU · sG £ sF,

 

gdzie: sU = max bU oraz sV = max bV są systemami zbiorów indukowanymi przez U i V oraz sF = max bF jest odpowiednim systemem wyjściowym.

Jak wynika z powyższych twierdzeń głównym zadaniem w obliczeniu dekompozycji funkcji F przy danych zbiorach U i V jest znalezienie nakrycia bG, które spełnia warunki twierdzenia 3.4. Podział ten nie tylko weryfikuje istnienie dekompozycji, ale również pozwala na wyznaczenie tablic fr dla funkcji G i H. Wynika to z faktu, że nakrycia  bV i bG oraz  bU · bG i bF umożliwiają skonstruowanie odpowiednio tablic funkcji G i H. Konstrukcję tych tablic, a  także metody obliczania  bG  omówimy dokładnie w dalszej części rozdziału. Na razie zajmiemy się podstawowymi zasadami tych obliczeń.

Skoro  bG musi być konstruowany przez sklejanie bloków nakrycia bV, to dwa bloki Bi i Bj  nakrycia  bV są zgodne, jeśli nakrycie gij  uzyskane z bV przez sklejenie Bi i Bj do jednego bloku i pozostawienie wszystkich pozostałych bloków bez zmiany, spełnia drugi warunek twierdzenia 3.4, czyli  bU · gij  £ bF. W przeciwnym przypadku bloki Bi i Bj są niezgodne.

Podzbiór d bloków nakrycia bV jest klasą zgodną, jeśli bloki w  zbiorze d  są parami zgodne. Klasa zgodna jest klasą maksymalną, jeśli nie jest podzbiorem żadnej innej klasy zgodnej. Maksymalne klasy zgodne umożliwiają konstrukcję bG. Bloki nakrycia bG powstają z klas zgodności tworzących minimalne pokrycie zbioru wszystkich bloków bV. Wyse­lekcjonowane według minimalnego pokrycia klasy zgodne są następnie redukowane o bloki powtarzające się i przyjmowane jako bloki nakrycia bG (lub sG), po podstawieniu pierwotnych elementów w postaci numerów kostek funkcji F .

Dla funkcji F z tablicy 3.23 i zbiorów  U = {<i>x</i><sub>1</sub>} i V = {<i>x</i><sub>2</sub>,<i>x</i><sub>3</sub>,<i>x</i><sub>4</sub>} nakrycia bU, bV są następujące:
\beta _{V} =\left\{\overline{1,2,3} ;\overline{3,7} ;\overline{6,7} ;\overline{5} ;\overline{4,6} ;\overline{1,2} ;\overline{4}\right\}

Tablica  3.23
         

 

Uwzględniając, że \sigma _{F} =\left\{\overline{4,5} ;\overline{4,6} ;\overline{2,3,7} ;\overline{1,3,6,7}\right\}  możemy obliczyć, iż sklejenie bloków B1 i B2 prowadzi do g12 = {1,2,3,7}, co po obliczeniu \beta _{U} \cdot \gamma _{12} =\left\{\overline{1,3,7} ;\overline{2,3}\right\}  pozwala wnioskować, że bU · g12  £ sF, zatem (B1, B2) jest parą zgodną. Inaczej jest z parą  (B1, B3), dla której  g13 = {1,2,3,6,7}, stąd, \beta _{U} \cdot \gamma _{13} =\left\{\overline{1,3,6,7} ;\overline{2,3,6}\right\} \nleq \sigma _{F} . (B1, B3) jest więc parą niezgodną. W rezultacie wszystkie pary zgodne są następujące: (B1, B2), (B1, B6), (B2, B3), (B2, B6), (B4, B7) i (B5, B7). Łatwo więc wyznaczyć maksymalne klasy zgodne: {<i>B</i><sub>1</sub>, <i>B</i><sub>2</sub>, <i>B</i><sub>6</sub>},{<i>B</i><sub>2</sub>, <i>B</i><sub>3</sub>}, {<i>B</i><sub>4</sub>, <i>B</i><sub>7</sub>} i {<i>B</i><sub>5</sub>,<i>B</i><sub>7</sub>}. Minimalne pokrycie zbioru {<i>B</i><sub>1</sub>,..., <i>B</i><sub>7</sub>} podanymi wyżej klasami prowadzi do rozwiązania: {<i>B</i><sub>1</sub>, <i>B</i><sub>2</sub>, <i>B</i><sub>6</sub>},{<i>B</i><sub>4</sub>}, {<i>B</i><sub>3</sub>} i {<i>B</i><sub>5</sub>,<i>B</i><sub>7</sub>}. Na tej podstawie  nakrycie \beta _{G} =\left\{\overline{1,2,3,7} ;\overline{5} ;\overline{6,7} ;\overline{4,6}\right\}   (po uwzględnieniu pierwotnych numerów kostek z bloków bV). Łatwo sprawdzić, że bV £ bG, ponadto \beta _{U} =\left\{\overline{1,3,4,5,6,7} ;\overline{2,3,4,5,6}\right\} , \beta _{F} =\left\{\overline{4,5} ;\overline{4,6} ;\overline{2,3,7} ;\overline{1,3,6,7}\right\} , czyli:

 

\beta _{U} \cdot \beta _{G} =\left\{\overline{1,3,7} ;\overline{2,3} ;\overline{5} ;\overline{6,7} ;\overline{6} ;\overline{4,6}\right\} \leq \beta _{F}

 

Warunki twierdzenia 3.4 są więc spełnione i odpowiednia dekompozycja istnieje. Należy więc wyznaczyć tablice opisujące funkcje G i H.

W tym celu będziemy analizowali bV £ bG, oraz bU · bG i  bF. Tablica funkcji G powstaje w następujący sposób. Dla każdego bloku B nakrycia bV tworzymy kostkę, której poszczególne pozycje reprezentują wartości zmiennych wejściowych funkcji G. Wartości te dla zmiennej xi są wyznaczane w zależności od przynależności bloku B do bloku nakrycia bi. Z kolei wartość funkcji G dla obliczonej w ten sposób kostki wynika z przynależności bloku B do bloku bG.

Dla funkcji F z przykładu 3.8 otrzymana w ten sposób tablica podana jest w tablicy 3.24a.

Tablica  3.24

a)

 

b)

 

 

 

 

 

 

Blok

x2

x3

x4

g1

g2

 

Blok

x1

g1

g2

y1

y2

1,2,3

0

0

0

0

0

 

1,3,7

0

0

0

1

1

3,7

0

0

1

0

0

 

2,3

1

0

0

1

0

6,7

1

0

1

1

0

 

5

*

0

1

0

0

5

1

1

0

0

1

 

6,7

0

1

0

1

1

4,6

1

1

1

1

1

 

6

*

1

*

–

1

1,2

0

*

0

0

0

 

4,6

*

1

1

0

1

4

*

1

1

1

1

 

 

 

 

 

 

 


W analogiczny sposób tworzymy tablicę funkcji H. Każdemu blokowi B z iloczynu:

\beta _{U} \cdot \beta _{G} =\left\{\overline{1,3,7} ;\overline{2,3} ;\overline{5} ;\overline{6,7} ;\overline{6} ;\overline{4,6}\right\} \leq \beta _{F}

przyporządkowujemy kostkę o składowych x1, g1, g2, przy czym wartości tych składowych wynikają z przyna­leżności bloku B do bloków nakrycia b1 oraz bG. Należy więc określić kodowanie bloków
\beta _{G} =\left\{\overline{1,2,3,7} ;\overline{5} ;\overline{6,7} ;\overline{4,6}\right\} , które tu przyjmujemy następująco: 00 dla {1,2,3,7}, 01 dla {5}, 10 dla {6,7} oraz 11 dla {4,6}. Wartości funkcji H wynikają z przynależności bloków B do poszczególnych bloków z sF. Przypomnijmy, że bloki sF (por. przykład 3.8) są kodowane następująco: 4,5, jako 00;  4,6 jako 01; 2,3,7 jako 10 oraz 1,3,6,7 jako 11. W rezultacie tablica H jest taka, jak w tablicy 3.24b.

Obliczenia tablic funkcji G i H w przykładzie 3.8, jak też obliczenie bG w przykładzie 3.9 są proste i nie wymagają stosowania wszystkich, potrzebnych do tego celu procedur. W bardziej skomplikowanych przypadkach obliczenia te wymagają stosowania dodatkowych procedur, których rolę wyjaśnimy poniżej.

Przy konstrukcji tablicy funkcji G pierwszą czynnością jest wyznaczanie kostki C odpowiadającej blokowi B z nakrycia bG oraz wartości funkcji G dla tej kostki, tj. G(C). Kostkę Ci kojarzoną z Bi nazywać będziemy reprezentantem bloku Bi. W ogólnym przypadku może się zdarzyć, że dla dwóch różnych Bi, Bj, kostki Ci, Cj będą miały niepuste przecięcie, a jednocześnie odpowiadające im wartości funkcji G będą różne:

Ci Ç Cj ¹ f, G(Ci) ¹ G(Cj)

 

Jest to sytuacja niedopuszczalna z punktu widzenia niesprzeczności tablicy specyfikującej funkcję.

Celem niedopuszczenia do takich sprzeczności należy odpowiednio modyfikować kostki reprezentujące bloki B Î  bV. Niech C = r(B) oraz niech B1, ..., Bk oznaczają  bloki z bV, dla których:

 

B Ì B1, G(C1) ¹ G(C)

B Ì B2, G(C2) ¹  G(C)

·

·

·

B Ì Bk, G(Ck) ¹ G(C)

 

gdzie: C, C1, ..., Ck są reprezentantami bloków B, B1,..., Bk.

 

W takiej sytuacji sprzeczność w tablicy funkcji G usuniemy zastępując kostkę C kostką (lub kostkami) obliczonymi jako różnica: C – {<i>C</i><sub>1</sub>,..., <i>C<sub>k</sub></i>}. Różnicę taką najwygodniej jest obliczyć jako przecięcie C z uzupełnieniem {<i>C</i><sub>1</sub>,..., <i>C<sub>k</sub></i>}, czyli kostka zmodyfikowana:

 

            C’ = C Ç {<i>C</i><sub>1</sub>,..., <i>C<sub>k</sub></i>}.

Rozważmy dekompozycję  funkcji F z tablicy 3.25 dla U = {<i>x</i><sub>1</sub>,<i>x</i><sub>2</sub>} i V = = {<i>x</i><sub>3</sub>,<i>x</i><sub>4</sub>,<i>x</i><sub>5</sub>,<i>x</i><sub>6</sub>}. Odpowiednie nakrycie  bV jest tu następujące: 

 

\beta _{V} =\overset{}{\{}\overset{B_{1}}{\overline{7,8}} ;\overset{B_{2}}{\overline{3,4,8}} ;\overset{B_{3}}{\overline{8}} ;\overset{B_{4}}{\overline{4,8}} ;\overset{B_{5}}{\overline{1,5,8}} ;\overset{B_{6}}{\overline{3,5,8}} ;\overset{B_{7}}{\overline{6,8}} ;\overset{B_{8}}{\overline{1,2,5,8}} ;\}

 

Tablica  3.25

 

x1

x2

x3

x4

x5

x6

y1

y2

y3

1

*

0

1

*

0

0

1

–

–

2

0

*

1

1

0

0

1

–

–

3

1

*

*

*

0

1

–

1

–

4

0

*

0

*

*

1

–

1

–

5

1

*

1

*

0

*

–

–

1

6

*

*

1

0

1

*

0

0

0

7

*

*

0

*

0

0

–

–

0

8

1

1

*

*

*

*

0

–

–

 

Łatwo sprawdzić, że nakrycie:

 

\sigma _{G} =\underset{}{\{}\overset{00}{\overline{3,4,7,8}} ;\ \overset{01}{\overline{3,5,8}} ;\ \overset{10}{\overline{6,8}} ;\overset{11}{\overline{\ 1,2,5,8}}\}

 

spełnia warunki twierdzenia 3.4, zatem dekompozycja istnieje.

 

Dla kolejnych bloków  bV, ich repre­zentantów obliczamy albo wg zawartości tych bloków w blokach nakryć bi albo bezpośrednio z tablicy 3.25, korzystając z faktu, że reprezentant bloku B jest iloczynem kostek zawartych w B. Na przykład dla B1 = {7,8}, B2 = {3,4,8}, B3 = {8},

 

C1 = r(B1) = 0*00 Ç ****  = 0*00

C2 = r(B2) = **01 Ç 0**1 Ç ****  = 0*01

C3 = r(B3) = ****

C4 = r(B3) = 0**1

 

Pełna tablica reprezentantów podana jest w tabl. 3.26.

Tablica  3.26

Blok bV

Reprezentant

Wyjścia

B1

0 * 0 0

0 0

B2

0 * 0 1

0 0

B3

* * * *

0 0

B4

0 * *  1

0 0

B5

1 * 0 0

1 1

B6

1 * 0 1

0 1

B7

1 0 1 *

1 0

B8

1 1 0 0

1 1

 

Skoro B1 Í {3,4,7,8}, któremu w bG  został przypo­rządkowany kod 00, to G(0*00) = 00. Podobnie dla B2 Í {3,4,7,8} mamy G(0*01) = 00. Zatem przyjmując, że G(C3) = 00 (B3 Í {3,4,7,8}, można więc jako wartość G dla kostki C3 przyjąć kod bloku {3,4,7,8}), konflikt znajdujemy dla kostek reprezentujących bloki B5, B6,  B7, B8, stąd następująca modyfikacja C3:

 

{(</span><span style="line-height:150%"><span style="font-family:Symbol"><span style="text-transform:uppercase">****</span></span></span><span style="line-height:150%">)} – {1</span><span style="line-height:150%"><span style="font-family:Symbol"><span style="text-transform:uppercase">*</span></span></span><span style="line-height:150%">00, 1</span><span style="line-height:150%"><span style="font-family:Symbol"><span style="text-transform:uppercase">*</span></span></span><span style="line-height:150%">01, 101</span><span style="line-height:150%"><span style="font-family:Symbol"><span style="text-transform:uppercase">*</span></span></span><span style="line-height:150%">, 1100} =  COMPLEMENT{1</span><span style="line-height:150%"><span style="font-family:Symbol"><span style="text-transform:uppercase">*</span></span></span><span style="line-height:150%">00, 1</span><span style="line-height:150%"><span style="font-family:Symbol"><span style="text-transform:uppercase">*</span></span></span><span style="line-height:150%">01, 101</span><span style="line-height:150%"><span style="font-family:Symbol"><span style="text-transform:uppercase">*</span></span></span><span style="line-height:150%">, 1100} = {0</span><span style="line-height:150%"><span style="font-family:Symbol"><span style="text-transform:uppercase">***</span></span></span><span style="line-height:150%">, </span><span style="line-height:150%"><span style="font-family:Symbol"><span style="text-transform:uppercase">*</span></span></span><span style="line-height:150%">11</span><span style="line-height:150%"><span style="font-family:Symbol"><span style="text-transform:uppercase">*</span></span></span><span style="line-height:150%">}.

 Omawiana wyżej dekompozycja, w której zbiory U i V są rozłączne, jest przypadkiem szczególnym dekompozycji, dla której założenie U  Ç V = f jest nieistotne. Istotne jest jedynie założenie dotyczące sensownej liczby wejść do poszczególnych komponentów.

Niech U i V będą podzbiorami X takimi, że U È V = X. Załóżmy, że zmienne  x1,...,xn są uporządkowane w taki sposób, iż U = {<i>x</i><sub>1</sub>,...,<i>x<sub>r</sub></i>} i V = {<i>x<sub>n</sub></i><sub>–<i>s</i>+1</sub>,...,<i>x<sub>n</sub></i>}.

Niech F będzie funkcją o n > 0 wejściach i m > 0 wyjściach, i niech (U,V) będzie określone jak wyżej. Zakładamy też, że F jest specyfikowana zbiorem kostek K. Niech G będzie funkcją o s wejściach i p wyjściach, natomiast H funkcją fr o r + p wejściach i m wyjściach. Parę (G,H) nazywamy dekompozycją funkcji F ze względu na (U,V), jeśli dla każdego mintermu b odpowiedniego do K,  G(bV) Π{0,1}p oraz

 

            F(b) Ê H(bU, G(bV)).

 

Jeśli istnieje nakrycie bG na K takie, że:

 

            bV £ bG, oraz

            bU · bG £ bF,

 

to F ma dekompozycję szeregową ze względu na (U,V).

Dla funkcji z tablicy 3.23 rozważmy dekompozycję nierozłączną ze zbiorami:

U = {<i>x</i><sub>1</sub>,<i>x</i><sub>4</sub>} i V = {<i>x</i><sub>2</sub>, <i>x</i><sub>3</sub>, <i>x</i><sub>4</sub>}. Mamy tu:

\beta _{U} =\left\{\overline{1,3,5} ;\overline{3,4,6,7} ;\overline{2,3,5} ;\overline{3,4,6} ;\right\}

\beta _{V} =\left\{\overline{1,2,3} ;\overline{3,7} ;\overline{1,2} ;\overline{4} ;\overline{6,7} ;\overline{5} ;\overline{4,6}\right\}

 

Do obliczenia bG zastosujemy algorytm wyznaczania klas zgodnych wg par niezgodności: (B1, B4), (B1, B6), (B1, B7), (B2, B4), (B2, B6),
(B2, B7), (B3, B6), (B4, B5), i (B5, B7). 
Utworzona według par niezgodnych formuła typu iloczyn sum i jej kolejne przekształcenia są następujące:

 

(B1 + B4) (B1 + B6 )(B1 + B7) (B2 + B4) (B2 + B6) (B2 + B7) (B3 + B6) (B4 + B5) (B5 + B7) = (B1 + B4B6B7)(B2 + B4B6B7)(B3 + B6) (B5 + B4B7) =
= B1B2B3B5 + B1B2B5B6 +
 B1B2B3B4B7 + B4B6B7.

 

Klasy zgodne uzyskamy odejmując od zbioru {<i>B</i><sub>1</sub>,...,<i>B</i><sub>7</sub>}, zbiory tych Bi, które występują w jednym składniku obliczonego wyżej wyrażenia typu „suma  iloczynów”. Stąd:

 

{<i>B</i><sub>1</sub>,..., <i>B</i><sub>7</sub>} - {<i>B</i><sub>1</sub>, <i>B</i><sub>2</sub>, <i>B</i><sub>3</sub>, <i>B</i><sub>5 </sub>} = {<i>B</i><sub>4</sub>, <i>B</i><sub>6</sub>, <i>B</i><sub>7</sub>}

{<i>B</i><sub>1</sub>,...,<i>B</i><sub>7</sub>} - {<i>B</i><sub>1</sub>, <i>B</i><sub>2 </sub>, <i>B</i><sub>5 </sub>, <i>B</i><sub>6</sub> } = {<i>B</i><sub>3</sub>, <i>B</i><sub>4</sub>, <i>B</i><sub>7</sub>}

{<i>B</i><sub>1</sub>,...,<i>B</i><sub>7</sub>} -  {<i>B</i><sub>1</sub>, <i>B</i><sub>2</sub>, <i>B</i><sub>3</sub>, <i>B</i><sub>4 </sub>, <i>B</i><sub>7</sub>}  = {<i>B</i><sub>5 </sub>, <i>B</i><sub>6</sub>}

{<i>B</i><sub>1</sub>,...,<i>B</i><sub>7</sub>} - {<i>B</i><sub>4</sub>, <i>B</i><sub>6</sub>, <i>B</i><sub>7</sub>} = {<i>B</i><sub>1</sub>, <i>B</i><sub>2</sub>, <i>B</i><sub>3</sub>, <i>B</i><sub>5 </sub>}

 

Z powyższych klas bloków zgodnych można wyselekcjonować dwie: {<i>B</i><sub>1</sub>, <i>B</i><sub>2</sub>, <i>B</i><sub>3</sub>, <i>B</i><sub>5</sub>} oraz {<i>B</i><sub>4</sub>, <i>B</i><sub>6</sub>, <i>B</i><sub>7</sub>}, pokrywające zbiór {<i>B</i><sub>1</sub>,..., <i>B</i><sub>7</sub>}, czyli \beta _{G} =\left\{\overline{B_{1} ,B_{2} ,B_{3} B_{5}} ;\overline{B_{4} ,B_{6} ,B_{7}}\right\} . W tym przypadku rozwiązanie jest trywialne. Wracając do pierwotnych kostek tworzących poszczególne bloki Bi otrzymujemy:

                    \beta _{G} =\overset{}{\{}\overset{0}{\underset{}{\overline{1,2,3,6,7}}} ;\overset{1}{\overline{4,5,6}}\} ,

 

w którym od razu określamy kodowanie bloków.

 

Identyczny wynik uzyskamy obliczając klasy zgodne algorytmem korzystającym z par zgodnych. Następujące pary są zgodne: (B1, B2), (B1, B3), (B1, B5), (B2, B3), (B2, B5), (B3, B4), (B3, B5), (B3, B7),  (B4, B6), (B4, B7), (B5, B6), (B6, B7). Na tej podstawie wyznaczamy zbiory Sj i tworzymy kolejne listy (rodziny RKZk ) klas zgodnych (porównaj algorytm z rozdz. 1), które dla uproszczenia zapisów podawać będziemy w postaci zbiorów indeksów:

 

S1 = f

  {1}

 S2 = {1}

  {1, 2}

 S3  =  {1, 2}

  {1, 2, 3}

 S4  =  {3}

  {3, 4}, {1, 2, 3}

 S5  =  {1, 2, 3}

  {3, 5}, {1, 2, 3, 5}, {3, 4}

 S6  =  {4, 5}

  {5, 6}, {4, 6}, {1, 2, 3, 5}, {3, 4}

 S7  =  {3, 4, 6}

  {6, 7}, {4, 6, 7}, {3, 7},  {3, 4, 7},  {5, 6}, {1, 2, 3, 5}

 

W obliczeniach powyższych przekreśleniem zaznaczyliśmy zbiory, które są usuwane na mocy definicji maksymalnych klas zgodnych. Dysponując nakryciem bG, łatwo już wyznaczyć tablice funkcji G i H. Podane są one odpowiednio w tablicach 3.27a i 3.27b.

 

Tablica  3.27

a)

 

b)

 

 

 

 

x2

x3

x4

g

 

x1

x4

g

y1

y2

0

0

0

0

 

0

0

0

1

1

0

0

1

0

 

*

0

1

0

0

0

*

0

0

 

0

1

0

1

1

*

1

1

1

 

*

1

1

0

1

1

0

1

0

 

1

0

0

1

0

1

1

0

1

 

*

1

0

1

1

1

1

1

1

 

 

 

 

 

 

 

 W wielu przypadkach dekompozycja szeregowa z przecinającymi się zbiorami U i V – zwana często dekompozycją nierozłączną – jest pożyteczna. Załóżmy realizację funkcji z powyższego przykładu  na komórkach FPGA o strukturze: 3 wejścia, 1 wyjście. Obliczona dekompozycja nierozłączna (rys. 3.16a) wymaga do całkowitej realizacji tej zdekomponowanej funkcji 3 komórek: jedną do funkcji G i dwie do funkcji H (po jednej na każde wyjście). Dekompozycja rozłączna o strukturze H(x1,x2,G(x3,x4)), również wymagałaby do swojej realizacji 3 komórek; niestety, taka dekompozycja nie istnieje. Istnieje natomiast dekompozycja rozłączna H(x1,G(x2,x3,x4)) – rys. 3.16b, w której funkcja G ma 2 wyjścia, i dla tego jej realizacja wymaga aż 4 komórek (dwóch dla funkcji G i dwóch dla H).

Uzupelnij opis obrazka

Rys. 3.16. Dekompozycja szeregowa: a) nierozłączna; b) rozłączna