数据:学生在一周的特定时间戳(每小时)有不同的可用性。
挑战:根据上面的数据创建一个时间表,其中一个教师可以每周与每个学生见面一次,学生之间没有任何重叠。
我已经尝试过了
- 创建一个过滤器,检查哪些学生的可用性最低,并优先考虑他们
- 按学生多/少天数分配
然而,我的尝试甚至没有接近我需要的,我很难理解这一切的数学。我怎样才能最好地创建这样一个日程安排工具呢?
创建一个二部图,每个学生一个顶点,每个时间戳一个顶点。当且仅当该学生在该时间戳可用时,该学生通过一条边连接到该时间戳。
然后在这个二部图中搜索最大匹配。这也被称为分配问题,可以用匈牙利算法来解决。
注意,这里假设时间戳是离散的。这可能与现实不符。但这仍然是一个很好的开始。