八叉树

article/2025/10/28 23:33:31

http://hi.baidu.com/onlywater/blog/item/905c5e162ed18f4021a4e9c1.html

一、八叉树基本原理:

   用八叉树来表示三维形体,并研究这种表示下的各种操作以及应用,是进入80年代后开展起来的。这种方法,既可以看成是四叉树方法在三维空间的推广也可以认为是三维体素阵列表示形体方法的一种改进

   八叉树的逻辑结构如下:

   假设要表示的形体V可以放在一个充分大的正方体C中,C的边长为2n,形体V C,他的八叉树可以用以下的递归方法来定义:
   八叉树的每一个节点与C的一个子立方体对应 ,树根与C本身相对应。如果V=C,那么V的八叉树只有树根。 如果V不等于C,则将C等分为8个子立方体,每个子立方体与树根的一个子节点相对应。只要某个子立方体不是完全空白,或者完全为V所占据,就要被八等分,从而对应的节点也就有了八个子节点。这样的递归判断,分割一直要进行到节点所对应的立方体或是完全空吧,或是完全为V所占据,或是其大小已经是预先定义的体素大小,并且对他与V之交左一定的“舍入”,使体素或认为是空白的,或认为是V占据的。
在这里插入图片描述
         在这里插入图片描述
如果所生成的八叉树的节点可分为三类:

   灰节点: 它对应的立方体部分的为V所占据;
   白节点: 它对应的立方体没有V的内容;
   黑节点: 它对应的立方体全部为V所占据。

  后两类又称为叶节点。形体V关于C的八叉树的逻辑结构是这样的:他是一棵树,其上的节点要么是叶节点,要么是有八个子节点的灰节点。根节点与C相对应,其他节点与C的某个子立方体相对应。

  根据不同的存储方式,八叉树也可以分别称为常规的、线性的、一对八的八叉树等。

二、八叉树的存储结构:

  八叉树有三种不同的存贮结构,分别是规则方式线性方式以及一对八方式。相应的八叉树也分别称为规则八叉树、线性八叉树以及一对八式八叉树。不同的存贮结构的空间利用率及运算操作的方便性是不同的。分析表明,一对八式八叉树优点更多一些。

1. 规则八叉树:

  规则八叉树的存储结构用一个有九个字段的记录来表示树中的每个节点。其中一个字段来描述该节点的特性(再目前假定下,只要描述他是灰,白,黑三类节点中的哪一类就行。)其余八个字段分别用来存放指向其八个子节点的指针。 这是最普遍使用的表示树形结构的存储结构的方式。

  规则八叉树缺陷较多,最大的问题是指针占用了大量的空间。假定每个指针要用两个字节表示,而结点的描述用一个字节,那么存放指针要占总的存贮量的94%。因此,这种方法虽然十分自然,容易掌握,但在存贮空间的使用率方面不很理想。

2.线性八叉树:

  线性八叉树注重考虑如何提高空间利用率。用某一预先确定的次序遍历八叉树(例如以深度第一的方式),将八叉树转换为一个线性表,表的每个元素与一个节点相对应。对于节点的描述可以相对丰富一点,一如可以用适当的方式来说明他是否是叶节点,如果不是叶节点的话,还可用其八个子节点值的平均值作为非叶节点的值。这样,可以再内存中以紧凑的方式来表示线性表,可以不用指针或者仅用一个指针即可。
在这里插入图片描述
线性八叉树不仅节省存储空间,对某些运算也较为方便。但为此的代价是丧失了一定的灵活性。

3.一对八式八叉树

  一个非叶结点有八个子结点,为了确定起见,将它们分别标记为0,1,2,3,4,5,6,7。从上面的介绍可以看到,如果一个记录与一个结点相对应,那么在这个记录中描述的是这个结点的八个子结点的特性值。而指针给出的则是该八个子结点所对应记录的存放处,而且还隐含地假定了这些子结点记录存放的次序。也就是说,即使某个记录是不必要的(例如,该结点已是叶结点),那么相应的存贮位置也必须空闲在那里(图2-5-3),以保证不会错误地存取到其它同辈结点的记录。这样当然会有一定的浪费,除非它是完全的八叉树,即所有的叶结点均在同一层次出现,而在该层次之上的所有层中的结点均为非叶结点。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/cnVoD6e5.shtml

