2011-11-17 53 views
1

我堅持認爲有以下問題的狀態機操作:有限狀態機與依靠國家先於當前

State 1 ----transition 1---> State 2----transition 2---> State 3 

State 4 ----transition 4---> State 2----transition 2---> State 3 

過渡1與動作1.過渡4相關的關聯採取行動4.然而,在設計整個機器之後,我意識到轉換2可能與動作2或動作3有關,取決於狀態2之前的狀態是狀態1還是狀態4,因此是動作1還是動作4被執行。

我嘗試了一個不同的設計,但無法做到這一點。這也不是推式自動機。我該怎麼做才能弄清楚這個問題

+0

有可能爲您的問題添加圖片,無論是從網絡還是從您的計算機。我認爲.jpg可以在這裏幫助... – woliveirajr

+0

謝謝。我將不得不掃描添加圖像。我會在週末嘗試這個 – doon

+0

你的狀態機無效。沒有初始狀態,並且state4永遠不能到達。在狀態機中,只有當前狀態和先前狀態可以影響動作,而不是以前的狀態(除非將之前的狀態保存在堆棧中,但您已經說過這不是PDA)。 – Jon

回答

3

在我看來,你所說的是狀態2實際上可能處於兩種狀態之一,或者是狀態1或狀態4之前。對我說它應該實際上由兩個狀態表示,儘管兩者都可以進入狀態3.因此,狀態1→狀態2→狀態3,狀態4→新狀態5→狀態3。

你有什麼理由不能這樣做嗎?

+0

感謝您的回覆。就行爲而言,狀態2與狀態5完全相同。我不得不說狀態2是x_with_prev_state_as_state_1,狀態5是state_x_with_prev_state_as_state_4。這是各州之間唯一的區別。我認爲如果我必須做出這樣的區分,那麼在某個地方肯定會出現問題。我將嘗試拿出一個具體的例子,而不用討論系統的可怕細節。與此同時,我更多地考慮了下推自動機,並且似乎如果在堆棧中推下前一個狀態,那麼這個系統就會建模。可以嗎 – doon

+0

我在說的是,如果以前的狀態很重要,那就表明它處於不同的狀態,這取決於它來自哪裏。狀態機的想法是,所有相關信息都包含在當前狀態中,而不需要像前任那樣的附加信息。要說兩個狀態是相同的,但不管X是什麼,它們是不同的狀態。 – Derek

+0

@doon:我認爲這是正確的做法。但是,您可以在兩個州之間共享實施。讓兩個狀態函數調用相同的底層代碼。 –