Algorithm 设计一个匹配轨迹的算法?
我有一个数据集,格式为(时间戳、纬度、经度)。我将得到n个条目,其中每个条目的形式为(时间戳、纬度、经度)。这是针对一个用户的Algorithm 设计一个匹配轨迹的算法?,algorithm,geometry,computational-geometry,Algorithm,Geometry,Computational Geometry,我有一个数据集,格式为(时间戳、纬度、经度)。我将得到n个条目,其中每个条目的形式为(时间戳、纬度、经度)。这是针对一个用户的 User1:(timestamp1,latitude1,longitude1)....(timestamp_n,latitude_n,longitude_n) 现在假设我们有100个用户,每个用户都有一组点(时间戳、纬度、经度) 我想知道哪一组用户可能有匹配的轨迹。 匹配的轨迹将是所采取的相同路线,因此在给定的一组时间戳中,纬度和经度应相同或足够接近,时间戳也应相同或
User1:(timestamp1,latitude1,longitude1)....(timestamp_n,latitude_n,longitude_n)
现在假设我们有100个用户,每个用户都有一组点(时间戳、纬度、经度)
我想知道哪一组用户可能有匹配的轨迹。
匹配的轨迹将是所采取的相同路线,因此在给定的一组时间戳中,纬度和经度应相同或足够接近,时间戳也应相同或足够接近。对于时间戳来说,足够近的距离大约为30秒,而对于空间来说,距离大约为200米。我可以通过暴力手段做到这一点,我正在寻找更好的解决方案 您可以使用或为数据编制索引。这将使您能够高效地对数据的所有三个维度执行范围查询。这与算法是否仍然是暴力无关 我想在这里介绍的是如何测量两条路径之间的差异。 我只是认为,准确定义如何量化差异将非常重要。 如果你想要更快的速度,那么你以后可能可以近似地这个数量 好的,我认为两条路径之间的区别是:
The average distance between 2 users over time.
您应该能够在2个给定数据点之间进行插值,以找出用户在任何给定时间的位置。仅仅线性插值就足够了
当我说随时间的平均值时,我们将离散化时间,以便更容易计算。
比如说:
The average distance between 2 users every 10 seconds period.
编辑:以上建议假设您关心“时间”。 因为你提到了时间戳和所有。 如果你不在乎它,你就不应该把它放在问题的第一位 不管怎样,我有点想象你可能只想看看路径本身。 在这种情况下,您仍然可以使用上面的路径差异定义 只需忽略实际的时间戳,并想象用户在路径开始的同一时间开始。 行驶速度可以通过多种方式设置。。。例如,让两个用户同时完成路径,不管一条路径是否比另一条路径长,或者让两个用户以相同的速度移动 总之,归根结底就是定义如何测量路径差异。
你需要在问题中提供更多细节。你能具体说明什么是“匹配轨迹”吗?您指的是由给定用户的最后两个时间点确定的方向吗?或者更长期的平均时间?在这种情况下,时间戳也必须匹配吗?太模糊了。你的问题要更具体一些。你是说时间戳、晶格度和经度各有3kd树?@gizgok说得对。也许有一种方法可以用一棵树来实现这一点,但什么也没有实现mind@gizgok我忘了你可以实现多维kd树或范围树;请参阅我的修订版答案“Pootertot”你知道kd树的任何实现都可以实现多维部分吗?@gizgok我错了,我把kd树和区间树混淆了。kd树已经考虑到您拥有高维数据(在本例中为三维数据),因此您应该能够直接使用任何kd树实现