狀態機重新優化業務流程

2021-01-07 空明行者

有限狀態機(FSM:finite-state machine )或有限狀態機(FSA:finite-state automaton)、有限自動機或簡單的狀態機是計算的數學模型。它是一個抽象的機器,在任何給定的時間內都可以處於有限個狀態中的一個。FSM可以根據一些外部輸入從一個狀態更改為另一個狀態;從一個狀態更改為另一個狀態稱為轉換。FSM由其狀態列表、初始狀態和每個轉換的條件定義。有限狀態機有兩種類型——確定性有限狀態機和非確定性有限狀態機。確定性有限狀態機可以構造為任何非確定性狀態機。

現代社會的許多裝置都可以觀察到狀態機的行為,這些裝置根據一系列事件來執行預定的動作序列。簡單的例子是自動售貨機,當硬幣的正確組合存放時,自動售貨機分配產品;電梯,其停止順序由乘客要求的樓層決定;交通燈,當汽車等待時改變順序;組合鎖,需要按正確的順序輸入組合號。

有限狀態機的計算能力比其他一些計算模型(如圖靈機)要小,計算能力的區別意味著圖靈機可以完成但FSM不能完成的計算任務。這是因為FSM的內存受其狀態數的限制。FSMS是在更一般的自動機理論領域進行研究的。

緣起

一個可以用狀態機模擬的簡單機械裝置的例子是旋轉柵門。旋轉柵門用於控制地鐵和遊樂園遊樂設施的進出,它是一個在腰部高度有三個旋轉臂的門,一個在入口通道上。最初被鎖住,堵住入口,防止顧客通過。把硬幣或代幣放在旋轉柵門上的一個槽中,就能打開門把手,讓一個顧客可以通過。客戶通過後,手臂再次鎖定,直到插入另一枚硬幣。

作為狀態機,旋轉柵門有兩種可能的狀態:鎖定和解鎖。有兩種可能的輸入影響其狀態:將硬幣放入槽(硬幣)和推動臂(推動)。在鎖定狀態下,推動臂沒有任何作用;無論給多少次輸入推動,它都保持鎖定狀態。把硬幣放進去——也就是給機器一個硬幣輸入——將狀態從鎖定轉換為解鎖。在解鎖狀態下,放入額外的硬幣沒有效果;即,提供額外的硬幣輸入不會改變狀態。但是,客戶通過手臂推動,提供推動輸入,將狀態切換回鎖定狀態。

轉門狀態機可以用狀態轉換表表示,顯示每個可能的狀態、它們之間的轉換(基於給機器的輸入)和每個輸入產生的輸出:

轉門狀態機也可以用一個稱為狀態圖的有向圖來表示。每個狀態都由一個節點(圓)表示。邊(箭頭)顯示從一種狀態到另一種狀態的轉換。每個箭頭都標有觸發轉換的輸入。不引起狀態變化的輸入(如處於解鎖狀態的硬幣輸入)由返回原始狀態的圓形箭頭表示。從黑點進入鎖定節點的箭頭表示它是初始狀態。

概念和術語

狀態是對正在等待執行轉換的系統狀態的描述。轉換是在滿足條件或接收到事件時要執行的一組操作。例如,當使用音頻系統收聽收音機時(系統處於「收音機」狀態),接收到「下一個」刺激會導致移動到下一個電臺。當系統處於「cd」狀態時,「next」刺激會導致移動到下一個軌道。相同的刺激根據當前狀態觸發不同的動作。

在某些有限狀態機表示中,也可以將動作與狀態關聯:

進入動作:進入狀態時執行。退出操作:退出狀態時執行。表示

狀態圖是計算機科學和相關領域用來描述系統行為的一種圖。狀態圖要求所描述的系統由有限數量的狀態組成;有時確實如此,而有時這是一個合理的抽象。存在多種形式的狀態圖,它們略有不同,語義也有所不同。

狀態/事件表

