摘要:
首先介绍一下题意:已知,有N个学生和P门课程,每个学生可以选0门,1门或者多门课程,要求在N个学生中选出P个学生使得这P个学生与P门课程一一对应。 这个问题既可以利用最大流算法解决也可以用匈牙利算法解决。如果用最大流算法中的Edmonds-karp算法解决,因为时间复杂度为O(n*m*m),n为点数,m为边数,会超时,利用匈牙利算法,时间复杂度为O(n*m),时间复杂度小,不会超时。 其实匈牙利算法就是最大流算法,只不过它的使用范围仅限于二分图,所以可以称之为“二分图定制版的最大流算法”,既然是定制的,那么他就会考虑到二分图的特殊性,优化原来的最大流算法,降低时间复杂度,同时也变得有点复杂不. 阅读全文