状态压缩最短路先确认状态和边权
状态压缩最短路先确认状态和边权把“已访问的必经点”编码成 bitmask 后状态从节点变为(mask, node)。这能表达顺序或集合约束却不会消除指数增长若有 k 个必经点状态数量仍可能接近2^k * V。因此需要先给 k 设上限并在超限时返回可解释错误或选择近似/分阶段方案。Dijkstra 只适用于所有边权非负的图。若成本可能为负必须改用其他算法或先重定义业务成本把 Dijkstra 与 bitmask 组合不会改变这个前提。func validateWeight(w int64) error { if w 0 { return errors.New(Dijkstra 不支持负权边) } return nil }“必须按指定顺序经过”也不等同于“访问集合”。前者通常用阶段编号表示已完成到第几项状态数可能比任意集合的 bitmask 更小。先选择贴合约束的状态表达再实现优先队列。测试应覆盖不可达节点、零权边、重复边、负权拒绝、必经点为空及状态数上限。性能测量应报告图规模、必经点数量、边权范围和机器环境缓存未命中不是算法选择的依据。