2D空间中的视线遮挡判断

netfairy 2005-07-26 10:54:16
地图用二维数组表示,0为无障碍,1为有障碍.
给出两个点(x1, y1)(x2, y2),如果要判断这两个点之间是否有障碍遮挡的话,一般的做法的时间复杂度都至少是O(n),需要判断两点连线上的所有格子.
想通过预处理的方法,将时间复杂度降低到O(1),因此提出了以下方法:
每个格子上标记一个数值,如果给出的两点上的数值差的范围在[-n, n]范围内,则认为他们之间没有障碍.现在的问题是如果用一个数值去标记这些格子.
问题1:是否存在这样的一系列数值可以满足这个要求?即解的存在性.
问题2:遍历标记求解的收敛效率是否和n的大小有关?
问题3:我觉得应该有类似的问题存在,是否有前人的研究结果?如能告知,不胜感激!
...全文
208 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
netfairy 2005-07-30
  • 打赏
  • 举报
回复
这个方案已经被俺否决掉了
单一的一个数值,应该不能表示1对多的关系,如果扩展到两个数值,不知道行不行,但是问题更加复杂了.
至于为什么要千方百计的把原本只是O(n)的方法降低到O(1),是因为外面还有两层循环-_-b
最后采用的方案是这样的:因为视野范围有限,限定在32格之内
在格子上增加一个5bit的变量,表示没有障碍的最大范围.
我觉得这是最佳的时空解决方案了.
zzwu 2005-07-28
  • 打赏
  • 举报
回复
问题1:是否存在这样的一系列数值可以满足这个要求?即解的存在性.
[答]存在

问题2:遍历标记求解的收敛效率是否和n的大小有关?
[答]有关

问题3:我觉得应该有类似的问题存在,是否有前人的研究结果?如能告知,不胜感激!
[答]肯定有前人的研究结果.
网上就应该可以找到,我想!
netfairy 2005-07-27
  • 打赏
  • 举报
回复
UP
arrowcy 2005-07-27
  • 打赏
  • 举报
回复
相当于实现把所有点是否直通计算出来,
如果以后要频繁调用的话,就可以节省很多时间

所以还是有一定的意义的
lishengyu 2005-07-27
  • 打赏
  • 举报
回复
没意义

这些数值
就是用O(n)插索得来的

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