实践题目 :工作分配问题
问题描述:设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。
算法描述:剪枝后的解空间树如下(原解空间每一父节点都有三个子节点,分别对应第1、2、3个工作的费用)
所以解空间有(10,3,5),(10,4,4),(2,2,5),(2,4,3),(3,2,5),(3,3,3)
剪枝:当前总费用大于最优解时即回溯,同时选过的工作在这个解中不会再被选中。
心得体会:
一开始做回溯的时候在backtrack的递归中有点卡住,后面在约束函数那里也研究了一段时间,跟同伴一起思考研究还是很有效率的,想通了之后做第一题0-1背包就比较顺畅了。
原文:https://www.cnblogs.com/siyuanyu/p/10165472.html