有限自动状态机
大多数介绍有限自动状态机的帖子都是写了原理,那这个原理怎么落地呢。我弄了一个简单易于理解的示例写一下。
有限自动机有3个部分:
1,当前状态,
2,当前输入,
3,当前状态对应的当前输入,所应该执行的操作。
其中,3会产生一个新的状态1。对应一个新的输入2。
从而实现循环
举例:
一个状态:[x,y]。 初始状态为 [1,0]
对应的输入:A,B
A对应的操作:产生新的状态 [2 * x + y,y ]
B对应的操作:产生新的状态 [x, 2 * y + x]
图示如下:
| - | 输入A | u输入B |
|---|---|---|
| 状态 : [x,y] | 操作:[2 * x + y,y ] | [x, 2 * y + x] |
代码实现
class Solution {
// 状态,输入,产生对应的新状态
public int[] changeStatus(int[] status, char order){
int x = status[0];
int y = status[1];
if (order=='A'){
status[0] = 2 * x + y;
} else if (order=='B'){
status[1] = 2 * y + x;
}
return status;
}
// 循环获得最终结果
public int calculate(String s) {
int[] status = new int[]{1,0};
for (int i=0;i<s.length();i++){
status = this.changeStatus(status, s.charAt(i));
}
return status[0]+status[1];
}
}

这篇博客通过一个简单的示例介绍了有限自动状态机(FSM)的工作原理及其落地方式。FSM由当前状态、当前输入和根据输入执行的操作组成,通过循环更新状态来响应不同的输入。文中提供了一个状态转移的代码实现,展示了如何使用FSM处理[A, B]两种输入,并计算最终结果。该示例有助于理解FSM在实际问题中的应用。
476

被折叠的 条评论
为什么被折叠?



