我正在寻找一种算法来查找连续网格的所有(或最大数量)连续的面。面应按阵列排序,以使每个面前面都有一个链接到网格上的面。最终目标是拥有一个这样的阵列。从理论上讲有可能吗?如果不是,最大化数组中人脸数量的最佳方法是什么?
在this (rather naive) implementation中,选择点沿顺时针方向移动,覆盖所覆盖的最后一个面的可用边缘的末端顶点。但这很快就陷入了死胡同。我还尝试了边缘的两端或面的所有可用顶点,但是每个面迟早都会到达与未选择的面没有任何关系的面。
编辑:
这是一个三角网格,即每个面正好具有三个顶点。而且要求是要有一组最少的数组(最好是一个数组)覆盖网格的所有连接面。
答案 0 :(得分:2)
这是一个难题(平面图中的Hamiltonian path problem(特别是输入图的对偶)),但是使用局部搜索方法可能会获得良好的结果。由于Angluin和Valiant(https://doi.org/10.1016/0022-0000(79)90045-X)而有一个简单的问题,而Frieze(https://doi.org/10.1002/rsa.20542)则进行了更复杂的工作。理论上证明了这些算法仅适用于随机图,但是通常也可以采用没有对抗性的图。