Algorithm 匈牙利算法-系统分配
我正在一个项目中实现匈牙利算法。我设法让它工作,直到所谓的第四步。我确实设法让计算机创建足够多的零,这样覆盖行的最小数量就是行/列的数量,但在实际将正确的代理分配给正确的作业时,我陷入了困境。我知道如何分配自己,但这是更多的尝试和错误-也就是说,我没有看到系统化的方法,这当然是计算机工作所必需的 假设我们最终得到了这个矩阵:Algorithm 匈牙利算法-系统分配,algorithm,Algorithm,我正在一个项目中实现匈牙利算法。我设法让它工作,直到所谓的第四步。我确实设法让计算机创建足够多的零,这样覆盖行的最小数量就是行/列的数量,但在实际将正确的代理分配给正确的作业时,我陷入了困境。我知道如何分配自己,但这是更多的尝试和错误-也就是说,我没有看到系统化的方法,这当然是计算机工作所必需的 假设我们最终得到了这个矩阵: a b c d 0 30 0 0 0 1 0 35 5 0 2 60 5 0 0 3 0 50 35 40 将每个代理分配到作业时,我们
a b c d
0 30 0 0 0
1 0 35 5 0
2 60 5 0 0
3 0 50 35 40
将每个代理分配到作业时,我们必须接受的零是(a,3)、(b,0)、(c,2)和(d,1)。选择这些产品背后的系统是什么?我的代码现在首先选择(b,0),并从现在起忽略第0行和第b列。但是,它随后会选择(a,1),但如果选择了此值,则无法再为第3行赋值
非常感谢您的任何提示。嗯,我最终还是设法解决了这个问题。我使用的方法是检查是否有任何列/行只有一个零。在这种情况下,该代理必须使用该作业,并且将来必须忽略该列和行。然后,再做一次,以便为每个代理找到一份工作 在我的例子中,(b,0)将是第一选择。在此之后,我们有:
a b c d
0 x x x x
1 0 x 5 0
2 60 x 0 0
3 0 x 35 40
再次使用该方法,我们可以做(a,3)等。我不确定是否已经证明这总是正确的,但似乎是正确的。您使用哪种语言来解决这个问题?你能展示一些代码吗?