我卡在Skiena的《算法设计》中的一个问题上了。我不知道我的解决方案是否正确。
5-18. 考虑一个电影集合M_1,M_2,... M_k。有一组顾客,每个顾客都表明他们想在这个周末看的两部电影。电影在周六晚上和周日晚上播放。多部电影可以同时播放。您必须决定哪些电影应在周六电视播出,哪些应在周日电视播出,以便每个顾客都能看到他们所需的两部电影。是否存在时间表,每部电影最多只播放一次?如果存在这样的时间表,请设计一个高效的算法来查找此时间表。
解决方案:我们有一组 {M1,M2..Mk} 的电影和一组 {C1,C2,..Cp} 的顾客。我们用一条边连接C1想观看的2部电影,用一条边连接C2想观看的2部电影等等。电影集合变成了一个连通图。我想验证它是否为二分图,例如不能在同一晚上播放2部喜欢的电影(用不同的颜色对2部喜欢的电影进行着色)。如果可以,我们将所有用第一种颜色涂色的电影放在星期六播出,第二种颜色则放在星期日播出。问题解决了。但是如果不是呢?
5-18. 考虑一个电影集合M_1,M_2,... M_k。有一组顾客,每个顾客都表明他们想在这个周末看的两部电影。电影在周六晚上和周日晚上播放。多部电影可以同时播放。您必须决定哪些电影应在周六电视播出,哪些应在周日电视播出,以便每个顾客都能看到他们所需的两部电影。是否存在时间表,每部电影最多只播放一次?如果存在这样的时间表,请设计一个高效的算法来查找此时间表。
解决方案:我们有一组 {M1,M2..Mk} 的电影和一组 {C1,C2,..Cp} 的顾客。我们用一条边连接C1想观看的2部电影,用一条边连接C2想观看的2部电影等等。电影集合变成了一个连通图。我想验证它是否为二分图,例如不能在同一晚上播放2部喜欢的电影(用不同的颜色对2部喜欢的电影进行着色)。如果可以,我们将所有用第一种颜色涂色的电影放在星期六播出,第二种颜色则放在星期日播出。问题解决了。但是如果不是呢?