Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 匈牙利算法-系统分配_Algorithm - Fatal编程技术网

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)等。我不确定是否已经证明这总是正确的,但似乎是正确的。

您使用哪种语言来解决这个问题?你能展示一些代码吗?