PrepStack · Markdown HTML

显式模拟 / 状态机

几何、扫描线、模拟与解析 · HTML

数学 / 逻辑形态

state_{t+1}=F(state_t,input_t);输出由 state 或 transition 产生;有限确定状态重复意味着未来周期重复。

识别信号

容易误判的相似信号

SignalWhy it is different
可直接用数学公式聚合若步骤可交换或有闭式解,逐步模拟可能超时。
状态遗漏历史影响若相同记录状态能产生不同未来,状态不是充分的。

核心不变量

循环开始时 state 完整描述真实过程当前配置;一步转移与规则定义逐项等价。

状态、转移与处理顺序

ItemDefinition
State只保留影响未来的字段,例如位置、方向、模式、计数器;可选 seen[state]=(step,metric)。
Transition读取当前输入与状态,按互斥优先级计算下一状态;检测重复时用周期长度快进。
Frontier / orderstep 分隔已精确执行的前缀与未执行后缀;快进只跳过完全相同的周期。

Python 骨架

def run_machine(initial, steps, transition):
    state = initial
    seen = {}
    t = 0
    while t < steps:
        if state in seen:
            cycle = t - seen[state]
            if cycle:
                jump = (steps - t) // cycle
                if jump:
                    t += jump * cycle
                    continue
        else:
            seen[state] = t
        state = transition(state)
        t += 1
    return state

正确性思路

  1. 基例 initial 与真实初态一致。
  2. 若循环前状态正确,等价转移产生正确下一状态。
  3. 归纳得逐步执行前缀正确。
  4. 确定系统回到同一完整状态时后续序列相同,整周期快进不改变终态。

复杂度

TimeSpaceParameters
朴素 O(T),有限状态周期快进常降至 O(S)O(1) 或周期检测 O(S)T 为步数,S 为可达状态数

边界条件

错误模式

PatternWhy it fails / fix
原地更新读到新值同步规则应从旧状态统一计算新状态。
状态不充分却判环漏掉方向或阶段会错误快进。
直接快进到终点只能跳完整周期,余数仍需执行。

选择与排除规则

相关模板

RelationTemplateBoundary
有限状态互补栈式状态模拟非嵌套状态用枚举状态,嵌套状态用 frame 栈。
优化分支对比有限状态机 DP多个可达模式需聚合最优值或方案数时升级 DP;确定性单后继过程只需模拟

原创微型例子

环节内容
Result检测到 1↔3 的长度 2 周期后快进。
Scenario状态 0→1→3→1,运行 10 步。
Walkthrough首次回到状态 1 时完整未来已确定,只执行剩余步数对周期长度的余数。

Recall prompts

我的补充