You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写函数检查状态转移JSON中各状态的全转移值约束?

我来帮你搞定这个状态转移验证的函数,咱们从思路到代码一步步来:

核心思路

要验证每个状态都有0和1的转移,核心就是两步:

  • 先把每个状态对应的所有转移值收集起来
  • 检查每个状态的转移值是否同时包含0和1
具体代码实现(以Python为例)

这里我用Python写一个通用的验证函数,完美适配你给出的JSON结构:

def validate_transitions(edges):
    # 1. 构建每个状态的转移值集合(自动去重)
    state_transitions = {}
    for edge in edges:
        start_state, _, input_values = edge
        if start_state not in state_transitions:
            state_transitions[start_state] = set()
        # 将当前转移的所有值添加到集合中
        state_transitions[start_state].update(input_values)
    
    # 2. 定义需要验证的状态和必须的转移值
    required_states = {"a", "b", "c"}
    required_inputs = {"0", "1"}
    
    # 3. 逐个检查每个状态的转移是否符合要求
    validation_errors = []
    for state in required_states:
        if state not in state_transitions:
            validation_errors.append(f"状态 {state} 没有任何转移定义")
        else:
            # 计算缺少的转移值
            missing_inputs = required_inputs - state_transitions[state]
            if missing_inputs:
                validation_errors.append(f"状态 {state} 缺少转移值:{', '.join(missing_inputs)}")
    
    # 返回验证结果
    if not validation_errors:
        return True, "✅ 所有状态均满足0和1的转移要求"
    else:
        return False, "❌ 验证不通过:" + ";".join(validation_errors)

# 测试你给出的JSON片段
test_edges = [["a", "a", ["1"]], ["a", "b", ["0"]], ["b", "a", ["1"]], ["b", "c", ["0"]], ["c", "c", ["0", "1"]]]
is_valid, message = validate_transitions(test_edges)
print(message)
代码解释
  • 状态转移集合构建:遍历所有边,把每个起始状态对应的转移值存入集合,集合会自动去重,避免重复统计同一个转移值。
  • 规则定义:明确我们要检查的状态是a、b、c,必须的转移值是0和1。如果你的状态是动态变化的,可以把required_states改成state_transitions.keys(),但这样会漏掉那些没有任何转移的状态。
  • 错误收集:逐个检查每个状态,要么是没有任何转移,要么是缺少某个必须的转移值,把所有问题收集起来最后统一返回,方便排查。
测试结果

运行上面的代码,针对你给出的edges,会输出:

✅ 所有状态均满足0和1的转移要求

如果比如把状态b的0转移删掉,就会输出:

❌ 验证不通过:状态 b 缺少转移值:0

内容的提问来源于stack exchange,提问作者Stiiq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:54:28