You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于区间模式挖掘的严格递增连续路径求解方案咨询

基于区间的模式挖掘:寻找严格递增的连续有效路径

问题需求

我需要从事件时间数据中找出所有严格递增的连续路径,核心约束有两个:

  • 路径中每个后续时间点必须严格大于前一个(即time[i] < time[i+1])
  • 同一事件的起止时间必须属于同一个实例(比如路径[[11], [39], ...]无效,因为11是事件A第1个实例的起始时间,39是事件A第2个实例的结束时间)

数据说明

原始列表结构示例

time = [[11, 38, 40], [12, 39, 49], [41], [4, 23, 43], [47], [17, 35, 60]]
Events = [[start time events A], [end time events A], [start time events B], [start time events C], [end time events B], [end time events C]]

结构化Pandas数据源

import pandas as pd
from io import StringIO

data = """\
event,occur,start,end
A,1,11,12
A,2,38,39
A,3,40,49
B,1,41,47
C,1,4,17
C,2,23,35
C,3,43,60
"""

# 读取为DataFrame
df = pd.read_csv(StringIO(data))

已尝试方案及问题

我试过多种递归、反向遍历方法,耗时数小时仍未解决。最近用字典存储的非递归方法得到了最接近预期的结果,但该方法未考虑事件实例的关联约束,无法满足需求:

time_reversed = {'end_C': [17, 35, 60], 'end_B': [47], 'start_C': [4, 23, 43], 'start_B': [41], 'end_A': [12, 39, 49], 'start_A': [11, 38, 40]}

import numpy as np    
def consecutive(time):
    time_pruned = time.copy()
    keys = list(time.keys())

    for i in range(len(keys)-1):
        lower = time_pruned[keys[i+1]]
        max_lower = np.nanmax(lower)
        max_upper = np.nanmax(time_pruned[keys[i]])

        while max_lower > max_upper:
            lower = np.delete(lower, np.nanargmax(lower))
    
            max_lower = np.nanmax(lower)
            time_pruned[keys[i+1]] = lower

    return time_pruned

我也梳理过迭代修剪的思路,但在遍历列表时执行删除元素的操作始终失败。

求助需求

现寻求一种高效的解决方案,需同时满足路径严格递增、事件实例关联约束两个核心要求。

内容的提问来源于stack exchange,提问作者schneider-daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 13:35:33