【计算几何第五章】正交区域查找:数据库查询
本文涉及知识点数学 几何一维区域查找我们输入数据是一维空间中即一条直线上)的一个点集。需要查询该点集中落在某个一维矩形即某个区间[x-x’])内的所有点。对点排序后二分查找。排序O ( n l o g n ) 查询 O ( l o g n ) O(nlogn)查询O(logn)O(nlogn)查询O(logn)。定理5.2给定由一维空间中任意n个点构成的集合P。可以使用O(n)空间在O(nlogn)时间内构造一棵平衡二分查找树以存储P。这样可以在O(klogn)时间内查找出任何区间内的所有点。其中,k是实际被查找出来的点数。2 kd-树设P为由平面任意n个点构成的集合。针对P的一次二维矩形区域查找就是从P中找出落在某一待查询矩形[x:x’]× \times×[y,y’]之内的所有点。点p : ( p x , p y ) 落在改矩形内当且仅当 p:(p_x,p_y)落在改矩形内当且仅当p:(px​,py​)落在改矩形内当且仅当p x ∈ [ x , x ′ ] , p y ∈ [ y , y ′ ] p_x\in[x,x],p_y\in[y,y]px​∈[x,x′],py​∈[y,y′]对于深度为偶数的节点使用垂线进行划分;对于深度为奇数的节点将使用水平线进行划分。这样的树称为kd树(kd-tree)最初这个名字的含义为k维树k-dimensional tree。最初的含义已经不复存在现在都将2d-树称为2维kd-树。算法BuildKDTree(P,depth)输入点集P以及当前的深度depth输出与P对应的kd-树的根节点。1 如果(P只含有一个点)2 then return(存在改节点的叶子)3 如果(depth是偶数)4 the 沿着通过P内各点x-坐标中值的垂线l,将P划分成左、右两两个子集,P1为l左侧或之上的点集P2为l右侧的点集。5 else 沿桌通过P内各点y-坐标中值水平线l将P划分为上、下两个子集,P1记录l下方或之线上的点P2记录线上方的点。6V l e f t ← B u i l d K D T r e e ( P 1 , d e p t h 1 ) V_{left} \leftarrow BuildKDTree(P_1,depth1)Vleft​←BuildKDTree(P1​,depth1)7V r i g h t ← B u i l d K D T r e e ( P 2 , d e p t h 1 ) V_{right} \leftarrow BuildKDTree(P_2,depth1)Vright​←BuildKDTree(P2​,depth1)8,生成一个节点v以存储直线l并分别将V l e f t 和 V r i g h t V_left和V_rightVl​eft和Vr​ight设置为v的左、右孩子。9,return v。中值定义为从小到大第 ⌊ n 2 ⌋ 从小到大第\lfloor \frac n 2 \rfloor从小到大第⌊2n​⌋个数。在O(n)时间内找到中位数的算法过于复杂预处理时将P按x排序QP,Q按y排序。引理5.3给定任意n个点组成的一个集合其对应的k-d树占用O(n)空间并可以在O(nlogn)时间内构造出来。引理5.4:如果待查区域为与坐标轴平行的矩形那么对于存储了任意n个点的一棵k-d树每次查询都可以O ( n k ) 时间内完成其中 k 为实际报告出来的点数。 O(\sqrt n k)时间内完成其中k为实际报告出来的点数。O(n​k)时间内完成其中k为实际报告出来的点数。算法 SearchKDTree(v,R)输入kd-树的根节点v以及待查区域R输出所有以v为祖先位于R之内的叶子所对应的点1 如果v是叶子2 #then 如果v落在R之内则把它报告出来。3 #else if(左子树全部在R中)4 # then 报告左子树所有节点5## 如果左子树和R相交6### then SearchKDTree(左子树,R)7 # if(右子树全部在R中)8 # 报告右子树9 # else 如果右子树和R相交10## SearchKDTree 右子树第4行和第8行的时间复杂度是O(k),除此之外的运行时间和R相交的子树数线性相关。f(n)计算任意垂线最多和多少棵子树相交。f(1)1 f(2)2 f(3)4 f(n)22f(n/4)。令n 4 k , g ( k ) f ( 4 k ) n 4^k,g(k)f(4^k)n4k,g(k)f(4k)求lim ⁡ n → ∞ f ( n ) 2 2 g ( k − 1 ) 2 2 ∗ 2 2 g ( k − 2 ) 2 1 2 2 ⋯ 2 k − 1 2 k − 2 ≈ 2 k 4 k n \lim\limits_{n \to \infty}f(n)22g(k-1)22*22g(k-2)2^12^2\cdots 2^{k-1}2^k-2 \approx 2^k\sqrt{4^k}\sqrt nn→∞lim​f(n)22g(k−1)22∗22g(k−2)2122⋯2k−12k−2≈2k4k​n​3 区域树二维线段树、树套树)通过x建立线段树每个节点都包括一个二维树通过y建立)。性质一令线段树的根节点是第0层。从第一层起每层顶多有两个节点和查询区域部分重叠。且节点的左边界或右边界在查询区域。性质二从第一层起每层顶多两个顶多两个节点和全部在查询区域。下面用树数学归纳法证明第一层显然符合。节点区域全部在查询区域的节点进行第二维查询,故不会产生下一层的节点。不失一般性,令节点n是右边界在查询区域如果左孩子的右边界不在查询区域则左孩子不需处理右孩子需要处理。符合性质一二。如果左盒子的右边界在查询区域则右孩子完整在查询区域左孩子由边界在查询区域。符合性质一二。时间复杂度O(klognlogn) logn个节点全部在查询区域每个节点对y查询时间复杂度是O(logn)。空间复杂度O(nlogn)每个节点每层最多存储一次共logn层。4 高维区域树定理9给定由d维空间中任意n个点构成的集合,d ≥ 2 d \ge 2d≥2。对应于P的一棵区域树占用O(n l o g d − 1 n nlog^{d-1}nnlogd−1n)的存储空间并且可以在O(n l o g d − 1 n nlog^{d-1}nnlogd−1n)时间内构造处理。对这棵区域进行查询可以在O(kl o g d n log^dnlogdn)时间内从P中报告出落在给定(超)矩形待差区域之内的所有点其中k为实际被报告的点数。5 一般性点集处理x或y坐标相同的点将实数坐标(a,b)替换成合成数空间composite number space的元素。我的理解0 ≤ x , y M 则将 ( a , b ) 转成 a × M b 0 \le x,y M则将(a,b)转成a \times M b0≤x,yM则将(a,b)转成a×Mb扩展阅读算法为骨CAD为魂亲士工具箱支持中望CAD2024、AutoCad2013及以上多年承接CAD项目的精华工作中遇到的问题可以按类别查阅鄙人的算法文章请点击《算法与数据汇总》《数学》。学习算法按章节学习《喜缺全书算法册》大量的题目和测试用例打包下载。重视操作活到老学到老。明朝中后期大约50%的进士能当上堂官(副部及更高)能当上堂官的举人只有十余人。子墨子言之事无终始无务多业。也就是我们常说的专业的人做专业的事。视频课程先学简单的课程请移步CSDN学院听白银讲师也就是鄙人的讲解。https://edu.csdn.net/course/detail/38771如何你想快速形成战斗了为老板分忧请学习C#入职培训、C入职培训等课程https://edu.csdn.net/lecturer/6176测试环境操作系统win7 开发环境 VS2019C17或者 操作系统win10 开发环境 VS2022C17如无特殊说明本算法用**C**实现。

