我在正确地重新排序由不同设备发送的事件序列时遇到问题:它们是顺序的,有时可能会发生,除了第一个事件以外的所有事件都可以完全或部分被绕开。 例如,假设有3个设备 D1 D2 和 D3 ,其中一个必须按以下顺序依次通过所有设备D1-> D2-> D3。
第一个设备 D1 可以在有人穿过时给我一个时间戳。
第二个设备 D2 每次有人在该区域时都可以给我一个或多个时间戳。
第三个设备 D3 可以在有人穿过时给我一个时间戳。
(有时可能会在 D2 的某个时间戳之前发送 D3 )。
现在,如果只有一个人跨过所有设备,我会看到类似以下内容:
D1:时间戳记20/01/2020 13:45:24.000
D2:时间戳记20/01/2020 13:45:25.700
D2:时间戳记20/01/2020 13:45:26.800
D3:时间戳记20/01/2020 13:45:27.010
在这种情况下,我可以轻松地获得正确的过渡。假设现在有两个人,当第一个在中间时,第二个人开始越过设备:
人1-D1:时间戳20/01/2020 13:45:24.000
人1-D2:时间戳20/01/2020 13:45:25.700
人2-D1:时间戳20/01/2020 13:45:25.900
人2-D2:时间戳20/01/2020 13:45:26.500
人1-D2:时间戳20/01/2020 13:45:26.800
人1-D3:时间戳20/01/2020 13:45:27.000
人2-D2:时间戳20/01/2020 13:45:27.400
人2-D3:时间戳20/01/2020 13:45:28.000
是否有一种方法可以分别生成它们的完整过渡,如下所示?
人员1
D1:时间戳记20/01/2020 13:45:24.000
D2:时间戳记20/01/2020 13:45:25.700
D2:时间戳记20/01/2020 13:45:26.800
D3:时间戳记20/01/2020 13:45:27.000
人员2
D1:时间戳记20/01/2020 13:45:25.900
D2:时间戳记20/01/2020 13:45:26.500
D2:时间戳记20/01/2020 13:45:27.400
D3:时间戳记20/01/2020 13:45:28.000
(显然我的数据中没有 Person 1 和 Person 2 ,问题必须推广到n个人和不同的交叉口)。
我必须实现一个C ++代码,在这里我可以解决此问题并生成一些填充有 complete 转换(D1-> D2-> D3)的向量。我对分配问题有一些想法,但我不知道我是否正确。 有想法吗?