正确地重新排列一系列事件

时间:2019-12-29 15:05:22

标签: c++ algorithm sorting hungarian-algorithm

我在正确地重新排序由不同设备发送的事件序列时遇到问题:它们是顺序的,有时可能会发生,除了第一个事件以外的所有事件都可以完全或部分被绕开。 例如,假设有3个设备 D1 D2 D3 ,其中一个必须按以下顺序依次通过所有设备D1-> D2-> D3。

第一个设备 D1 可以在有人穿过时给我一个时间戳。

第二个设备 D2 每次有人在该区域时都可以给我一个或多个时间戳。

第三个设备 D3 可以在有人穿过时给我一个时间戳。 (有时可能会在 D2 的某个时间戳之前发送 D3 )。 Preview of the devices 现在,如果只有一个人跨过所有设备,我会看到类似以下内容:

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)的向量。我对分配问题有一些想法,但我不知道我是否正确。 有想法吗?

0 个答案:

没有答案