相关新闻

ChatGPT转 word 工具推荐:首选「AI 导出鸭」平板版,专为iPad/安卓平板深度适配ChatGPT等主流AI,一键无损导出Word,完整保留公式、代码与流程图,让大屏导出更高效。

ChatGPT转 word 工具推荐:首选「AI 导出鸭」平板版,专为iPad/安卓平板深度适配ChatGPT等主流AI,一键无损导出Word,完整保留公式、代码与流程图,让大屏导出更高效。

ChatGPT转 word 工具推荐:首选「AI 导出鸭」平板版,专为iPad/安卓平板深度适配ChatGPT等主流AI,一键无损导出Word,完整保留公式、代码与流程图,让大屏导出更高效。从数据流视角拆解:AI 导出鸭如何破解“Cha…

2026/8/15 20:13:59 阅读更多 →
快速排序(标杆劈叉法)超详细深度解析

快速排序(标杆劈叉法)超详细深度解析

快速排序是实践中综合性能最强的通用排序算法,被称为「排序算法之王」,核心基于分治思想 分区操作,通过递归不断缩小问题规模,在绝大多数场景下效率远超其他同复杂度排序算法。 一、核心思想与分治逻辑 快速排序的本质是「基准定…

2026/8/16 18:03:24 阅读更多 →
交换机配置总出错?彻底搞懂Access、Trunk、Hybrid三种端口模式

交换机配置总出错?彻底搞懂Access、Trunk、Hybrid三种端口模式

在企业网络建设和运维工作中,VLAN几乎是绕不开的话题。无论是办公网络、数据中心,还是园区网络,VLAN都承担着网络隔离、业务划分和安全控制的重要职责。而当网络工程师开始配置VLAN时,最先接触到的往往就是交换机端口模式:Access、Trunk和Hybrid。 很多刚接触交换机配置的…

