Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 设计一个匹配轨迹的算法?_Algorithm_Geometry_Computational Geometry - Fatal编程技术网

Algorithm 设计一个匹配轨迹的算法?

Algorithm 设计一个匹配轨迹的算法?,algorithm,geometry,computational-geometry,Algorithm,Geometry,Computational Geometry,我有一个数据集,格式为(时间戳、纬度、经度)。我将得到n个条目,其中每个条目的形式为(时间戳、纬度、经度)。这是针对一个用户的 User1:(timestamp1,latitude1,longitude1)....(timestamp_n,latitude_n,longitude_n) 现在假设我们有100个用户,每个用户都有一组点(时间戳、纬度、经度) 我想知道哪一组用户可能有匹配的轨迹。 匹配的轨迹将是所采取的相同路线,因此在给定的一组时间戳中,纬度和经度应相同或足够接近,时间戳也应相同或

我有一个数据集,格式为(时间戳、纬度、经度)。我将得到n个条目,其中每个条目的形式为(时间戳、纬度、经度)。这是针对一个用户的

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树实现