一个算法问题,想了很久都不会。。
问题是这样,安排一个家长会见老师的时间表。
每个老师每次会见一个家长,7分钟,总共可以会见18个家长。
每个家长最多只能要求会见最多9个老师。
现在要安排一个时间表,使得每个家长能以最短的时间会见完所有要求的老师。
例如:一个家长,要求见ABCDE 5个老师,那么最优的安排解决就是见完A老师立即见B,然后C,然后D,然后E。而不需要见完A之后,BCDE这些老师都有其他家长要见,所以要等7分钟。
希望我解释的比较清楚哈。
我上网找了下,找到的都是高校排课或者考试安排,什么着色法,回溯算法,遗传算法,DNA算法等等。但是我不太明白也不清楚能不能解决此问题。。。。
我现在的想法是,每两个老师看成一对,然后找出最多家长同时要求见的老师对,然后从此两个老师入手安排,因为如果最后安排他们将会有很多冲突。每次安排一个家长,如果安排的时间刚好有冲突,就把冲突的位置的家长调整一下,使得所有家长满足要求。简单的说,就是每加一个家长,就找出当前解。但是这样做的话可能会浪费很多时间。。最差的时间可能会很高很高。。。因为每次加一个家长,就有可能把之前的所有家长都要重新调整。。。
[解决办法]
有可能无解吧
[解决办法]
是不是总共18个老师,会见N个家长?!
N≤18不需等待,车轮排法;N>18必须等待。
[解决办法]
穷举法
[解决办法]
应该说只要不让老师空下来就可以了吧...
[解决办法]
[解决办法]
这个要说明总共有几个老师么?看着想离散数学和统计中的问题
[解决办法]
首先、可以使用交集分析一下
因为、任何两个家长会见的交集都是临界资源
最后、在用预防死锁的思考方式看看能不能解决
[解决办法]
这是运筹学问题,没有算法之前早就有标准答案了。
[解决办法]
贪心算法,根据结束时间排序即可
[解决办法]
关键是如何衡量等待时间最短?是平均等待时间,还是需要别的方差指标来评判?
如果按平均时间计算,由于资源(家长)没有优先级,让谁等都是一样的,等待时间都是7的倍数。
每一轮安排中,让家长最大并发即可。
[解决办法]
补充,在下一轮安排中,如果上一轮等待的家长,则优先安排。
[解决办法]