Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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_Math_Geometry_Computational Geometry - Fatal编程技术网

Algorithm 最大超体积单纯形算法

Algorithm 最大超体积单纯形算法,algorithm,math,geometry,computational-geometry,Algorithm,Math,Geometry,Computational Geometry,给定D维空间中的一组点。寻找最大可能D-单纯形的最佳算法是什么,其所有顶点都在集合中?代数上,这意味着我们必须找到D+1点的子集,这样D*D矩阵的行列式,由第一个D点和最后一个D+1-st点的坐标增量行构成,在集合上具有最大的可能值(绝对值) 我确信,所有D+1所需的点都是给定点集凸包的顶点,但我需要该算法,该算法没有使用任何凸包算法,因为单纯形需要它们,而单纯形反过来又需要启动多面体等算法 如果不可能在小于指数的时间内获得单纯形,那么给出近似求解问题的可调比率运行时间/近似精度的算法是什么?我

给定D维空间中的一组点。寻找最大可能D-单纯形的最佳算法是什么,其所有顶点都在集合中?代数上,这意味着我们必须找到D+1点的子集,这样D*D矩阵的行列式,由第一个D点和最后一个D+1-st点的坐标增量行构成,在集合上具有最大的可能值(绝对值)

我确信,所有D+1所需的点都是给定点集凸包的顶点,但我需要该算法,该算法没有使用任何凸包算法,因为单纯形需要它们,而单纯形反过来又需要启动多面体等算法


如果不可能在小于指数的时间内获得单纯形,那么给出近似求解问题的可调比率运行时间/近似精度的算法是什么?

我想不出精确的解决方案,但您可能可以通过迭代方法获得合理的近似值。注意,这里我假设
N
大于
D+1
;如果不是的话,我就误解了这个问题

首先,使用贪心算法构造初始单纯形;选择前两个顶点作为两个最远的点,下一个顶点在二维中最大化尺寸度量,下一个顶点在三维中最大化尺寸度量,依此类推。这在
N
D
中具有多项式复杂性
有了初始单纯形,就可以切换到迭代改进。例如,对于单纯形中的给定顶点,您可以通过不在单纯形中的点进行迭代,以测量尺寸度量值的变化,如果您交换这些点,则会导致尺寸度量值的变化。最后你把它换成一个,如果有的话,它会给你带来最大的提升。对单纯形中的每个顶点执行一次同样是
N
D
中的多项式
要在运行时成本和产生的单纯形有多大之间进行权衡,只需选择您愿意这样做的次数


现在这是一个相对粗糙的局部优化算法,因此不能保证它会找到最大单纯形。然而,人们发现,这些方法可以很好地近似解决旅行商问题等问题,尽管它们不是最优的,在大多数情况下,它们导致的距离不会比实际解的距离大太多。

Quickhull不需要找到最大单纯形,这是一种过分的方法(问题太难了,不能保证下一步会更快)

我建议您选择D+1独立方向,并在每个方向上取最远的点。这将在时间
O(N.D²)
上为您提供一个良好的启动单工。(之所以使用
,是因为存在
D+1
方向,并且对某个方向上的距离进行评估需要
D
操作。)


无论如何都要小心,它可能退化(几个顶点是相同的)。

我自己对解决方案的近似方法是取一个点,从中计算furhtest并拒绝第一个点(完全
N=1
pointselected),然后以这种方式选择其他
D-1
点,每个
N
点选择的无定向
N-1
维超体积()是最大的。最后,我发现定义单纯形的定向超体积()的绝对值是最大的。我心目中的总复杂性是关于
O(D*N*D^3)
1…D+1
单纯形的顶点,
N…N-D-1
剩余点,
D^3
D*M,M在{1,2,…,D}
矩阵乘法复杂性的上估计值)。该方法允许我们找到适当数量的线性独立点,或者找到子空间的维数以及子空间的非规范化和非正交基。对于大量的点和大的维数,所提出的算法的复杂度并不超过quickhull算法的复杂度


.

您不一致地使用了“D”。D是维度的数量还是维度空间本身?@Orient你能给我们提供一些例子吗,阅读这篇文章会让事情变得复杂complicated@Amir特别为你:给定一组(x_i,y_i),i在{1..N}点上。请提出一个算法,从这组点得到顶点的最大正方形三角形。算法必须适用于更高维度。你是在解决家庭作业问题还是真的想这样做?@tmyklebu别担心。我不是学生。是的,N比D大。而且,每个D+1点都是线性独立的(不丧失一般性)。与原始
qhull
中实现的相同。