3

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

User1:(timestamp1,latitude1,longitude1)....(timestamp_n,latitude_n,longitude_n)

现在假设我们有 100 个用户,每个用户都有一组 (timestamp,latitude,longitude)

我想知道哪一组用户可能有匹配的轨迹。匹配轨迹将采用相同的路线,因此在给定的一组时间戳中,纬度和经度应该相同或足够接近,并且时间戳应该相同或足够接近。足够近的时间戳可以是大约 30 秒,而对于空间来说,它可以是 200 米。我可以通过蛮力方法做到这一点,我正在寻找更好的解决方案。

4

2 回答 2

1

这与算法是否仍然是蛮力无关。

我想在这里介绍的是如何衡量 2 条路径之间的差异。只是我认为准确定义如何量化差异很重要。如果你想要更快的东西,那么你可以稍后估计这个数量。

好的,我认为两条路径之间的区别是:

The average distance between 2 users over time.

您应该能够在 2 个给定数据点之间进行插值,以找出用户在任何给定时间的位置。只需线性插值就足够了。

当我说随时间推移的平均值时,人们会将时间离散化,以便更容易计算。比方说:

The average distance between 2 users every 10 seconds period.

编辑:上述建议假设您关心“时间”。既然你提到了时间戳等等。如果你不关心它,你一开始就不应该把它放在问题中。

无论如何,我有点想象你可能只想看看路径本身。在这种情况下,您仍然可以简单地通过忽略实际时间戳来使用上述路径差异的定义,并假设用户在路径开始时同时开始。可以通过多种方式设置行进速度……例如,无论一条路径是否比另一条路径长,都让两个用户同时完成路径,或者只是让两个用户以相同的速度行进。

无论如何,这一切都归结为定义您要如何测量路径差异。您需要在问题中提供更多详细信息。

于 2013-05-24T00:19:36.520 回答
1

您可以使用k-dtree范围树来索引您的数据。这些将使您能够有效地对数据的所有三个维度执行范围查询。

于 2013-05-23T23:39:10.090 回答