我正在尝试解决此问题,无法提出强大的解决方案。任何想法,伪代码或python实现将不胜感激。为简单起见,请考虑一个小矩阵,如图1所示。矩阵中的行代表天数,列代表分钟。我们可以假设公共汽车在两个点之间行进,需要10分钟,并且在每分钟由该单元格中的字母定义的特定单元处停止。鉴于历史模式(第1天至第5天),我们希望找到最佳的字母序列。为此,我们需要遵循某些规则:
我们不寻找最短的距离(最直线等)
以下是几个例子: 图1中的序列满足所有这些规则。突出显示的序列仅用于可视化目的。图1中还有其他可视化此序列的方法。
图2中的序列是不连续的。因此,最常见的字母不能拼接在一起。出于这个原因,我们选择第3分钟中第二个最频繁的字母,其中一个是C,A,D而不是B.我们可以满足规则。但是,请记住,当使用365天以及100多分钟时,它会变得复杂。例如,使用第二个最频繁的字母可能导致重新连接序列的其余部分。
任何指导都非常感谢。
答案 0 :(得分:0)
这听起来像是一个相对简单的动态编程任务。
sum([0 if cell.most_frequent else 1 for cell in cells])
您可能需要调整目标函数,例如最后一个频率和第二个最频繁的字母被视为相同。也许你想根据它们的频率给出一个分数。