logo

Mooreův stroj

Mooreův stroj je konečný stavový stroj, ve kterém o dalším stavu rozhoduje aktuální stav a aktuální vstupní symbol. Výstupní symbol v daném čase závisí pouze na aktuálním stavu stroje. Mooreův stroj lze popsat 6 n-ticemi (Q, q0, ∑, O, δ, λ), kde,

 Q: finite set of states q0: initial state of machine ∑: finite set of input symbols O: output alphabet δ: transition function where Q × ∑ → Q λ: output function where Q → O 

Příklad 1:

Stavový diagram pro Moore Machine je

Mooreův stroj

Přechodová tabulka pro stroj Moore je:

arraylist a linkedlist
Mooreův stroj

Ve výše uvedeném Mooreově stroji je výstup reprezentován každým stavem vstupu odděleným /. Výstupní délka pro Mooreův stroj je větší než vstupní o 1.

Vstup: 010

Přechod: δ (q0,0) => δ(q1,1) => δ(q1,0) => q2

Výstup: 1110(1 pro q0, 1 pro q1, znovu 1 pro q1, 0 pro q2)

Příklad 2:

Navrhněte Mooreův stroj tak, aby generoval doplněk 1 daného binárního čísla.

Řešení: Pro generování doplňku 1 daného binárního čísla je jednoduchá logika taková, že pokud je vstup 0, pak výstup bude 1 a pokud je vstup 1, pak výstup bude 0. To znamená, že existují tři stavy. Jeden stav je počáteční stav. Druhý stav je pro přijímání 0 jako vstupu a vytváří výstup jako 1. Třetí stav je pro přijímání 1 jako vstupu a vytváření výstupu jako 0.

Mooreův stroj tedy bude,

Mooreův stroj

Například vezměte jedno binární číslo 1011

Vstup 1 0 1 1
Stát q0 q2 q1 q2 q2
Výstup 0 0 1 0 0

Dostaneme tedy 00100 jako doplněk 1 1011, počáteční 0 můžeme zanedbat a výstup, který dostaneme, je 0100, což je doplněk 1 1011. Tabulka transakcí je následující:

Mooreův stroj

Tedy Mooreův stroj M = (Q, q0, ∑, O, δ, λ); kde Q = {q0, q1, q2}, ∑ = {0, 1}, O = {0, 1}. přechodová tabulka ukazuje funkce δ a λ.

Příklad 3:

Navrhněte Mooreův stroj pro binární vstupní sekvenci tak, že pokud má podřetězec 101, výstup stroje A, pokud má vstup podřetězec 110, výstup B, jinak výstup C.

firma vs

Řešení: Pro návrh takového stroje zaškrtneme dvě podmínky, a to 101 a 110. Pokud dostaneme 101, výstup bude A, a pokud rozpoznáme 110, výstup bude B. Pro ostatní řetězce bude výstup C.

Částečný diagram bude:

Mooreův stroj

Nyní vložíme možnosti 0 a 1 pro každý stav. Mooreův stroj se tak stává:

Mooreův stroj

Příklad 4:

Sestrojte Mooreův stroj, který určí, zda vstupní řetězec obsahuje sudý nebo lichý počet jedniček. Stroj by měl dát jako výstup 1, pokud je v řetězci sudý počet jedniček a v opačném případě 0.

Řešení:

příkaz java switch

Stroj Moore bude:

Mooreův stroj

Toto je požadovaný stroj Moore. V tomto stroji stav q1 přijímá lichý počet jedniček a stav q0 přijímá sudý počet jedniček. Počet nul není nijak omezen. Pro vstup 0 lze tedy použít vlastní smyčku na oba stavy.

Příklad 5:

Navrhněte Mooreův stroj se vstupní abecedou {0, 1} a výstupní abecedou {Y, N}, která produkuje Y jako výstup, pokud vstupní sekvence obsahuje 1010 jako podřetězec, jinak produkuje N jako výstup.

Řešení:

Stroj Moore bude:

Mooreův stroj