【发布时间】:2013-02-02 05:38:31
【问题描述】:
想象一个平面,在已知位置有许多点。大多数都聚集在一起,但有些是异常值,并且有很大的区域根本没有点。我有多个客户可以通过矩形视口查看飞机。每个客户的视口可能具有不同的尺寸,并且可以立即移动到平面上的任何位置。客户不知道点的位置;只有服务器可以。当客户端连接时,它会将其视口的大小传达给服务器,并且服务器应该响应一个位置,在该位置该客户端的视口可以看到一个或多个点。客户端访问该位置,从访问这些点收集数据,将该数据发送回服务器,然后请求下一个访问位置。这种情况一直持续到所有点都被至少一个客户访问过为止。
我需要一个高效的算法来选择要访问的位置。一个理想的解决方案将通过在视口位置中包含尽可能多的未访问点、最大限度地减少对点的重复访问以及不访问没有未访问点的位置来最小化客户需要访问的位置数量。你能推荐一个算法吗?
【问题讨论】:
-
这类似于the set covering problem,尽管您有额外的皱纹,即您的集合是通过选择放置视口的位置来确定的,因此获取它们可能的集合列表可能比您需要的更昂贵去做。
-
是的,它很相似,但正如你所提到的,找出所有可能的集合是非常昂贵的......平面上的网格并让客户访问包含任何点的所有经纬网,这应该是相当有效的。