gpt4 book ai didi

algorithm - 如何将公用电话建模为状态机?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:49:31 26 4
gpt4 key购买 nike

我不明白如何将状态机应用于问题。特别是 - 该模型是否根据定义描述了所有可能的状态排列?您如何合并持续存在并在状态之间修改的内存

作为最简单的示例,让我们仅以接受硬币的公用电话部分为例,并确定是否可以调用电话。通话费用为 50 美分、五分硬币、一角硬币和四分之一硬币。

状态机会是这样的树吗:

quarter -> quarter -> valid
quarter -> dime -> dime -> nickel -> valid
dime -> dime -> dime -> dime -> dime -> valid

或者更像是:

Accepting_Coins -> Quarter_Inserted -> Add_25c_to_Balance -> Check_balance -> Balance_is_50c -> valid

Accepting_Coins -> Quarter_Inserted -> Add_25c_to_Balance -> Check_balance -> Balance_is_NOT_50c -> Accepting_Coins

Accepting_Coins -> Dime_Inserted -> Add_10c_to_Balance -> Check_balance -> Balance_is_50c -> valid

第二个版本需要内存中的余额变量。

我想编写事件驱动程序,其中 FSM 模型指导控制流并拒绝我定义为无效事件序列的内容。

最佳答案

如评论中所述,对于纯有限状态机,您需要定义公用电话到目前为止已接受的每种可能的金额作为状态。接受插入的硬币对应于一个转换。

“溢出”是否需要额外的状态取决于...如果公用电话将拒绝任何不代表模型转换的硬币,那么您不需要它:缺少模型(图形)中的过渡(边缘)就足够了。但在一个非常详细的实现中,您还可以添加状态,用于说明硬币卡住、插入无效硬币、插入过多(公用电话将如何响应?它会返回硬币,还是只返回所有硬币?)。 ..等),一个按钮被按下,...

但这是最基本的模型:

enter image description here

您可能还需要在拨号、调用和结束通话时进行转换。通话结束后,您将再次转换到状态 0,以便可以接受新的付款。

关于algorithm - 如何将公用电话建模为状态机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57574442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com