0

我在正确重新排序由不同设备发送的一系列事件时遇到问题:它们是连续的,有时可能会发生除第一个之外的所有事件都可以完全或部分绕过。例如,假设有 3 个设备D1 D2D3,必须按照 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)的向量。我想了一些关于分配问题的事情,但我不知道我是否正确。任何想法?

4

0 回答 0