Presentation is loading. Please wait.

Presentation is loading. Please wait.

appengine ja night beer talk あらかわ

Similar presentations


Presentation on theme: "appengine ja night beer talk あらかわ"— Presentation transcript:

1 appengine ja night beer talk あらかわ (@ashigeru)
近くを探す? appengine ja night beer talk あらかわ

2 appengine ja night beer talk - @ashigeru
テーマ 座標(x, y)に近い点を探す appengine ja night beer talk

3 appengine ja night beer talk - @ashigeru
1次元のレンジスキャン 1つの値を大小関係で並べて順に取り出すだけ 開始地点は選べる (x, y)とかどう見ても2次元座標 appengine ja night beer talk

4 appengine ja night beer talk - @ashigeru
方法1: 離散化 座標を一定の幅で区切ってブロックにする 付近のブロックに含まれているか調べる appengine ja night beer talk

5 appengine ja night beer talk - @ashigeru
離散化の問題点 濃度によってはダメ 少ない→見つからない, 多い→見つかりすぎる appengine ja night beer talk

6 appengine ja night beer talk - @ashigeru
方法2: インメモリフィルタ 2次元目はインメモリで処理する 1次元目は普通にデータストアでやる appengine ja night beer talk

7 appengine ja night beer talk - @ashigeru
インメモリフィルタの問題点 個数によってはダメ 1次元目の結果が爆発しているかも appengine ja night beer talk

8 appengine ja night beer talk - @ashigeru
空間充填曲線 (x, y)から遠くに向かってスキャンしたい でも1次元のレンジスキャンしかできない 空間を1本の線で埋め尽くせばスキャンできる 空間充填曲線 (Space Filling Curve) appengine ja night beer talk

9 appengine ja night beer talk - @ashigeru
Z曲線 (1) 平面の4点をZで結んでブロックにする むしろN appengine ja night beer talk

10 appengine ja night beer talk - @ashigeru
Z曲線 (2) ブロック4つをさらにZで結んでブロックにする appengine ja night beer talk

11 appengine ja night beer talk - @ashigeru
Z曲線 (3) これを繰り返すと平面状のすべての点を一筆書きできる appengine ja night beer talk

12 appengine ja night beer talk - @ashigeru
空間充填曲線のスキャン (1) ある点から前後にスキャンする ただし、Z曲線の上でスキャン appengine ja night beer talk

13 appengine ja night beer talk - @ashigeru
空間充填曲線のスキャン (2) 最初のZになければ、ひとつ大きなZで探す appengine ja night beer talk

14 appengine ja night beer talk - @ashigeru
空間充填曲線のスキャン (3) 徐々にZを大きくしていけばいつか見つかる 小→大で探すので、近い順に見つかる appengine ja night beer talk

15 appengine ja night beer talk - @ashigeru
Z曲線の作り方 (1) それぞれの次元の値を2進数で書く appengine ja night beer talk

16 appengine ja night beer talk - @ashigeru
Z曲線の作り方 (2) 1ビットずつ取り出して並べ替える appengine ja night beer talk

17 appengine ja night beer talk - @ashigeru
Z曲線の作り方 (3) これだけ appengine ja night beer talk

18 appengine ja night beer talk - @ashigeru
多次元空間への拡張 平面じゃなくて4次元とかでも同じ 4次元の得点空間で、近くの点を探す ≒ 得点が近い人を探す appengine ja night beer talk

19 appengine ja night beer talk - @ashigeru
Z曲線の問題点 アライメントに左右される 隣のZが意外と遠い なので「一番近いものを探す」というのは難しい 超立方体の構造で探す 1次元だけ極端に値が違ったりすると非常に遠い 次元数が多すぎると使いにくい appengine ja night beer talk


Download ppt "appengine ja night beer talk あらかわ"

Similar presentations


Ads by Google