2013-02-10 24 views
12

राज्य मशीनों की पारंपरिक परिभाषा का उपयोग करके, क्या मशीन रिकॉर्ड एक ही समय में कई राज्यों में हो सकते हैं? उदाहरण के लिए, यदि मेरे पास User मॉडल है, तो क्या उपयोगकर्ता एक ही समय में subscriber और promotional_period स्थिति में हो सकते हैं?राज्य मशीनें और एकाधिक राज्य

नोट, मैं यह नहीं पूछ रहा हूं कि ऐसा करने के लिए यह समझ में आता है, मेरा सवाल है - क्या यह राज्य मशीनों के साथ संभव है।

उत्तर

5

नहीं। राज्य मशीनों में एक एक समय में राज्य है।

subscriber_and_promotional_period जैसे किसी अन्य राज्य के साथ एक संयोजन स्थिति की जा सकती है। ऐसा करने का यह सामान्य तरीका है।

+0

हालांकि यह कई एफएसएम कार्यान्वयन के मामले में है, यह पूरी कहानी नहीं है, क्योंकि यह गैर-निर्धारिती परिमित ऑटोमाटा के पूरे क्षेत्र की उपेक्षा करता है। अधिक जानकारी के लिए मेरा जवाब देखें। – wjl

+0

लेकिन बहु-राज्य एफएसएम एक-राज्य एफएसएम के बराबर नहीं हैं? –

4

एक दिन के लिए विकिपीडिया Quoth अधिक:

"एक परिमित राज्य मशीन (FSM) या परिमित राज्य automaton (बहुवचन: ऑटोमेटा), या बस एक राज्य मशीन, गणना का एक गणितीय मॉडल के लिए इस्तेमाल किया है कंप्यूटर प्रोग्राम और अनुक्रमिक लॉजिक सर्किट दोनों डिज़ाइन करें। इसे एक सार मशीन के रूप में माना जाता है जो कि राज्यों की सीमित संख्या में से एक में हो सकता है। मशीन एक समय में केवल एक ही राज्य में है; राज्य किसी भी समय में है वर्तमान स्थिति कहा जाता है। "

तो, नहीं।

+0

यह एफएसएम कार्यान्वयन का एक आम मामला है, लेकिन यह पूरी कहानी नहीं है, हालांकि। वही विकिपीडिया लेख से: "एक और भेद निर्धारक (डीएफए) और गैर-निर्धारिती (एनएफए, जीएनएफए) ऑटोमाटा के बीच है। निर्धारक ऑटोमाटा में, प्रत्येक राज्य में प्रत्येक संभावित इनपुट के लिए बिल्कुल एक संक्रमण होता है। गैर-निर्धारक ऑटोमाटा में, इनपुट किसी दिए गए राज्य के लिए एक से अधिक या कोई संक्रमण नहीं हो सकता है। " – wjl

13

"नो" कहने वाले सभी उत्तर केवल सही हैं यदि आप finite state machines (एफएसएम) के "सामान्य" प्रकार को deterministic finite automata (डीएफए) के रूप में जाना जाता है, जो कि किसी भी समय केवल एक सक्रिय स्थिति हो सकता है।

हालांकि, यह एफएसएम का एकमात्र प्रकार नहीं है, और सभी मामलों में इस प्रकार के तंत्र को सीमित करने का कोई अच्छा कारण नहीं है। nondeterministic finite automata (एनएफए) भी हैं, जो एक साथ कई राज्यों में हो सकते हैं।

यह सिर्फ अकादमिक नहीं है, या यहां तक ​​कि वास्तव में पार्सिंग के बारे में भी है (जैसे विकिपीडिया लिंक का अर्थ हो सकता है): एनएफए वास्तव में काफी सरल और अविश्वसनीय रूप से उपयोगी हैं और दोनों हार्डवेयर और सॉफ्टवेयर कार्यान्वयन में जगह पर अभ्यास में उपयोग किए जाते हैं।

असल में, एक एनएफए डिज़ाइन करने के लिए, आप इसे एक डीएफए की तरह करते हैं, लेकिन "वर्तमान स्थिति" रखने के बजाय और "अगले राज्य" की गणना करने के लिए इनपुट का उपयोग करने के बजाय, आपके पास "वर्तमान स्थिति सेट" और उपयोग होता है "अगले राज्य सेट" की गणना करने के लिए इनपुट। हार्डवेयर में (उदाहरण के लिए वीएचडीएल में लागू एफपीजीए) यह सचमुच एक साथ किया जा सकता है। (सिंगल-थ्रेडेड) सॉफ़्टवेयर में, यह आमतौर पर मशीन के प्रत्येक "चरण" में मौजूदा राज्यों के माध्यम से पुनरावृत्ति करके किया जाता है।

+1

हालांकि यह "राज्य मशीनों की पारंपरिक परिभाषा" नहीं है, लेकिन मैं वास्तव में इसे एक बेहतर उत्तर मानता हूं। धन्यवाद। – flybear

0

Petri nets राज्य मशीनों का एक सामान्यीकरण है जो एकाधिक एक साथ 'राज्यों' की अनुमति देता है।

संबंधित मुद्दे