KM算法入门
在学习KM算法前,我们先感受一下匈牙利算法(由匈牙利数学家Edmonds提出)。
匈牙利算法
解决何种问题的呢
匈牙利算法是解决二分图的最大匹配度问题。
何为二分图
如果用染色法来判断的话,那么整幅图最后只会有两种颜色的元素;所谓二分图,就是可以划分为两个集合,且同一集合中的元素是互不相连的,不同集合中的元素是可以相连的。
下面我们通过一个简单的例子来说明:
现在有家公司,有三个员工和三种工作,员工与工作相连表示员工可以胜任这份工作
匈牙利算法解决的就是如何让更多的员工胜任不同的工作,在本题中可以直接看出来结果,但 算法的作用就是让复杂的问题模板化,任何算法的给出都是为了规整化一个问题的解决步骤,其目的是为了在问题规模越来越大时算法对其仍然适用。
首先,对员工A 我们对其匹配工作a,
此后,对员工B 他第一个匹配的是工作a,但我们刚才才将a匹配给了A,这时,我们就需要用到匈牙利算法,**“匈牙利算法”指出 通过一条增广路径,通过取反操作,我们就能匹配更多的点。