CGAL 空间排序算法

本文介绍了CGAL库中用于提高几何算法效率的空间排序算法,包括希尔伯特排序(Hilbert Sorting)和空间排序。希尔伯特排序通过空间填充曲线对点进行排序,保证相邻几何对象的局部性。CGAL提供了2D、3D及更高维度的实现,支持中间和中位数策略。空间排序则通过不断增大尺寸的随机桶结合希尔伯特排序,提供随机性和局部性的平衡。文章还涵盖了算法的实现代码和效果展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

在CGAL中实现的许多几何算法都是增量的,因此它们的速度取决于插入的顺序。而排序算法可以大大提高这类算法的运行时间。其基本原理是沿着空间填充曲线对对象进行排序,以便几何上接近的两个对象在插入顺序上有高概率接近。这样,在插入过程中要查看的部分数据结构可能已经在最近的插入中查看过了。此外,这些排序函数通常会改善增量算法产生的数据结构的内存局部性,有时会导致使用这些数据结构的其他算法的速度加快。

一些算法在随机假设条件下具有良好的复杂度,这与使用任意排序准则对输入进行排序的思想相矛盾。在这种情况下,可以引入一点随机性,从而结合良好的随机复杂性和局部性的良好效果。

1.1Hilbert Sorting(希尔伯特排序)

在二维空间中,我们可以构造一条空间填充曲线,即f([0,1])到单位正方形 [ 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大鱼BIGFISH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值