我的转换函数是否正确(字符串与有限自动机匹配)
Is my transition function correct (String matching with finite automata)
我正在从 CLRS 学习与有限自动机匹配的字符串。我正在解决一些练习题。对于练习题 32.3-1,
Construct the string-matching automaton for the pattern P = aabab and illustrate
its operation on the text string 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 是你的 Accepting 状态。只有当您在字符串中找到所需的模式时,您才会达到此状态。一旦找到一个模式,不管字符串是什么都保持在接受状态。因此,对于两个输入 a
和 b
状态 5
仍然在 5
本身。
转换函数是 fa 接受带有子字符串 'aabab' 的字符串。如果要返回状态 1
for a
和 0
for b
,则转换函数接受以子字符串 'aabab[ 结尾的字符串=51=]'。假设只有状态 5 是接受状态。
我正在从 CLRS 学习与有限自动机匹配的字符串。我正在解决一些练习题。对于练习题 32.3-1,
Construct the string-matching automaton for the pattern P = aabab and illustrate its operation on the text string 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 是你的 Accepting 状态。只有当您在字符串中找到所需的模式时,您才会达到此状态。一旦找到一个模式,不管字符串是什么都保持在接受状态。因此,对于两个输入 a
和 b
状态 5
仍然在 5
本身。
转换函数是 fa 接受带有子字符串 'aabab' 的字符串。如果要返回状态 1
for a
和 0
for b
,则转换函数接受以子字符串 'aabab[ 结尾的字符串=51=]'。假设只有状态 5 是接受状态。