(1)空间搜索( 可能是你说的回溯吧)
因为"有n份作业分配给n个人去完成,每人完成一份作业"
所以 实际上工作完成序列(以工作序号为索引)就是 这i个人的全排列
例如 n=3时 有排列
1 2 3 (表示 1号人完成1号作业,2号人完成2号作业,3号人完成3号作业)
1 3 2 (表示 1号人完成1号作业,3号人完成2号作业,2号人完成3号作业)
.....
3 2 1
遍历排列空间并计算 每种排列的总花费, 取最小
求排列的用回溯法,这个不用说了把;
(2)动态规划
设函数 cost(i,V)表示 前i个人做 V作业集合中的作业的最小总开销
因此 由最优原理 得
cost(i,v)=min{ cost(i+1,V-j)+Cij }
(j属于V)
最后 令V为n个作业集合
计算 cost(n,V) 即可
不知上述是否符合你的要求
按回答时间 | 按评价高低网友回答(共2个回答)
1
|









指派问题的回溯算法




