关于周边搜索的计算问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
marshluca
V2EX    数学

关于周边搜索的计算问题

  •  
  •   marshluca 2010-11-11 10:23:41 +08:00 7260 次点击
    这是一个创建于 5447 天前的主题,其中的信息可能已经有所发展或是发生改变。
    问题背景:地球上有很多形形色色的点,而这些所有的点也近似上构成了这个地球集R

    现在的智能手机都具备定位功能 (通过GPS,蜂窝,基站等),获取经纬度,于是可以支持周边搜索。

    而现在很多实际周边搜索都是基于这个地球集R计算的,而存在的问题是:每搜索一次,都要从地球集R出发,找出周边的点,这样,当搜索比较频繁时,不属于周边的那些点都会被重复计算,带来了不必要的查询冗余,而且效率不是很高。

    如果可以把这个地球集,提前按区域切分成若干个相同的面积,每一块贴上范围索引,映射成字典。

    这样在每次搜索的时候,就可以直接去搜索这个范围索引所在的集合,找到了对应的范围索引,就找到了对应的区域块,也即是这个点的周边区域。

    现在的问题是:

    对于这么一个庞大的地球集R,如何选择切分形状(面积提前指定,比方100平方公里),才能保证:

    1.每一个点都会有象跟它对应
    2.切分的区域之间交集最小,以避免数据重复查询。(可能会存在一对多,也就是一个点,被切到周边的多个区域里去了)
    3 条回复    1970-01-01 08:00:00 +08:00
    marshluca
        1
    marshluca  
    OP
       2010-11-11 10:25:58 +08:00
    v2ex的geekers们,有没什么好的思路
    darkovic
        2
    darkovic  
       2010-11-11 12:48:55 +08:00
    geekers们...
    lianghai
        3
    lianghai  
       2010-11-11 20:55:29 +08:00
    “geekers”这说法好非主流……

    算法的事情好晦涩……对“很多实际周边搜索都是基于这个地球集R计算的”感到很惊讶。
    我胡乱插嘴一下:不能直接按照点的经纬来分解集合吗?比如按照经纬度的高位排序之后不就可以很自然地把点分成一组一组了么……然后查到经纬度接近的组就好了。忽略我的胡扯……
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     910 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 20:04 PVG 04:04 LAX 13:04 JFK 16:04
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86