回溯法排序树怎么画_kd tree(k-dimensional树的简称)
kd tree建立
- 计算各个维度方差最大的那一个。方差大说明沿该轴方向上的数据分散的越开。下图所示。
- 选择该特征的中位数作为分割点,小于该数的为左子树,大于的为右子树。这里用中位数是为了让左子树和右子树的数据量一直,便于二分查找。
- 然后用上述方法进行判断其他维度数据,直到所有数据都位于节点上为止。
kd树搜索过程:
我们来查找点(2.1,3.1),在(7,2)点测试到达(5,4),在(5,4)点测试到达(2,3),然后search_path中的结点为<(7,2), (5,4), (2,3)>,从search_path中取出(2,3)作为当前最佳结点nearest, dist为0.141;
然后回溯至(5,4),以(2.1,3.1)为圆心,以dist=0.141为半径画一个圆,并不和超平面y=4相交,如下图,所以不必跳到结点(5,4)的右子空间去搜索,因为右子空间中不可能有更近样本点了。
于是在回溯至(7,2),同理,以(2.1,3.1)为圆心,以dist=0.141为半径画一个圆并不和超平面x=7相交,所以也不用跳到结点(7,2)的右子空间去搜索。
高维数据:
kd树在高维空间中,效率会大幅下降。一般的准则是:在k维情况下,数据点数目N应当远远大于2^k次方。随着维度K的增大,与Q的超球面相交的超矩形(子树分支所在的区域)就会增加,这就意味着需要回溯判断的树分支就会更多,从而算法的查找效率便会下降很大。注:可以通过一定的方法来限制回溯的次数,但是相应的降低精度。
代码:
from sklearn.neighbors import KDTreeimport numpy as np
from sklearn.neighbors import KDTreenp.random.seed(0)
X = np.array([[2, 3], [5, 4], [9, 6], [4, 7], [8, 1], [7, 2]])tree = KDTree(X, leaf_size=2)
dist, ind = tree.query(X[:1], k=3)print(dist) # 3个最近的距离
print(ind) # 3个最近的索引
print(X[ind]) # 3个最近的点
参考
kd-tree_百度百科baike.baidu.com
图像检索:向量索引yongyuan.name
k-d tree算法的研究-UnderTheHood-51CTO博客blog.51cto.com
回溯法排序树怎么画_kd tree(k-dimensional树的简称)相关推荐
- kd树 python实现_KD Tree的原理及Python实现
提到KD-Tree相信大家应该都不会觉得陌生(不陌生你点进来干嘛[捂脸]),大名鼎鼎的KNN算法就用到了KD-Tree.本文就KD-Tree的基本原理进行讲解,并手把手.肩并肩地带您实现这一算法. 完 ...
- python找零钱问题_Python基于回溯法子集树模板解决找零问题示例
本文实例讲述了Python基于回溯法子集树模板解决找零问题.分享给大家供大家参考,具体如下: 问题 有面额10元.5元.2元.1元的硬币,数量分别为3个.5个.7个.12个.现在需要给顾客找零16元, ...
- python棋盘放米问题_Python基于回溯法子集树模板解决马踏棋盘问题示例
本文实例讲述了Python基于回溯法子集树模板解决马踏棋盘问题.分享给大家供大家参考,具体如下: 问题 将马放到国际象棋的8*8棋盘board上的某个方格中,马按走棋规则进行移动,走遍棋盘上的64个方 ...
- 消消乐实验回溯法(深大算法实验3)报告+代码
实验代码 + 报告资源: 链接: https://pan.baidu.com/s/1CuuB07rRFh7vGQnGpud_vg 提取码: ccuq 目录 写在前面 实验要求 求解问题的算法原理描述 ...
- 【算法导论07】回溯法-旅行售货员问题
07回溯法-旅行售货员问题 问题描述: 已知有m个城市,城市之间由n条不同长度的道路相连.一个售货员从一座城市出发,途径所有城市,并最终回到原点,设计算法计算售货员所走的最短路径结点. 问题分析: 从 ...
- 回溯法采用的搜索策略_下列那种函数是回溯法中为避免无效搜索采取的策略( )_学小易找答案...
[填空题]图示刚架,单元编号.结点编号和结点位移编号如图所示,则单元 3的单元定位向量为 _________ .提示:写成 [ , , , , ,]T的形式 [单选题]下列测量仪器中,最适宜用于多点水 ...
- 【回溯法】机器零件加工-最优加工顺序
题目 有n个机器零件{J1,J2,-,Jn},每个零件必须先由机器1处理,再由机器2处理.零件Ji需要机器1,机器2的处理时间为t(1i),t(2i).如何安排零件加工顺序,使第一个零件从机器1上加工 ...
- 【回溯法】01 - 回溯法的算法框架
回溯法以深度优先策略搜索解空间树. 1. 用回溯法解题时,要明确定义问题的解空间树. 2. 通常将解空间树组织成树或图的形式. 回溯法求解问题的所有解时,要回溯到根,且根节点的所有子树都已被搜索到才结 ...
- 八皇后问题(回溯法)C语言求解
方法一: //N_Queen #include<iostream> using namespace std; #define N 100 //定义最多求解100皇后问题 int x[N]; ...
最新文章
- 1000+个常用的Linux命令!看完通关!随手玩Linux!
- 机器人会模仿人类微笑了,但我总觉得这笑容……
- php sql server配置文件路径,云服务器初始化 第六章:更改MySQL数据文件存放路径...
- 程序员羽化之路--假如需要一百万个对象
- 每日一题(36)—— 什么是预编译 , 何时需要预编译?
- javascript官方文档_基于Javascript编写的开源Markdown和HTML相互转换器——showdown
- js 异步执行_JS Asynchronous — JS 异步编程极简史
- 亮剑:PHP,我的未来不是梦(6)
- 用vs2008编写和调试linux程序 ----VisualGDB 使用教程
- 2021年山东省职业院校技能大赛中职组”网络安全“正式赛题
- 用命令设置 ip 地址
- HTML中的空格符号( nbsp; ensp; emsp; )介绍以及中文对齐方式
- 安旭生物科创板上市:曾遭弃购1400万元,凌世生夫妇控制60%股份
- CodeForces 1437F Emotional Fishermen(计数dp)
- 通过PC发送手机短信
- 微信跑腿小程序怎么做
- 云服务器1M带宽是上传吗,云主机1m带宽能干嘛?
- python123 io平台-Java Review(三十六、IO)
- 首迷防脱小课堂:避免脱发的八种方法
- SAP FICO全解析之-定义国家代码