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 BiBj  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), (B2B6), (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 Π 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, B6B7, 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 + B1B2B5B+
 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), (B3B5), (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}

 S=  {1, 2}

  {1, 2, 3}

 S=  {3}

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

 S=  {1, 2, 3}

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

 S=  {4, 5}

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

 S=  {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