2021-07-22 有限自动状态机示例

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有限自动状态机

大多数介绍有限自动状态机的帖子都是写了原理,那这个原理怎么落地呢。我弄了一个简单易于理解的示例写一下。

有限自动机有3个部分:
1,当前状态,
2,当前输入,
3,当前状态对应的当前输入,所应该执行的操作。
其中,3会产生一个新的状态1。对应一个新的输入2。
从而实现循环

举例:
一个状态:[x,y]。 初始状态为 [1,0]
对应的输入:A,B
A对应的操作:产生新的状态 [2 * x + y,y ]
B对应的操作:产生新的状态 [x, 2 * y + x]

图示如下:

-输入Au输入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];
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值