我正在使用CUDA实现凸包的分治方法。这是我的方法:
自底向上:
你能告诉我如何改进它或提供任何替代的更好的并行凸包算法吗(如果我能获得Graham扫描的并行版本的算法将会很棒)?
- 创建一个列表来存储凸壳;
- curSize = 输入的大小(所有点);
- 对于i:1到log N
- 开始
- curSize = curSize / 2;
- 在列表中取出每2个相邻的凸壳,并将它们合并成更大的凸壳(使用标准的上下公切线方法进行分治凸壳),在当前尺寸的线程中执行
- //最初,它将列表中的每两个相邻点合并成一个凸壳,然后在下一次迭代中,将大小为2的凸壳合并成更大的凸壳等等......最终,列表将有一个点列表,表示凸壳
- 结束
你能告诉我如何改进它或提供任何替代的更好的并行凸包算法吗(如果我能获得Graham扫描的并行版本的算法将会很棒)?