Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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
Algorithm 关于线段相交报告的时间复杂性_Algorithm_Computational Geometry_Line Intersection - Fatal编程技术网

Algorithm 关于线段相交报告的时间复杂性

Algorithm 关于线段相交报告的时间复杂性,algorithm,computational-geometry,line-intersection,Algorithm,Computational Geometry,Line Intersection,根据,直线段交点报告问题(单色情况)的最佳算法为O(nlogn+k),但红蓝交点报告问题的最佳算法为O(n^4/3 log^O(1)n+k)。差异背后的明显原因如下所述:如果存在单色交叉点(在红-蓝情况下),则问题相当困难。这是因为即使没有双色交叉点,也可能存在许多单色交叉点 为什么我们不能使用最优线段相交算法来解决红蓝相交问题?这将使这个问题在O(nlogn+k)中可以解决,假设有n/2个蓝色段和n/2个红色段,每个蓝色段与另一个蓝色段相交,每个红色段与另一个红色段相交,但没有蓝色段和红色段彼

根据,直线段交点报告问题(单色情况)的最佳算法为O(nlogn+k),但红蓝交点报告问题的最佳算法为O(n^4/3 log^O(1)n+k)。差异背后的明显原因如下所述:如果存在单色交叉点(在红-蓝情况下),则问题相当困难。这是因为即使没有双色交叉点,也可能存在许多单色交叉点


为什么我们不能使用最优线段相交算法来解决红蓝相交问题?这将使这个问题在O(nlogn+k)

中可以解决,假设有n/2个蓝色段和n/2个红色段,每个蓝色段与另一个蓝色段相交,每个红色段与另一个红色段相交,但没有蓝色段和红色段彼此相交。单色算法的明显用途是生成所有交叉点并保留红-蓝交叉点,但此调用必须报告(n/2)(n/2-1)个交叉点,这使得调用算法即使在无需报告的情况下也要花费ω(n^2)时间。

假设有n/2个蓝色段和n/2个红色段,每个蓝色线段与其他蓝色线段相交,每个红色线段与其他红色线段相交,但没有蓝色和红色线段相互相交。单色算法的明显用途是生成所有交叉点并保留红蓝交叉点,但此调用必须报告(n/2)(n/2-1)个交叉点,这使得调用算法即使在无需报告的情况下也要花费ω(n^2)时间。

@David感谢您的回答,只是为了澄清,你的意思是说,虽然使用单色算法可以最佳地解决双色问题,但它会在报告(n/2)(n/2-1)交叉口时做不必要的工作?@justinwaugh是的–它可以最佳地执行一系列不应该做的工作。@David感谢您的回答,只是为了澄清,你的意思是说,虽然使用单色算法可以最佳地解决双色问题,但它会在报告(n/2)(n/2-1)交点时做不必要的工作?@justinwaugh是的–它可以最佳地执行一系列不应该做的工作。