200 likes | 385 Views
Problem kodowania w automatach. Minimalna liczba bitów b potrzebna do zakodowania automatu, w którym liczność zbioru S jest | S |. Kodowanie stanów to przypisanie kolejnym stanom automatu odpowiednich kodów binarnych. b = log 2 | S | . Q1Q2Q3. 000 001 010 011 100.
E N D
Problem kodowania w automatach Minimalna liczba bitów b potrzebna do zakodowania automatu, w którym liczność zbioru S jest |S| Kodowanie stanów to przypisanie kolejnym stanom automatu odpowiednich kodów binarnych. b = log2|S| Q1Q2Q3 000 001 010 011 100 Złożoność realizacji sprzętowej automatu silnie zależy od sposobu zakodowania stanów!
Problem kodowania Wariant I A = 00 B = 01 C = 10 D = 11 Wariant II A = 00 B = 11 C = 01 D = 10 Wariant II Wariant I
3 stany - 3 różne kodowania 4 stany - 3 różne kodowania Kodowanie Jak przewidzieć (obliczyć) najlepsze kodowanie stanów? Czy realne jest sprawdzenie wszystkich możliwości 5 stanów - 140 kodowań 7 stanów - 840 kodowań 9 stanów -
KODOWANIE Elementy rachunku podziałów c.d. Jedyną rozsądną z punktu widzenia dzisiejszych technologii i realną do omówienia w ograniczonym czasie wykładu jest metoda wykorzystująca podział z własnością podstawienia. Iloczyn podziałów, iloraz podziałów oraz relacja Suma podziałów Sumą podziałów a+b nazywamy najmniejszy (względem relacji ) podział, który jest nie mniejszy od a oraz b.
a+ b a+ b a+ b a+ b Przykładzik a b a+ b
Własność podstawienia Podział na zbiorze stanów automatu M=<S, I , δ> ma własność podstawienia (closed partition), gdy dla każdej pary stanów Si, Sjnależącej do tego samego bloku i każdego wejścia Ikstany Ik Si oraz Ik Sj należą do wspólnego bloku . Podziały z własnością podstawienia:
Twierdzenie Dany jest automat M o zbiorze stanów S, |S| = n. Do zakodowania stanówpotrzeba Q1, ..., Qkelementów pamięci. () – liczba bloków podziału Jeżeli istnieje podział z własnością podstawienia i jeżeli r spośród k zmiennych kodujących Q1, ..., Qk, gdzie r = log2(), jest przyporządkowanych blokom podziału tak, że wszystkie stany zawarte w jednym bloku są oznaczone tymi samymi kodami Q1, ..., Qr , to funkcje Q’1, ..., Q’r, są niezależne od pozostałych (k – r) zmiennych.
Przykład 1- interpretacja w.p. Kodowanie wg 1 Nie wystarcza to do zakodowania 1• = (0) Warunek jednoznaczności kodowania!
a co z pozostałymi? Nie musimy obliczać funkcji wzbudzeń, aby stwierdzić, że pierwsza z nich, czyli D1 będzie… Przykład 1… Co to znaczy, że zastosujemy kodowanie wg podziału zamkniętego: Q1’ = D1 = f(x,Q1) Niestety tylko jedną zmienną zakodowaliśmy wg podziału zamkniętego, zatem: Q2’ = D2 = f(x,Q1,Q2,Q3) Q3’ = D3 = f(x,Q1,Q2,Q3)
Przykład 1… A może jest więcej podziałów zamkniętych: Później wykażemy, że oprócz 1 jest 2 Kodowanie wg 1 2 Jest to kodowanie jednoznaczne
PRZYKŁAD 1 c.d. Przy tak dobranym kodowaniu pierwsza funkcja wzbudzeń Q1’tego automatu będzie zależna od jednej zmiennej wewnętrznej, a druga i trzecia łącznie (Q2’, Q3’) od dwóch zmiennych wewnętrznych, czyli Q1’ = f(x,Q1) Q2’ = f(x,Q2,Q3) Q3’ = f(x,Q2,Q3) Jeśli wyjdzie inaczej – TŁ stawia Kto nie wierzy, niech zakoduje, obliczy funkcje Q1’, Q2’, Q3’ i sprawdzi. Dla całego roku!
A,B B,D A,C A,E C,F E,F C,D A,D A,F Obliczanie podziału zamkniętego Tworzymy graf par następników dla różnych wierzchołków początkowych E F A,B A,C A,D
Do zakodowania stanów automatu M potrzebne są 3 podziały 2-blokowe, takie że: PRZYKŁAD 2 Generujemy podziały zamknięte
G,H C,D G,E A,C A,B F,H E,F B,D PRZYKŁAD 2 c.d. Graf par następników :
PRZYKŁAD 2 c.d. A,D D,H + =2 B,F
PRZYKŁAD 2 c.d. Niestety: Potrzebny jest więc jeszcze jeden podział :
PRZYKŁAD 2 c.d. t Kodowanie wg 1 2
PRZYKŁAD 2 c.d. Przy tak dobranym kodowaniu dwie funkcje wzbudzeń Q1’i Q2’ tego automatu będą zależne od jednej zmiennej wewnętrznej, a trzecia Q3’ (w najgorszym przypadku) od trzech zmiennych, czyli Q1’ = f(x,Q1) Q2’ = f(x,Q2) Q3’ = f(x,Q1,Q2,Q3) Warto zakodować, obliczyć funkcje wzbudzeń Q1’, Q2’, Q3’ i sprawdzić, czy rzeczywiście tak jest.
Komentarz Każde inne kodowanie doprowadzi do bardziej skomplikowanych funkcji wzbudzeń. Każde inne kodowanie doprowadzi do bardziej skomplikowanych funkcji wzbudzeń. W szczególności dla kodowania wg naturalnego kodu binarnego1): Q1’ = f(x,Q1) Q2’ = f(x,Q1,Q2,Q3) Q3’ = f(x,Q1,Q2,Q3) • 1) Naturalny kod binarny jest przyjmowany domyślnie do kodowania automatów w komercyjnych systemach projektowania układów cyfrowych
Nie martwmy się… W najnowszych systemach istnieje opcjonalna możliwość wprowadzenia kodowania obliczonego zewnętrznie przez użytkownika