Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Bentley-Ottman与原始交叉积交叉口在非常密集的二维线段分布中的性能比较_Python_Algorithm_Numpy_Computational Geometry - Fatal编程技术网

Python Bentley-Ottman与原始交叉积交叉口在非常密集的二维线段分布中的性能比较

Python Bentley-Ottman与原始交叉积交叉口在非常密集的二维线段分布中的性能比较,python,algorithm,numpy,computational-geometry,Python,Algorithm,Numpy,Computational Geometry,我试图解决的问题是找到跨越给定矩形的线段之间的所有交点。这些线以1E3-1E4的顺序随机生成,直到给定数量,所有端点都可以在矩形上找到。这基本上是在一个圆中生成随机和弦的矩形情况。在低密度的情况下,该系统 我主要感兴趣的输出是从直线和交点生成的图形,最好是以我可以从.csv文件馈送到matplotlib的形式 为了获得维度感,我首先尝试了一个简单的实现,使用Numpy检查每一对的相交。它的工作相对来说还行,但是,可能是因为我根本没有注意内存管理,它在大量的行中冻结了 几天来,我一直在尝试修改我极

我试图解决的问题是找到跨越给定矩形的线段之间的所有交点。这些线以1E3-1E4的顺序随机生成,直到给定数量,所有端点都可以在矩形上找到。这基本上是在一个圆中生成随机和弦的矩形情况。在低密度的情况下,该系统

我主要感兴趣的输出是从直线和交点生成的图形,最好是以我可以从.csv文件馈送到matplotlib的形式

为了获得维度感,我首先尝试了一个简单的实现,使用Numpy检查每一对的相交。它的工作相对来说还行,但是,可能是因为我根本没有注意内存管理,它在大量的行中冻结了

几天来,我一直在尝试修改我极其混乱的代码,以使用Bentley-Ottman行扫描算法,但我意识到我需要从头开始重写它才能工作,主要是因为我一直将列表与Numpy数组和显式索引混合在一起,而不是正确的数据结构


我的问题是,在这个非常密集、非常长的线段的特殊情况下,直线扫描算法是否一定比原始方法快,并且相差多少

经典的扫描线算法在空间中的对数n+k时间内运行,其中n是线段数,k是交点数。显然k在^2上。我想这可能是一种蛮力方法,你的幼稚方法占用了^2的时间和空间


如果知道在平面k中有稀疏分布的短线段,则扫描线可能会更快。从空间角度看,这取决于您对输出的处理。如果您存储了所有交点,那么您还需要^2空间中的扫掠线。

如果您编辑问题,您更有可能获得帮助。请阅读: