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_Data Structures_Tree_Knn - Fatal编程技术网

Algorithm 两个实际问题的算法

Algorithm 两个实际问题的算法,algorithm,data-structures,tree,knn,Algorithm,Data Structures,Tree,Knn,有两个现实生活中的问题,我正在努力寻找答案: 餐厅服务:当我使用我的食品订购应用程序(如FoodPand、Zomato等)时,该应用程序会在我登录时检测到我的位置,并相应地建议附近的餐厅(可能在足够好的范围内,以便所选餐厅可以提供食品) 出租车服务:当我使用出租车服务(如优步或奥拉)时,他们也会在我尝试预订出租车时检测到我的位置,并建议当时附近可用的出租车 问题: 如何找到最近的餐馆和出租车?他们实际使用的具体算法是什么?因为两种情况都不同,搜索数据在一种情况下是静态的,而在另一种情况下是不断变

有两个现实生活中的问题,我正在努力寻找答案:

  • 餐厅服务:当我使用我的食品订购应用程序(如FoodPand、Zomato等)时,该应用程序会在我登录时检测到我的位置,并相应地建议附近的餐厅(可能在足够好的范围内,以便所选餐厅可以提供食品)

  • 出租车服务:当我使用出租车服务(如优步或奥拉)时,他们也会在我尝试预订出租车时检测到我的位置,并建议当时附近可用的出租车

  • 问题: 如何找到最近的餐馆和出租车?他们实际使用的具体算法是什么?因为两种情况都不同,搜索数据在一种情况下是静态的,而在另一种情况下是不断变化的

    我对这个问题的看法:

  • 在做了一些关于这个主题的头脑风暴后,我知道,由于餐厅是固定的实体,我们可以将它们映射到KD树上(KD树允许存储空间索引)。根据客户的位置,我们可以在KD树上进行搜索,以找到附近的一组餐厅。KD树的创建需要O(n)个时间,搜索需要O(logn)个时间,n是树中n个节点的数量。这个方法对我来说已经足够好了,因为我不知道还有比这个更好的方法,我仍然在寻找答案

  • 在出租车服务的情况下,出租车的位置不是静止的(与餐厅服务不同)。因此,为每一个改变的出租车位置创建KD树似乎是一项开销。考虑到出租车的当前位置,我如何找到离我最近的5辆出租车?CAB实际使用哪种算法

  • 任何见解都将受到高度赞赏。


    注:我还遇到了K最近邻搜索算法,它再次导致KD树。

    存在一种称为2D动态K-D树解决方案的数据结构。但在实践中,真正的实现可能不涉及繁重的数据结构。您可能会想到这样一种更简单的方法,它可能会比动态k-D树更好:

  • 将地图划分为矩形网格
  • 当cab更改其位置(post请求包含GPS坐标)时,检查其是否仍在矩形中,否则更改矩形的内部信息
  • 当用户想要找到最近的cab时,只需在网格中找到它的矩形,然后通过穷举搜索找到最近的一个
  • 你可能会想“为什么?”。实际上,在上述简单的方法中,添加并发和并行会更容易,而修改k-d树可能会非常困难