*一些定义: 时间表:以下所有操作时间范围。开始时间和结束时间。 范围 - 时间轴的子集。 上下文:键值对的集合。 事件:在时间轴上的特定时间发生,并修改上下文中某些值的子集。 条件:关键字条件的集合,上下文中的值。根据上下文的状态评估为真还是假。 鉴于以上情况:
我有一个时间表,在某些时候修改了上下文 我有一组任意的通用条件,我想找到那些条件通过的时间范围。 例如,我的条件是foo = true而bar = true。时间0处的事件将foo设置为true并将bar设置为false。时间5的事件设置为真。时间6的事件将foo设置为false。 8时的事件将foo设为true。时间轴没有更多事件,最长时间为10.正确的返回值范围为5到6,范围为8到10.
我现在基本上做蛮力的事情,从头到尾,将事件应用到上下文,并在每个事件评估上下文以查看它是否通过了条件,如果是,继续前进并测试事件,直到上下文失败,并在那时,存储范围。
挑战在于它看起来像这些事件只会变得更多,而且这些条件中有很多,而且它变得很慢。策略的任何想法?我认为我可以推断一个条件是否会关心一个事件(我可以跳过测试事件的条件,因为它不会影响这个条件吗?),但不确定是否这会产生很大的加速。我可以对事件列表进行预处理以加快速度吗?这看起来类似于范围重叠算法,但有其自身的挑战。