【问题标题】:Find all intersections for m timespans of n parties查找 n 方的 m 时间跨度的所有交点
【发布时间】:2017-09-11 19:13:19
【问题描述】:

我只是想不出解决以下问题的好方法:

对于一个活动,我有 n 方 (party_id) 参加。每一方都有 m availabilities 用于所述事件,形式为start_dateend_date

我想知道的是重叠availabilities 的所有可能组合,每个party_id 恰好包含一个availability。我发现了可能会使用的区间树 (https://en.wikipedia.org/wiki/Interval_tree),但正如我所说,我无法完全弄清楚。

感谢您对此的任何想法!

【问题讨论】:

  • 只是为了把它弄对,所有可能的组合等等......是什么意思。你能举个例子来说明清楚吗?

标签: algorithm intervals timeslots


【解决方案1】:

直接的方法是按时间对所有事件(start_dateend_date 类似)进行排序。然后按时间顺序浏览此列表,同时跟踪所有“活跃”方(即那些已经开始但未停止的方)。

上述方法是一个批处理,它应该可以让您轻松找到给定时间表的所有可能组合。您提到的间隔树在您想要增量更新您的一组方的情况下很有用——数据结构可以对特定时间进行单独查询 em> 比为每个更新或查询重新运行批处理要便宜得多。

【讨论】:

  • 事件没有时间。它们适用于任何时间段,所有各方都可以同时使用。再想一想,这可能适用于所有事件可用性。
猜你喜欢
  • 2016-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-25
相关资源
最近更新 更多