卅川的状态机之路(创作中,不定时上传)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了卅川的状态机之路(创作中,不定时上传)相关的知识,希望对你有一定的参考价值。

川的第一篇干货,将从讲述FSM(有限状态机)开始。

川第一次接触状态机这种东西,还得追溯到刚到畅游工作,破解了别的游戏的代码(游戏程序就是这么没节操和底线,嗯!)才知道有这么个东西的。虽然大学学习过相关思想,可是第一次见了真材实料还是很震撼的(请原谅我用"震撼"这个词,因为我理想中的程序,就应该和机械一样各司其职分工明确,然后才能正确运行得到结果)。

现在有很多论调,当然集中的也只是一些特定的环境下,有限状态机已经不合时宜了,觉得低效且无法完整实现功能(比如最近就看过几篇文章,关于游戏AI,大家似乎对之前使用FSM去实现很有些看法)。可是正如排序算法一样,快排再快,也一样有去写选择排序的人(仅仅是打比方,非要跟我掰扯快排和选择的速度和应用场景我也没办法)。FSM并不一定执行效率最高,但是以工程的角度来看,FSM却可以比较清晰地阐述程序运行流程(请注意"比较",因为我也见过一个总逻辑分成2-30个状态的,那就简直是天书了)。

所以,来看一个核心问题:什么是有限状态机?川不想去网上搬一堆关于有限状态机的定义,他们都对,但是并不是我的思想。

FSMFinite-state machine)是有限状态机的缩写,全称中的machine,那可是机器啊喂!所以还想什么呢,FSM就是一台用代码构建的机器呀(不得不说,我到现在都对工程制图学念念不忘,漂亮机械图纸在我眼中就是艺术品)!既然是机器,它就会运转,去完成它在被设计制造出来之后被赋予的任务。举个栗子:城市道路都愿意开自动挡(因为省事儿呀,面对堵车时候那一脚又一脚的离合绝对是对左腿强有力的锻炼),它的变速箱就是一台机器,它需要在我们开车时根据我们行驶的路况、速度变更不同的挡位(否则要么发动机带不动汽车,要么就等着烧机油吧,哈哈)。

好吧,扯了一堆有的没的。状态机就是在不同的状态不同的条件下,去执行对应状态或条件下代码的机器(如有需要,请自行深入了解,摊手)。

以上是关于卅川的状态机之路(创作中,不定时上传)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 576 出界的路径数[动态规划 状态机] HERODING的LeetCode之路

React 状态机

从上传到 S3 的文件触发的无服务器框架和 AWS Step Functions(AWS 状态机)

定时开关机方案

定时更新一组状态

(有限)状态机