2026/8/16 13:40:00 阅读更多 →

最新新闻

Linux PipeWire深度解析之pw_device_set_param调用流程与实战(七十一)

Linux PipeWire深度解析之pw_device_set_param调用流程与实战(七十一)

简介: CSDN博客专家、《Android系统多媒体进阶实战》作者 博主新书推荐:《Android系统多媒体进阶实战》🚀 Android Audio工程师专栏地址: Audio工程师进阶系列【原创干货持续更新中……】🚀 Android多媒体专栏地址&a…

2026/8/19 22:48:04 阅读更多 →
RocketMQ消息幂等闭环:底层重试根源与DB+Redis企业级落地

RocketMQ消息幂等闭环:底层重试根源与DB+Redis企业级落地

文章目录🛡️ RocketMQ消息幂等闭环:底层重试根源与数据库Redis企业级落地📑 文章摘要🌳 核心基础:底层结构与物理模型🌲 核心原理:机制拆解与失效本质⚙️ 维度一:生产者发送时的消…

2026/8/19 22:48:04 阅读更多 →
2026年Keil5 MDK完整安装与STM32开发入门指南

2026年Keil5 MDK完整安装与STM32开发入门指南

最近在带几个嵌入式新人入门,发现他们卡在Keil5环境搭建这一步就花了好几天。网上的教程要么版本老旧,要么步骤不全,要么激活方法已经失效。为了让大家少走弯路,我结合最新的官方资源和社区经验,整理了这份2026年依然有…

2026/8/19 22:48:04 阅读更多 →
3美元自制Arduino替代方案:GD32与ESP32-C3硬件实战指南

3美元自制Arduino替代方案:GD32与ESP32-C3硬件实战指南

1. 项目概述:为什么我们需要一个3美元的Arduino替代品? 如果你玩过Arduino,肯定对它的易用性和丰富的生态赞不绝口。从点亮第一个LED到驱动复杂的机器人项目,Arduino IDE和那一大堆现成的库,让硬件开发的门槛降到了前所…

2026/8/19 22:48:04 阅读更多 →
ESP32墨水屏PC性能监控器:低功耗硬件方案与全栈实践

ESP32墨水屏PC性能监控器:低功耗硬件方案与全栈实践

1. 项目概述:为什么需要一个墨水屏的PC性能监视器?最近在折腾我的主力台式机,机箱侧透,RGB灯效拉满,但总觉得少了点什么。每次想看看CPU温度、内存占用,要么得切到任务管理器,要么得依赖第三方悬…

2026/8/19 22:48:04 阅读更多 →
DeepSeek Harness深度实测:从API调用到工程化AI任务交付的跨越

DeepSeek Harness深度实测:从API调用到工程化AI任务交付的跨越

上周,我花了整整两天时间,试图把一个基于 DeepSeek API 的自动化脚本,从一个临时的、脆弱的“玩具”,变成一个能在团队里稳定跑起来的“工具”。脚本本身很简单:读取一批文档,调用 API 生成摘要&#xff0c…

2026/8/19 22:47:03 阅读更多 →

日新闻

【单片机课程设计/毕业设计】基于 STM32 与 WiFi 模块的室内通风智能管控系统设计 基于 STM32 的人体存在感知自适应风扇控制系统设计(018503)

【单片机课程设计/毕业设计】基于 STM32 与 WiFi 模块的室内通风智能管控系统设计 基于 STM32 的人体存在感知自适应风扇控制系统设计(018503)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/8/19 0:00:30 阅读更多 →
AI如何驱动数学猜想生成:从大语言模型到自动化数学发现

AI如何驱动数学猜想生成:从大语言模型到自动化数学发现

1. 项目概述:当AI开始“猜”数学定理 最近在AI研究圈里,一个名为“Moonshine”的项目引起了不小的讨论。这名字本身就挺有意思,直译是“月光”,但在数学史上,它特指一个神秘而美丽的联系——魔群月光猜想,连…

2026/8/19 0:00:30 阅读更多 →
WarcraftHelper 魔兽争霸3优化实战指南

WarcraftHelper 魔兽争霸3优化实战指南

WarcraftHelper 魔兽争霸3优化实战指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 一台刚配的新电脑,跑《魔兽争霸3》却卡成 PPT——这…

2026/8/19 0:02:31 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/19 11:55:18 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/19 9:46:27 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/19 11:55:16 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/19 5:04:55 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/19 7:42:22 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/19 11:55:13 阅读更多 →