任务成本问题

此去依然 2013-06-18 01:15:43
现有5个工人,分别完成5项不同的任务,不同的人对各项工作熟练程度不同,因此时间成本也不同

任务1 任务2 任务3 任务4 任务5
工人1 7 2 5 3 8
工人2 6 5 2 4 7
工人3 5 9 1 6 2
工人4 6 4 3 2 9
工人5 7 6 2 5 5

设计实现2个函数,分别返回最少时间成本和最多时间成本,并给出相应权值。

今天去笔试遇到的一个选做题目,可惜运筹学忘干净了,没做出来。。。
...全文
221 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
此去依然 2013-06-18
  • 打赏
  • 举报
回复
引用 3 楼 u010936098 的回复:
交白卷是零分,枚举法不会是负分吧?
还好是选做题,三选一,就这个没答出来。。。
橡木疙瘩 2013-06-18
  • 打赏
  • 举报
回复
交白卷是零分,枚举法不会是负分吧?
此去依然 2013-06-18
  • 打赏
  • 举报
回复
这么做岂不是一点意思都没有了。。。
橡木疙瘩 2013-06-18
  • 打赏
  • 举报
回复
一共才5个工人5项任务,如果限定每人一项任务的话,才5*4*3*2*1=120种方案,不限定的话是5^5=3125,枚举法都可以。
buyong 2013-06-18
  • 打赏
  • 举报
回复
hugett 2013-06-18
  • 打赏
  • 举报
回复
不就是一个二分图的最大权值匹配么。。用KM算法。。
橡木疙瘩 2013-06-18
  • 打赏
  • 举报
回复
我想了一种方法: V(i,j)为工人a完成任务A的成本, M(0..x,0..y)为工人0到工人x、任务0到任务y的最小成本分配, 那么:M(i,j) = MIN( M( 0..i-1, 0..j-1) + V(i,j), M(0..i-1,( 0..j-2,j)) + V(i, j-1),...M(0..i-1, 1..j) +V(i, 0 ) ); M(0,0) = V(i,0) M(0,1) = V(0,1) ... 这样可以使用一个优先队列,用工人1的五个任务初始化五个方案,每次取出总成本最小的方案,为下一个工人和其余所有任务各生成一个方案压入队列。当队列顶部的成员所有工人都已经分配完成时,它就是成本最小的方案。 计算不同工人完成不同任务成本的最大值,用它减各个工人各个任务的成本,生成新的数据,再求最小分配方案,结果就是最大成本方案,实际总成本为最大值*5-所得总成本

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