我在四叉树的路径查找上做了一个项目,我想提高它的性能。似乎使用tesseral算术确定节点相邻性(根据this page,由不列颠哥伦比亚大学地理系提供)比我目前正在使用的蛮力方法要快得多(我正在检查对于共享边缘,这对于静态四叉树来说效果很好,但是如果地图发生变化,则会产生过多的开销)。
我或多或少地了解了“邻接算法”部分的内容,但我不确定如何开始。我主要是对C#感兴趣,但是如果已经有了一些我可以研究的使用细分算法的资料,而无论使用哪种语言,那就太好了。否则,有人能给我一些处理加/减进位的提示吗?
最佳答案
我认为,处理镶嵌算术的最简单方法是对数字进行“位解压缩”,正常执行任意数量的算术运算,并在需要镶嵌形式时将其“位压缩”回去:
z = bit_zip(bit_unzip(x) + bit_unzip(y));
(此示例仅适用于
unsigned
。对于有符号整数,请将每个数字解压缩为两个变量,然后分别对这两个部分进行常规算术运算)。您可以在“ Matters Computational”的第1.15章“逐位压缩”中找到“ bit-unzip”和“ bit-zip”的快速实现。
关于bit-manipulation - Tesseral算术/四叉树,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9339395/