使用了幾種狀態轉換表類型。最常見的表示形式如下:當前狀態(例如B)和輸入(例如Y)的組合顯示下一個狀態(例如C)。完整操作的信息沒有直接在表中描述,只能使用腳註添加。包含完整動作信息的FSM定義可以使用狀態表(另請參見虛擬有限狀態機)。

UML狀態機

統一建模語言有一個描述狀態機的符號。UML狀態機克服了傳統有限狀態機的局限性,同時保留了它們的主要優點。UML狀態機引入了層次嵌套狀態和正交區域的新概念,同時擴展了操作的概念。UML狀態機具有Mealy機器和Moore機器的特性。它們支持依賴於系統狀態和觸發事件的操作,如在Mealy機器中,以及與狀態而非轉換相關的進入和退出操作,如在Moore機器中。

SDL狀態機

規範和描述語言是ITU的一個標準,其中包括描述轉換中動作的圖形符號:

發送事件接收一個事件啟動計時器取消計時器啟動另一個並發狀態機決策SDL嵌入稱為「抽象數據類型」的基本數據類型、操作語言和執行語義,以便使有限狀態機可執行。

用法

除了在這裡介紹的系統建模中的應用之外,有限狀態機在許多不同的領域中都具有重要意義,包括電氣工程、語言學、計算機科學、哲學、生物學、數學和邏輯。有限狀態機是在自動機理論和計算理論中研究的一類自動機。在計算機科學中,有限狀態機廣泛應用於應用行為建模、硬體數字系統設計、軟體工程、編譯器、網絡協議以及計算和語言研究。

分類

有限狀態機可以細分為傳感器、接收器、分類器和序列器。

接受者(識別者)

接收器(也稱為識別器和序列檢測器)產生二進位輸出,指示是否接受接收的輸入。FSM的每個狀態要麼是「接受」,要麼是「不接受」。收到所有輸入後,如果當前狀態為接受狀態,則接受輸入;否則拒絕輸入。通常,輸入是一系列符號(字符);不使用動作。

一組(可能是無限的)符號序列,又名。形式語言,如果有某個有限狀態機恰好接受該集合,則稱為常規語言。例如,偶數為零的二進位字符串集是一種常規語言,而長度為質數的所有字符串集不是。

機器也可以被描述為定義一種語言,該語言包含機器接受的每個字符串,但不包含被拒絕的字符串;該語言被機器「接受」。根據定義,FSM接受的語言是常規語言——如果有一些FSM接受,那麼語言就是常規語言。

確定給定的有限狀態接受者所接受的語言的問題是代數路徑問題本身的一個實例,它將最短路徑問題推廣到具有由(任意)半環元素加權的邊的圖上。

開始狀態也可以是接受狀態,在這種情況下,自動機接受空字符串。

分類器

分類器是有限狀態機的一種推廣,它類似於接受者,在終止時生成單個輸出,但有兩個以上的終止狀態。

換能器

傳感器根據給定的輸入或使用動作的狀態生成輸出。它們用於控制應用和計算語言學領域。

在控制應用程式中,可區分兩種類型:

摩爾機

FSM僅使用入口操作,即輸出僅取決於狀態。摩爾模型的優點是簡化了行為。考慮一個電梯門。狀態機識別兩個命令:「命令打開」和「命令關閉」,觸發狀態更改。進入動作(E:)在「打開」狀態下啟動電機打開車門,在「關閉」狀態下啟動電機在另一方向關閉門。狀態「打開」和「關閉」在完全打開或關閉時停止電機。它們向外部世界(例如,向其他電梯)發出「門是開的」或「門是關的」的信號。

梅利機

FSM還使用輸入動作,即輸出取決於輸入和狀態。使用有限的FSM通常會導致狀態數量的減少。示例顯示了一個實施與摩爾示例中相同行為的簡單FSM(該行為取決於實施的FSM執行模型,並且將起作用,例如,對於虛擬FSM,但對於事件驅動的FSM不起作用)。有兩個輸入動作(i:):「如果命令關閉到達,啟動電機關閉車門」和「如果命令打開到達,啟動電機向另一個方向打開車門」。未顯示「打開」和「關閉」中間狀態。

