2013-02-10 5 views
12

Korzystając z tradycyjnej definicji maszyn stanów, można rejestrować stan maszyny w wielu stanach w tym samym czasie? Na przykład, jeśli mam model User, czy użytkownicy mogą jednocześnie być w stanie subscriber i promotional_period?maszyny stanów i wiele stanów

Uwaga, nie pytam, czy ma to sens, moje pytanie brzmi - czy jest to możliwe z automatami stanów.

Odpowiedz

5

Nie. Stan maszyny mają stan jeden stan stan na raz.

Stan połączenia można wykonać w innym stanie, na przykład subscriber_and_promotional_period. Jest to zwyczajny sposób na zrobienie tego.

+0

Chociaż tak jest w przypadku wielu implementacji FSM, nie jest to cała historia, ponieważ zaniedbuje całe pole niedeterministycznych automatów skończonych. Zobacz moją odpowiedź, aby uzyskać więcej informacji. – wjl

+0

Ale czy nie są to wielomianowe FSM równoważne z FSM jednego stanu? –

4

rzekła Wikipedii o jeden dzień więcej:

„To automat skończony (FSM) lub automat skończony-state (liczba mnoga: automaty), lub po prostu maszyna stanów, jest matematyczny model obliczeń wykorzystywane do projektuje zarówno programy komputerowe, jak i sekwencyjne układy logiczne, jest pomyślana jako abstrakcyjna maszyna, która może znajdować się w jednym ze skończonej liczby stanów: Maszyna znajduje się tylko w jednym stanie, stan w jakimkolwiek momencie jest stan bieżący: "

Tak, nie.

+0

Jest to typowy przypadek implementacji FSM, ale nie jest to jednak cała historia. Z tego samego artykułu wikipedii: "Dalsze rozróżnienie między automatami deterministycznymi (DFA) i niedeterministycznymi (NFA, GNFA) W automatach deterministycznych każdy stan ma dokładnie jedno przejście dla każdego możliwego wejścia. W automatach niedeterministycznych, dane wejściowe może prowadzić do jednego, więcej niż jednego przejścia lub nie do przejścia dla danego stanu. " – wjl

13

Wszystkie odpowiedzi z napisem "nie" są poprawne tylko wtedy, gdy przyjmuje się typowy typ finite state machines (FSM) znany jako deterministic finite automata (DFA), który może mieć tylko jeden stan aktywny w danym momencie.

Jednak nie jest to jedyny rodzaj FSM i nie ma powodu, aby ograniczać się do tego typu mechanizmu we wszystkich przypadkach. Istnieją również nondeterministic finite automata (NFAs), które mogą znajdować się w dowolnej liczbie stanów jednocześnie.

To nie jest tylko akademickie, a nawet naprawdę o analizie (jak sugerują powiązania wikipedia): NFA są w rzeczywistości bardzo proste i niezwykle użyteczne i są używane w praktyce w całym miejscu zarówno w implementacjach sprzętu, jak i oprogramowania.

Zasadniczo, aby zaprojektować NFA, robisz to tak jak DFA, ale zamiast mieć "aktualny stan" i używając danych wejściowych do obliczenia "następnego stanu", masz "aktualny zestaw stanów" i używasz wejścia do obliczania "następnego zestawu stanów". W sprzęcie (na przykład FPGA zaimplementowanym w VHDL) można to zrobić dosłownie jednocześnie. W oprogramowaniu (jednowątkowym) zwykle odbywa się to po prostu poprzez powtarzanie stanów w każdym "kroku" urządzenia.

+1

Chociaż nie jest to "tradycyjna definicja automatów państwowych", uważam to za lepszą odpowiedź. Dziękuję Ci. – flybear

0

Petri nets to uogólnienie automatów stanów, które pozwalają na wiele jednoczesnych "stanów".