Maszyna stanów


Automat skończony w encyklopedii

Z Wikipedii, wolnej encyklopedii (Przekierowano z Maszyna stanów) Przejdź do nawigacji Przejdź do wyszukiwania Przykład automatu skończonego

Automat skończony (ang. finite state machine, FSM) – abstrakcyjny, matematyczny, iteracyjny model obliczeń w teorii automatów oparty na tablicy dyskretnych przejść między jego kolejnymi stanami, do opisu których służy diagram stanów.

Ze względu na charakter przejść między stanami, wyróżnia się deterministyczne i niedeterministyczne automaty skończone. Maszyna Turinga jest generalizacją automatu skończonego operującą na nieskończonej pamięci.

Automaty skończone są wykorzystywane w tworzeniu systemów komputerowych i opisie układów dynamicznych. Zachowania automatów skończonych można zaobserwować w wielu urządzeniach współczesnego społeczeństwa, które wykonują z góry ustaloną sekwencję działań w zależności od sekwencji zdarzeń, z którymi są prezentowane. Najprostszymi przykładami są automaty sprzedające produkty po zdeponowaniu odpowiedniej kombinacji monet, windy, których kolejność postojów jest określona przez podłogi żądane przez pasażerów, sygnalizacja świetlna, która zmienia sekwencję, gdy czekają samochody, oraz zamki szyfrowe, które wymagają wprowadzanie sekwencji liczb we właściwej kolejności.

Spis treści

Przykład automatu skończonego | edytuj kod

Na ilustracji przedstawiono prosty automat skończony mogący przyjąć jeden z dwóch stanów – S 1 {\displaystyle S_{1}} lub S 2 . {\displaystyle S_{2}.} Automat zaczyna pracę od stanu S 1 {\displaystyle S_{1}} i zachowuje się w sposób stabilny (nie zmienia stanu) tak długo, jak długo na wejściu otrzymuje liczby 1. {\displaystyle 1.} Każde napotkane na wejściu 0 zmienia stan układu na przeciwny. Proces ten można przedstawić również za pomocą listy przejść

stan startowy – S 1 {\displaystyle S_{1}} S 1 1 S 1 {\displaystyle S_{1}\to ^{1}S_{1}} S 1 0 S 2 {\displaystyle S_{1}\to ^{0}S_{2}} S 2 1 S 2 {\displaystyle S_{2}\to ^{1}S_{2}} S 2 0 S 1 , {\displaystyle S_{2}\to ^{0}S_{1},}

jak i tabeli

Za pomocą tego automatu możemy badać czy liczność zer w danym ciągu jest parzysta czy też nie. Gdy na wejściu pojawi się nieparzysta liczba zer automat przyjmie stan S 2 . {\displaystyle S_{2}.} W każdym innym wypadku automat przyjmie stan S 1 . {\displaystyle S_{1}.}

Przykład wykonania dla ciągu wejściowego 0011010:

Automat zakończył pracę w stanie S 1 , {\displaystyle S_{1},} co oznacza parzystą liczbę 0 w ciągu wejściowym.

Przykład 2 | edytuj kod

Automat badający podzielność liczby wejściowej przez 3

Przedstawiony jako ilustracja we wstępie do artykułu automat jest w stanie badać podzielność liczby wejściowej przez 3. {\displaystyle 3.} Automat zaczyna pracę od stanu S 0 , {\displaystyle S_{0},} i po przeczytaniu każdej cyfry przechodzi do stanu S j {\displaystyle S_{j}} (gdzie: j = 0 , 1 , 2 {\displaystyle j=0,1,2} )

stan startowy – S 0 {\displaystyle S_{0}} S 0 0 S 0 {\displaystyle S_{0}\to ^{0}S_{0}} S 0 1 S 1 {\displaystyle S_{0}\to ^{1}S_{1}} S 1 0 S 2 {\displaystyle S_{1}\to ^{0}S_{2}} S 1 1 S 0 {\displaystyle S_{1}\to ^{1}S_{0}} S 2 0 S 1 {\displaystyle S_{2}\to ^{0}S_{1}} S 2 1 S 2 . {\displaystyle S_{2}\to ^{1}S_{2}.}

Proces ten można także zapisać w postaci tabeli:

Przykład 3 | edytuj kod

Automat badający podzielność liczby wejściowej przez 4

Na ilustracji po prawej stronie przedstawiono prosty automat skończony badający podzielność liczby wejściowej przez 4. {\displaystyle 4.} Automat zaczyna pracę od stanu S 0 , {\displaystyle S_{0},} i po przeczytaniu każdej cyfry przechodzi do stanu S j {\displaystyle S_{j}} (gdzie: j = 0 , 1 , 2 {\displaystyle j=0,1,2} )

stan startowy – S 0 {\displaystyle S_{0}} S 0 0 S 0 {\displaystyle S_{0}\to ^{0}S_{0}} S 0 1 S 1 {\displaystyle S_{0}\to ^{1}S_{1}} S 1 0 S 2 {\displaystyle S_{1}\to ^{0}S_{2}} S 1 1 S 1 {\displaystyle S_{1}\to ^{1}S_{1}} S 2 0 S 0 {\displaystyle S_{2}\to ^{0}S_{0}} S 2 1 S 1 . {\displaystyle S_{2}\to ^{1}S_{1}.}

Proces ten można także zapisać w postaci tabeli:

Zobacz też | edytuj kod

Na podstawie artykułu: "Maszyna stanów" pochodzącego z Wikipedii
OryginałEdytujHistoria i autorzy