序列器

序列器或發生器是具有單個字母輸入字母表的接受器和傳感器類型的一個子類。它們只產生一個序列,可以看作是接受器或傳感器輸出的輸出序列。

決定論

另一個區別是確定性(dfa)和非確定性(nfa,gnfa)自動機。在確定性自動機中,每個狀態對於每個可能的輸入只有一個轉換。在非確定性自動機中,輸入可以導致給定狀態的一個、多個或沒有轉換。Powerset構造算法可以將任何非確定性自動機轉換為具有相同功能的(通常更複雜)確定性自動機。

只有一種狀態的有限狀態機稱為「組合FSM」。它只允許在轉換到狀態時執行操作。這個概念在需要許多有限狀態機一起工作的情況下是有用的,並且當把一個純粹的組合部分看作一種適合設計工具的FSM形式時也是很方便的。

替代語義學

還有其他一些語義可以用來表示狀態機。例如,有一些用於為嵌入式控制器建模和設計邏輯的工具。它們將分層狀態機(通常具有多個當前狀態)、流程圖和真值表組合成一種語言,從而形成不同的形式主義和語義集。這些圖,如Harel的原始狀態機[12]支持層次嵌套狀態、正交區域、狀態操作和轉換操作。

優化

優化一個FSM意味著找到一個具有執行相同功能的最小狀態數的機器。最快的已知算法是Hopcroft最小化算法其他技術包括使用蘊涵表或摩爾約簡過程。此外,非循環FSA可以在線性時間內最小化。

實施

硬體應用

在數字電路中,可以使用可編程邏輯器件、可編程邏輯控制器、邏輯門和觸發器或繼電器來構建FSM。更具體地說,硬體實現需要一個寄存器來存儲狀態變量,一個確定狀態轉換的組合邏輯塊,以及第二個確定FSM輸出的組合邏輯塊。典型的硬體實現之一是理查茲控制器。

在Medvedev機器中,輸出直接連接到狀態觸發器,以最小化觸發器和輸出之間的時間延遲。

對於低功耗狀態機,可以通過狀態編碼進行優化,以最小化功耗。

軟體應用程式

以下概念通常用於使用有限狀態機構建軟體應用程式:

基於自動機的程序設計事件驅動有限狀態機虛擬有限狀態機狀態設計模式有限狀態機和編譯器

有限自動機常用於程式語言編譯器的前端。這樣的前端可能包含幾個有限狀態機,它們實現詞彙分析器和語法分析器。從一系列字符開始,詞彙分析器構建一系列語言標記(如保留字、文本和標識符),解析器從中構建語法樹。詞彙分析器和解析器處理程式語言語法的常規部分和上下文無關部分。