相关文章

Octree(八叉树)

1. 算法原理 八叉树(Octree)是一种用于描述三维空间的树状数据结构。八叉树的每个节点表示一个正方体的体积元素,每个节点有八个子节点,将八个子节点所表示的体积元素加在一起就等于父节点的体积。八叉树是四叉树在三维空间上的扩…

【PCL自学:ocTree】八叉树(octree)的原理及应用案例(点云压缩,搜索,空间变化)

PCL中八叉树(octree)的原理及应用案例 一、什么是八叉树ocTree?1.八叉树原理 二、八叉树应用案例1.点云压缩2.用八叉树进行空间划分和搜索操作3.无序点云数据的空间变化检测 一、什么是八叉树ocTree? 1.八叉树原理 上世纪80年代&…

十进制小数化为二进制小数的方法是什么_十进制转成二进制的两种方式

第一种:用2整除的方式。 用2整除十进制整数,得到一个商和余数;再用2去除商,又会得到一个商和余数,如此重复,直到商为小于1时为止,然后把先得到余数作为二进制数的低位有效位,后得到的…

Python 利用内置函数把二进制小数转换为十进制

如果需要把一个二进制整数转换为十进制整数,只需要简单的一行: int(1101,2) 但如果有一个二进制小数的话,就需要自己实现一个函数了。 不过,许多人是这样写的:(图片取自这里) 可是,由于python本身并不适…

[学习笔记] 二进制小数表示方法

文章目录 科学计数法二进制推广计算机中的小数EXCESS表示系统特殊情况举例(float)普通情况最大正实数普通情况最小负实数普通情况最小正实数特殊情况最大正实数 科学计数法 科学计数法想必大家都很熟悉了,往往通过如下形式表示一个实数&…

十进制小数化为二进制小数的方法是什么_二进制的转换

二进制是在计算机中常用的一种进制数,其数据用0和1两个数码来表示数据。我们人类常用的是十进制,那么二进制和十进制之间是有一个转换方法的。 二进制转换十进制 一个二进制数转换为十进制数,是比较简单的,其方法就是用每一个位置…

二进制小数的意义

回忆小学学的十进制小数的意义: 15.23这个小数,1是十位,5是个位,2是十分位,3是百分位。这个小数的意义为:,因为最低位为百分位,所以分母是100。 小数末尾加上0或去掉0,小…

浮点数(小数)在计算机中如何用二进制存储?

浮点数在计算机中如何用二进制存储? 前言 前面我有篇博文详解了二进制数,以及如何同二进制数表示整数。但是,计算机处理的不仅仅是整数,还有小数,同样小数在计算机也是用二进制进行存储的,但是&#xff0…

二进制小数的表示

