[英]Is my transition function correct (String matching with finite automata)
我正在從CLRS學習具有有限自動機的字符串匹配。 我正在解決一些運動問題。對於運動問題32.3-1,
構造模式P = aabab的字符串匹配自動機,並說明其在文本字符串T = aaababaabaababaab上的操作。
以下是我的轉換函數,
states a b
0 1 0
1 2 0
2 2 3
3 4 3
4 4 5
5 ? ?
我的轉換函數正確嗎? 那我怎么填最后一行呢? 任何幫助
我假設您正在創建一個有限自動機,該自動機接受包含模式aabab
的字符串。
有限自動機有兩個錯誤,
在狀態3
和狀態4,
對於狀態3
,如果輸入為b
,則必須返回狀態0
。 例如, aabb
模式將迫使您返回狀態0
。 在這里,您必須從狀態0
重新開始。
對於狀態4
,如果輸入為a
,則必須返回狀態2
因為您具有模式aa
。 例如,模式aabaa
將迫使您返回狀態2
。
修正后的有限自動機如下所示,
states a b
0 1 0
1 2 0
2 2 3
3 4 0
4 2 5
5 5 5
這里5是您的接受狀態。 僅當在字符串中找到所需的模式時,您才會達到此狀態。 一旦找到模式,無論什么字符串保持接受狀態。 因此,對於狀態5
輸入a
和b
,狀態5
本身都保持不變。
過渡函數是fa接受帶有子字符串“ aabab ”的字符串的函數 。 如果你想回到狀態1
的a
和0
為b
,那么轉換函數接受與子串“aabab的 ”結尾的字符串。 假定只有狀態5是接受狀態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.