相關焦點

  • 運用狀態機提高嵌入式軟體效率
    在進行嵌入式軟體設計時,通常的做法是按照信息流程進行順序編程。例如對串行數據的處理,一般是等待接收數據,分析數據,進行數據處理,然後發送處理結果。使用這種軟體設計方法,最突出的一點就是在任務的處理過程中,任務基本上獨佔了MCU的資源,即在處理串口數據的過程中,不會再去處理其他消息(中斷除外)。採用這種方式,MCU會在相當長的一段時間內只處理一個任務。
  • 單片機之狀態機淺談
    說到單片機編程,不得不說到狀態機,狀態機做為軟體編程的主要架構已經在各種語言中應用,當然包括C語言,在一個思路清晰而且高效的程序中,必然有狀態機的身影浮現。靈活的應用狀態機不僅是程序更高效,而且可讀性和擴展性也很好。狀態無處不在,狀態中有狀態,只要掌握了這種思維,讓它成為您編程中的一種習慣,相信您會受益匪淺。
  • 硬體描述語言Verilog HDL設計進階之: 典型實例-狀態機應用
    4.6.2實例詳解本實例的具體步驟可參見2.6節,在此不再詳述,僅給出主要的操作流程以及狀態機的設計輸入方法。(1)啟動ISE軟體。(2)創建新工程。(3)編寫狀態機Verilog代碼。狀態機的代碼可以直接進行手動編寫,如圖4.2所示。
  • LabVIEW設計模型——狀態機
    狀態機是在工程應用中使用最多的設計模型。使用狀態機,我們可以很容易的實現程序流程圖中的判斷、分支。 狀態機是由一系列的狀態構成的,其中包括一個「初始化」狀態,和一個「停止」狀態。
  • 如何繪畫狀態機來描述業務的變化
    然後我們不得不新增了一個中間狀態「已確認」,讓客服審核無誤後,再傳給網倉走發貨流程。再後來我們發現除了主業務-下單購物之外,還需要兼顧支線業務-退款退貨,此時不得不需要引入「退款中」狀態並且增加退款子狀態機、退貨子狀態機。以上這些我最開始是用文字描述,然後加上憑感覺畫的流程圖來表示,服務端RD很難理解,並且無法清楚所有狀態以及轉移條件,不得不多次反覆確認。
  • 由淺入深,讓你全面了解狀態機模式的應用原理
    ,而且例子也不夠完整,所以,本文也會基於它提供的例子,比如hello world、秒表、數位相機,重新梳理總結它的應用方式,至於高級議題,可能需要再花時間進行研究。一、狀態機基本知識一般狀態機由三個元素組成:狀態、事件、反應。而反應在boost startchart包括轉移、動作等。一個狀態可以對應一個或者多個反應。當前狀態收到事件後,執行反應,然後轉變為新的狀態。該流程會使用下圖的方式來表示。狀態機通常都需要有歷史狀態,可以用來恢復,它分為淺歷史和深歷史兩類。
  • 攜手思愛普(SAP),巨鯊醫療優化業務管理,開創業務藍圖
    會議由巨鯊醫療黨總支書記、HR 總監卜凡林女士主持,雙方圍繞項目歷程、平臺搭建、業務優化及未來合作等維度,展開了友好的討論和交流,共同期盼新的業務藍圖和市場前景。會議上巨鯊醫療董事長王衛先生表示:「巨鯊醫療一直致力醫療行業創新技術應用和場景化解決方案,期望運用先進的科技手段,為醫務工作者提供更多的技術便利。
  • 電動汽車動力總成解讀|狀態機
    導語:狀態機,代表了電驅動系統運行的不同狀態或者工作模式,電驅動系統控制器(Inverter)與整車控制器(VCU)狀態機的匹配就好比找對象,既要性格、三觀相匹配,也要有相似的生活方式和行為邏輯。文本從電驅動系統的多種工作模式角度,對電動汽車點火啟動、運轉、熄火停車背後的故事做了簡要介紹。本文分為以下三部分展開:1. 什麼是狀態機?2.
  • 機器人流程自動化(RPA)和業務流程管理(BPM)如何結合在一起?
    如今業務流程管理(BPM)日益成熟,而機器人流程自動化(RPA)則成為技術新寵。而組織將BPM和RPA整合到其自動化策略中可以解決多個問題。BPM和RPA有一個明顯的共同點:字母「P」在兩個縮略詞中都代表「Process」(流程)。BPM推出的時間早於RPA。
  • 企業業務流程推行過程反思
    企業業務流程概念起源於企業追求精益管理階段、追求加加快市場響應速度的大環境背景下,是建立在企業管理體系成熟的基礎上。但是很多企業在實施推行過程中會出現問題,總結如下幾點:1、忽略了人的因素沒有認識到企業流程的設計、搭建和實施任何一個環節都離不開員工的積極參與。
  • 不懂狀態機怎麼能讀懂中間件的LifeCycle?
    要搞清楚LifeCycle模式首先需要能看懂狀態機。事實上,狀態機就是當滿足某種條件時,改變為指定狀態,也是很好理解的。這裡,我假設有如下的狀態機視圖上圖中,我假設是一個組件的狀態機圖。當組件啟動時,首先進入WAITING狀態,如果發送完成SYN包,則進入SYN_SEND狀態;如果調用了setStoped()方法,則改變為STOPED狀態。
  • 如何在FPGA中實現狀態機
    對於設計人員來說,滿足這些行動和序列要求的最佳方法則是使用狀態機。狀 態機是在數量有限的狀態之間進行轉換的邏輯結構。一個狀態機在某個特定的時間點只處於一種狀態。但在一系列觸發器的觸發下,將在不同狀態間進行轉換。本文引用地址:http://www.eepw.com.cn/article/266770.htm  理論上講,狀態機可以分為Moore狀態機和Mealy狀態機兩大類。
  • 基於UART以狀態機的形式實現LIN通信
    LIN協議分析和狀態機的設計有限狀態機是由一組狀態、一個起始狀態、輸入以及將輸入與當前狀態轉換為下一個狀態的轉換函數所組成,它是一個特殊的有向圖,包括一些狀態節點和連接這些狀態的有向弧。對特定的狀態機而言,首先要建立一些有效的狀態,然後設計相應的算法完成狀態的轉換。
  • 零基礎學FPGA(七)淺談狀態機
    今天我們來寫狀態機。本文引用地址:http://www.eepw.com.cn/article/267960.htm  關於狀態機呢,想必大家應該都接觸過,通俗的講就是數電裡我們學的狀態轉換圖。
  • B端產品設計3大流程業務流程圖、功能流程圖、頁面流程圖
    因此,產品經理在正式開始產品設計前必須先梳理業務流程,並與業務人員共同診斷業務問題、優化業務流程、確定系統範圍。對業務問題的診斷主要通過業務調研的方式進行,業務流程圖就是我們業務調研的結論。WHAT:什麼是業務流程圖業務流程圖是一種描述管理系統內各單位、人員之間的業務關係、作業順序和管理信息流向的圖表。它用一些規定的符號及連線表示某個具體業務的處理過程,幫助分析人員找出業務流程中的不合理流向。業務流程圖描述的是完整的業務流程,以業務處理過程為中心,一般沒有數據的概念。3.
  • 如何設計一個穩定可靠的狀態機
    隨著大規模和超大規模FPGA/CPLD器件的誕生和發展,以HDL(硬體描述語言)為工具、FPGA/CPLD器件為載體的EDA技術的應用越來越廣泛.從小型電子系統到大規模SOC(Systemonachip)設計,已經無處不在.在FPGA/CPLD設計中,狀態機是最典型、應用最廣泛的時序電路模塊,如何設計一個穩定可靠的狀態機是我們必須面對的問題.
  • 看華為人如何實踐流程變革:流程變革如何更好支撐業務穩健成長?
    流程的本質是什麼?流程為誰而變?管理者該如何從業務中萃取流程DNA? 局部流程優化該從何入手?流程該何時變革? 廣為大家熟知或道聽途說的IPD項目背後,優秀的華為質量經理人究竟如何所思所想?做對了什麼?流程制度建設是如何強有了的支撐華為持續業績增長的?
  • K12教育:AI業務流程拆解分析
    本文作者是一名在校教育的從業人員,他從自身工作經歷出發,拆解AI課程的整套獲客業務流程,希望對你有幫助。前端時間寫了一個K12-1對1業務流程涉及各類B端產品分析,最近工作需要,進行了AI業務整體的社群業務流程體驗,所以寫個AI業務流程產品分析。
  • 5W2H,幫助你梳理B端產品業務流程
    本文作者根據自身經驗總結了個人的業務流程設計方法分享給大家做參考,主要面向剛步入這個領域的產品經理。enjoy~在產品設計的過程中,不可避免的會涉及到產品的業務流程的設計,業務流程往往是多用戶、多角色、甚至是多企業協作最終完成最終目標。