Algorytm ekspansji

Algorytm ekspansji

Algorytm ekspansji to składnik metody Espresso, która służy do minimalizacji funkcji boolowskich. Samodzielnie również umożliwia znalezienie minimalnej realizacji określonej funkcji boolowskiej.

Algorytm ten operuje na zbiorach F oraz R (więcej informacji w sekcji Zapis funkcji boolowskiej w artykule Funkcja boolowska). Jego głównym celem jest maksymalne powiększenie kostek zbioru F, przy jednoczesnym uwzględnieniu ograniczeń wynikających z kostek ze zbioru R.

Algorytm

Proces działania algorytmu przebiega według następujących kroków:

  • Wyznaczenie macierzy blokujących B(ki, R) dla ki∈F.
  • Wyznaczenie implikantów prostych funkcji f=(F, R).
  • Określenie zbioru implikantów prostych, które pokrywają wszystkie kostki ki.

Macierze blokujące

Macierz blokującą B(ki, R) tworzy się poprzez negację

j-tej kolumny macierzy R, gdzie j-te elementy kostki ki są jedynkami. Przykład:

k1 = {0, 0, 0, 1, 0}

R = {1, 0, 0, 0, 1; 1, 0, 1, 0, 1; 0, 1, 0, 0, 1}

B1 = {1, 0, 0, 1, 1; 1, 0, 1, 1, 1; 0, 1, 0, 1, 1}

zanegowana kolumna – 4

Należy wyznaczyć macierz blokującą dla każdej kostki ze zbioru F.

Wyznaczenie implikantów prostych

Dla danej kostki ki należy określić ekspansję k+(L, ki). Jeśli L jest minimalnym pokryciem kolumnowym macierzy blokującej, wówczas k+ jest implikantem prostym funkcji f.

W związku z tym, ważne jest znalezienie minimalnych pokryć kolumnowych macierzy Bi. Dla wcześniej wyznaczonej macierzy B1, minimalnymi pokryciami kolumnowymi są:

  • L = {4}
  • L = {5}.

Zauważmy, że istnieje również pokrycie L = {1, 2}, jednak nie jest ono minimalne.

Kostkę k+(L, k) wyznacza się według następującego wzoru:

k+(L, k) = {kj, gdy j ∈ L; , w pozostałych przypadkach}

Zatem:

k+({4}, k1) = (*1*) = x4.

Końcowy krok

Po zidentyfikowaniu wszystkich implikantów prostych, należy wyznaczyć taki ich podzbiór, który pokrywa wszystkie kostki ki ze zbioru F. Suma tych implikantów będzie minimalną realizacją określonej funkcji f(F, R).

Przeczytaj u przyjaciół: