我在正确重新排序由不同设备发送的一系列事件时遇到问题:它们是连续的,有时可能会发生除第一个之外的所有事件都可以完全或部分绕过。例如,假设有 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
(显然我的数据中没有第 1个人和第2 个人,问题必须推广到 n 个人和不同的过境点)。
我必须实现一个 C++ 代码,我可以在其中解决这个问题并生成一些充满完整转换(D1->D2->D3)的向量。我想了一些关于分配问题的事情,但我不知道我是否正确。任何想法?