algorithm - 优化日历 block 算法

标签 algorithm optimization

所以这是一个棘手的问题,它有所简化但基于与内存优化有关的现实世界问题(它不是家庭作业)

假设您是两个日期之间的一段时间(例如 2013-01-01 到 2013-01-31)。现在你得到了一堆日期条目,每个条目都包含一个日期和一种颜色。每个日期最多有一个条目,但可能不是所有日期都有条目。

例如:

2013-01-01 黄色

2013-01-02 蓝色

2013-01-03 红色

2013-01-05 黄色

enter image description here

等等

现在假设我们有一个包含开始日期、结束日期和颜色的跨度。我们还有一个可选的星期几过滤器,如果声明,它可以包含一周中的一天或几天。在那些情况下,跨度仅在那些日子“活跃”。

例如在下面的例子中我们可能有:

跨度 #1:2013-01-01 - 2013-01-06 蓝色

跨度 #2:2013-01-13 - 2013-01-27 红色星期一

跨度 #3:2013-01-08 - 2013-01-26 CYAN Wed Tue Sat Sun

等等

问题是想出一个可行的算法(从性能、内存的角度来看,没有定量计算机 :),它能用最少的跨度来描述给定的时期(没有保证最低金额,但即使这样也很好 :) 。跨度可能重叠。

暴力破解看起来很讨厌,但应该有一个优雅的解决方案

最佳答案

这个问题与circuit minimization有一些相似之处使用 Karnaugh maps .已知此问题是 NP-hard 问题,因此像 Quine–McCluskey algorithm 这样的算法具有指数运行时间。

因此,我的意图告诉我,对于您的问题,没有有效的算法。还有很多其他覆盖问题,例如 vertex coverset cover它们也是非常困难的问题。我会尝试证明集合覆盖可以简化为您的问题,使您的问题也成为 NP-hard。

关于algorithm - 优化日历 block 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14221752/

相关文章:

pointers - 如何创建一个可以在单个单词大小内容纳整数或指针的 Rust 类型?

javascript - 迭代器函数的 this 与 currentValue

javascript - Chrome Profiler 中的 "Not optimized"警告是什么意思?

algorithm - 评分算法 : how to convert the number & % of "Likes" & "Dislikes" into a single score?

algorithm - 检测二值图像中的圆圈

algorithm - 如何确定任意数量的相等正方形的大小以适应固定大小的二维空间?

c# - 与 const 字段相比,在 web.config 中存储值是否有性能损失?

mysql - 每个选定列的不同Where子句

algorithm - 点列表的平均矩形

algorithm - 如何用卷积解决精确模式匹配