因此,我有一个通常形成某种圆形形状的点的列表,除了通常很少有来自圆的分支,它们基本上只是从圆的边界沿特定方向行进的线。我想创建一个函数,当给出此坐标/点列表时,该函数将查找在这组点中是否存在完整路径。
我考虑过要创建一个起点,并确定是否存在不重复点的路径(即(1,1)->(2,1)->(1,1)不允许),并且可以回到起点但是,如果起点在圆的分支中,则此方法将无效。
例如,坐标列表
[[0, 0], [0, 1], [1, 2], [2, 3], [3, 3], [3, 4], [4, 4], [3, 2], [3, 1], [3, 0], [2, -1], [1, -1], [0, -1]]
将形成完整的路径,而如果我取出[1, -1]
,则不会形成完整的路径。
答案 0 :(得分:0)
我采用的解决方案是将邻居列表转换为矩阵,将该矩阵转换为逻辑矩阵,然后假设您确定知道循环中的某个点,请对该点使用imfill函数并检查是否[1,1]坐标已转换。
mat = zeros(length, length);
mat(coordinates) = 1;
mat = logical(mat);
mat = imfill(mat, [length/2 length/2]);
if mat(1) == 1
not closed loop
else
closed loop
end
此代码的一些假设是,中间点位于循环内并且尚未填充,并且(1,1)坐标值将尚未填充,这是我可以使用正在处理的数据进行的假设。