二级制小数分为两大类:1、定点数;2、浮点数。 定点数 定点数: (1)小数点位置固定不变的数。 (2)定点数有定点整数和定点小数。 (定点整数:小数部分为0;定点…

腾讯TDSQL全时态数据库系统论文入选VLDB

当地时间2019年8月26至30日,VLDB 2019会议在美国加利福尼亚召开,腾讯分布式数据库TDSQL与中国人民大学最新联合研究成果被VLDB 2019接收并将通过长文形式发表。VLDB是国际数据管理与数据库领域顶尖的学术会议之一,这是继去年腾讯TDSQL相似度计…

顶会VLDB‘22论文解读:CAE-ENSEMBLE算法

摘要:针对时间序列离群点检测问题,提出了基于CNN-AutoEncoder和集成学习的CAE-ENSEMBLE深度神经网络算法,并通过大量的实验证明CAE-ENSEMBLE算法能有效提高时间序列离群点检测的准确度与效率。 本文分享自华为云社区《VLDB22 CAE-ENSEMBLE论文…

【轨迹压缩】Trajectory Simplification: On Minimizing the Direction-based Error [2015] [VLDB]

一、一个动机 保护方向信息的方向保持轨迹简化(DPTS)已被证明表现良好,而现有关于 DPTS 的研究 要求用户指定一个容错,在某些情况下用户可能不知道如何正确设置(例如,容错只能在未来某个时间知道&#xff…

VLDB 2021 EAB最佳论文:深度解析机器学习的基数估计为何无法实现?

©作者 | 曲昌博单位 | 西蒙菲莎大学近日,IEEE 数据工程新星奖王健楠团队论文《Are We Ready for Learned Cardinality Estimation?》夺得数据库顶会 VLDB 2021 年度的 EA&B 最佳论文奖。 数据库是企业管理和查询数据的复杂软件系统。 近年来随着机器学习以…

Transformers如何处理表格数据?【VLDB2022教程】Transformer表格数据表示:模型和应用...

来源:专知 本文为教程介绍,建议阅读5分钟最近的研究工作通过开发表格数据的神经表示扩展了语言模型。 在过去的几年中,自然语言处理界见证了基于transformer的语言模型(LM)在自由文本的神经表示方面的进展。鉴于关系表中可用知识的重要性&…

openGauss亮相VLDB2020,展示内存优化研究成果

VLDB(Very Large Data Base)作为数据库领域的三大顶级国际会议之一,是面向数据库研究人员,内核开发人员,开发商以及用户的年度国际会议论坛,代表数据库系统领域最杰出的研究和工程进展。在2020年&#xff0…

VLDB 2023 | 北大河图发布分布式训练神器Galvatron,一键实现大模型高效自动并行...

©作者 | 北京大学河图团队 单位 | 北京大学数据与智能实验室 北大河图团队提出了一套面向大模型的自动并行分布式训练系统 Galvatron,相比于现有工作在多样性、复杂性、实用性方面均具有显著优势,论文成果已经被 VLDB 2023 接收。 最近一段时间&…

利用 Map-Reduce 从文件中找到出现频率最高的 10 个 URL(2021 VLDB Summer School Lab0)

这篇博文主要是对 2021 VLDB Summer School Lab0 的一个总结 这个lab与MIT 6.824 的 lab1 相似,个人感觉比MIT 6.824 的 lab1 要稍微简单些,更容易上手。通过这个lab,可以学习到一些 Golang 的基础知识并对分布式系统有一个基础的了解&#…

Flink OLAP 助力 ByteHTAP 亮相数据库顶会 VLDB

复杂查询 QPS 破百,字节跳动 Flink OLAP 助力 ByteHTAP 亮相数据库顶会 VLDB。 2022 年 9 月 5 日至 9 月 9 日,VLDB 2022 在澳大利亚悉尼举行。字节跳动基础架构研究成果《ByteHTAP: ByteDance’s HTAP System with High Data Freshness and Strong Dat…

湖南大学计算机专业硕士研究导师,湖南大学研究生导师李睿科研论文被世界顶级数据库学术会议VLDB刊发...

李睿老师的论文被国际数据库顶级会议Very Large Data Bases接受并发表。 刊发的论文。 日前,以湖南大学信息科学与工程学院计算机科学系研究生导师李睿为第一作者,湖南大学为第一作者单位的科研论文“Fast Range Query Processing with Strong Privacy P…

PM-LSH: A Fast and Accurate LSH Framework for High-Dimensional Approximate NN Search(VLDB)

由于维数灾难的影响,高维空间中的最近邻(NN)搜索本质上是计算开销巨大的。局部敏感哈希(locality-sensitive hashing, LSH)是一种著名的近似神经网络搜索算法,能够以恒定概率在亚线性时间内回答c-近似神经网络(c-ANN)查询。现有的LSH方法主要基于哈希桶建…