这是我的数据集:
isects = [[3],[2,3],[1,3],[0,1,2],[]]
下面是我的数据集中的一些模式的可视化:
每个元素都是元素相交的索引列表。因此,元素@0只与元素3相交,而元素@3与元素0、1和2相交。
我想要创建这些元素之间的交叉列表。我想要更多的交叉口在列表的末尾。对于我的示例集,解决方案如下所示:
[[0,3], [1,2], [1,3], [2,3], [1,2,3]]
即,0& 3相交,1& 2,1& 3,2&3相交。最后,1&2&3都相交。
在下面的评论中指出,如果1&2&3实际上是多边形的话,它们可能并不都是相交的,但就我的目的而言,我假设列出的所有元素都可以并且将相互交叉。
仅使用isects
列表获取这些数据的最快方法是什么?
发布于 2017-01-13 16:47:40
据我所知,“论语”列表没有提供关于交集案例的全部信息--从它不可能知道三重交集。因此,需要用几何方法来得到交叉口发生的情况。
编辑如果你对真实的几何交点不感兴趣,那么你必须解决图的问题:你有邻接列表,你想得到。什么?似乎所有可能的具有K=2和更多的K大小的集群。
Wiki示例:
图有一个最大团,三角形{1,2,5}和另外四个最大团,对{2,3},{3,4},{4,5},和{4,6}。
算法是搜索所有类的相对有效的方法(复杂度为O(3^(n/3)。它通常用于寻找最大的集团,但可以找到所有大小的集团。
发布于 2017-01-13 17:31:34
我将创建一个带有isect数据的表交叉点。
0 1 2 3 4
0 - x
1 - x x
2 x - x
3 x x x -
4 -
每个'x‘代表一个交点。交叉口是集合,所以0,1和1,0是相同的。因此,我们得到了交叉口的唯一列表: 0,3,1,2,1,3,2,3。
如果你想考虑其他多边形重叠同一条多边形是一个共同的交点,那么看看'-'s被'x's所包围。在这种情况下,你只会有一个( 2x2),因此你会有1,2,3作为一个重叠的交点。然而,我同意这里的其他人的意见,isect中的数据并不保证有重叠。
https://stackoverflow.com/questions/41639337
复制相似问题