Today, TripAdvisor held a tech talk in Columbia University. The topic is about k-d Tree implemented in TripAdvisor  to efficiently search MASSIVE location tree.

### Problem

Millions of locations, it's tough to perform Nearest Neighbor Search.

### Solution

Using k-d tree to implement location tree.

It's a space-partitioning balanced binary tree. And k is the number of dimension.

### k-d Tree

pseudocode

```function kdtree (list of points pointList, int depth)
{
// Select axis based on depth so that axis cycles through all valid values
var int axis := depth mod k;

// Sort point list and choose median as pivot element
select median by axis from pointList;

// Create node and construct subtrees
var tree_node node;
node.location := median;
node.leftChild := kdtree(points in pointList before median, depth+1);
node.rightChild := kdtree(points in pointList after median, depth+1);
return node;
}```

1. Apple Tree POJ - 3321 dfs序列构造树状数组（好题）

There is an apple tree outside of kaka's house. Every autumn, a lot of apples will grow in the tree. ...

2. Count on a tree（SPOJ COT + 树上第k大 + 主席树 + LCA）

题目链接:https://www.spoj.com/problems/COT/en/ 题目: 题意: 给你一棵有n个节点的树,求节点u到节点v这条链上的第k大. 思路: 我们首先用dfs进行建题目给的 ...

3. AOJ DSL_2_C Range Search (kD Tree)

Range Search (kD Tree) The range search problem consists of a set of attributed records S to determi ...

4. Size Balance Tree（SBT模板整理）

/* * tree[x].left 表示以 x 为节点的左儿子 * tree[x].right 表示以 x 为节点的右儿子 * tree[x].size 表示以 x 为根的节点的个数(大小) */ s ...

5. HDU3333 Turing Tree（线段树）

题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=3333 Description After inventing Turing Tree, 3x ...

6. K-D Tree

这篇随笔是对Wikipedia上k-d tree词条的摘录, 我认为解释得相当生动详细, 是一篇不可多得的好文. Overview A \(k\)-d tree (short for \(k\)-di ...

7. POJ 3321 Apple Tree(树状数组)

Apple Tree Time Limit: 2000MS   Memory Lim ...

8. CF 161D Distance in Tree 树形DP

一棵树,边长都是1,问这棵树有多少点对的距离刚好为k 令tree(i)表示以i为根的子树 dp[i][j][1]:在tree(i)中,经过节点i,长度为j,其中一个端点为i的路径的个数dp[i][j] ...

9. Segment Tree 扫描线 分类： ACM TYPE 2014-08-29 13:08 89人阅读 评论(0) 收藏

#include<iostream> #include<cstdio> #include<algorithm> #define Max 1005 using nam ...

## 随机推荐

1. Ant搭建 一键生成APP技术 平台

1.博客概要 本文详细介绍了当今流行的一键生成APP技术.介绍了这种设计思想的来源,介绍了国内外的研究背景,并介绍了这个技术体系中的一些实现细节,欢迎各路大神们多提意见.一键生成技术,说的通俗点就是, ...

3. mysql存入中文乱码解决方法（windows环境）

项目中要将抓取一些网页内容保存到mysql数据库中,当抓取的内容中包含中文时,在控制台打印出来的中文是正常显示的,但存入数据库表中时,显示乱码.进入mysql命令行,执行以下命令:show varia ...

4. BAT脚本/Dos 改ip地址

BAT脚本/Dos 改ip 经常换地方上网,总改这些很麻烦,直接写三个bat,点一下就换了.需要管理员权限.之前用python的wmi写过,但是没起作用. ip:10.10.41.15 子网掩码:25 ...

5. Ubuntu系统下安装CodeBlocks

本文由荒原之梦原创,原文链接:http://zhaokaifeng.com/?p=616 1 添加CodeBlocks的软件仓库 sudo add-apt-repository ppa:damien- ...

6. LFYZ-OJ ID: 1016 输油管道问题

分析 根据之前的证明,我们已经知道最佳输油管线的y位置就是所有油井y坐标序列的中位数,故解题过程为: 1. 读入n个y数据 2. 对n个y数据进行排序(升序或降序) 3. 求中位数zws 4. 计算输 ...

7. PKU《程序设计》专项课程_递归汉诺塔问题

取自coursera.org上公开课北京大学<C程序设计进阶> 递归调用注意的点 1.关注点放在求解的目标上,递推是,目标放在开头 2.找到第N次和第(N-1)次之间的关系,通项公式 3. ...

8. Springboot配置时间格式

方法一: 可以在apllication.property加入下面配置就可以 #时间戳统一转换 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring ...

9. web.xml中使用web前缀配置无法访问controller

<web:context-param> <web:param-name>contextConfigLocation</web:param-name> <web ...

10. Postman—命令执行脚本及生成报告

前言 前面的应用中,都是在postman图形界面工具里面进行测试,但是有时候我们需要把测试脚本集成到CI平台,或者在非图形界面的系统环境下进行测试,那么我们该如果处理呢 通过newman来执行post ...