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

分配问题:求最小作业序列数,最大基数匹配能否得到最优解?

问题解答

结论先行

你描述的问题属于有向无环图(DAG)的最小不相交路径覆盖问题,通过最大基数匹配得到的结果完全可以对应最小的作业序列数,二者有严格的数学对应关系:

最小作业序列数 M = 作业总数量N - 对应二分图的最大基数匹配数

原理说明

最小不相交路径覆盖的定义是:用最少的互不相交的路径覆盖DAG的所有顶点,每条路径上的顶点顺序符合边的指向,对应你场景里的作业先后顺序。

注:如果作业先后规则存在循环依赖(比如A可接B、B可接A),需要先对强连通分量做缩点处理,将原图转换为DAG后再继续后续流程。

该问题转换为二分图最大匹配的逻辑如下:

  • 把每个作业拆为二分图的左、右部两个独立节点
  • 若原规则中作业A后续可接作业B,就在二分图中添加左部A到右部B的边
  • 求解该二分图的最大基数匹配:每匹配成功一条边,就代表两个作业可以拼接在同一条序列里,总序列数就减少1
  • 最终最小序列数就是总作业数减去最大匹配数

示例验证

你给出的N=6的案例中,二分图的最大匹配数为4(匹配对为1→2、2→3、4→5、5→6),代入公式得M=6-4=2,和你给出的最优结果完全一致。

可用算法

  • 小规模场景直接使用匈牙利算法求解二分图最大匹配即可,实现简单
  • 作业数量超过1000的大规模场景,推荐使用Hopcroft-Karp算法,时间复杂度更低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:18:04